Bonjour,

Avant tout je donne le contenu de mes fichiers (mon problème est expliqué à la fin).

le HTML :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<!DOCTYPE html>
<html>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="style-inscription.css">
<head>
    <title>inscription</title>
</head>
 <body>
  <div id="titre">
   Bonjour, vous etes sur la page d'inscription.
  </div>
  <form method="post">
   <div id="droite">
    <br />
    <br />  
    <label for="s-pseudo">Pseudo :</label><input pattern=".{6,}" required title="6 caractères minimum" id="s-pseudo" name="s-pseudo" 
    type="text" value="<?php 
    if (isset($_POST['s-pseudo']))
    {
     echo $_POST['s-pseudo'];  
    }
    else
    {
     if (isset($_COOKIE['connexion-pseudo']))
     {
      echo $_COOKIE['connexion-pseudo'];
     }
    }
    ?>" autofocus /><br />
    <br />
    <label for="s-mdp">Mot de passe :</label><input pattern=".{8,}" required title="8 caractères minimum" id="s-mdp" name="s-mdp" 
    type="password" value="<?php if(isset($_POST['s-mdp'])) { echo $_POST['s-mdp']; } ?>" /><br />
    <br />
    <label for="smdp-bis">Retapez votre mot de passe :</label><input pattern=".{8,}" required title="8 caractères minimum" id="s-mdp-bis" 
    name="s-mdp-bis" type="password" value="<?php if(isset($_POST['s-mdp-bis'])) { echo $_POST['s-mdp-bis']; } ?>" /><br />
    <br />
    <br />        
    <label for="s-email">Email :</label><input id="s-email" name="s-email" type="email" 
    value="<?php if(isset($_POST['s-email'])) { echo $_POST['s-email']; } ?>" /><br />
    <br />
    <img id="img-captcha" src="image-captcha.php" onclick="this.src='image.php?' + Math.random();" alt="captcha" style="cursor:pointer;"><br />
    <br />
    <label for="captcha">Code de securité :</label><input id="captcha" name="captcha" type="text" /><br />
    <br />
    <br />
   </div>
   <div id="valid">
    <input id="btn-valid" name="btn-valid" type="submit" value="Valider" />
   </div>
  </form>
 
<?php  
 //Verif et inscription
 if(!empty($_POST['s-pseudo']))
 {
   require('inscription-post.php');
 }
?>
</body>
</html>
Le CSS :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 
#titre {
    height: 50px;
    line-height: 50px;
    font-family: Arial;
    font-size: xx-large;
    vertical-align: middle;
    text-align: center;
    background-color: #00FF00;
    font-weight: bold;
    font-style: italic;
 border-style: double;
 border-color: red;
 border-width: 5px;
 border-radius: 15px;
}
#droite {
    font-family: Arial;
    font-size: 16px; 
    font-weight: bold; 
    width: 42%;
    height: 400px;
    margin: 0 auto;
}
#img-captcha { 
 margin-left: 190px;
}
 
#valid {
    width: 70%;
    text-align: center;
    margin: 0 auto;
}
body{
    width: 70%;
    height: 400px;
}
label {
 display: block;
 width: 150px;
 float: left;
}
input[type=submit] {
 margin-left: 30px;
 width: 100px; 
 font: bold 20px arial;
 color: red;
    background: #00FF00; 
 border: 1px solid black;
    cursor:pointer;
 border-radius: 10px; 
}
input {
    font-family: Arial;
    font-size: 16px;
 background-color: white;
}
.mess {
    font-family: Arial;
    font-size: 22px; 
 color: red;
    text-align: center; 
}
Le fichier pour contrôle et inscription :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
 
<?php
$flagverif = true;
 //ctrl captcha
 session_start();
 if(isset($_POST['captcha']))
 {
  if($_POST['captcha']!=$_SESSION['code'])
  {
   echo '<p class="mess"><strong>'.'Code de securité incorrect !'.'</strong></p>';
   $flagverif = false;    
  }
 }
 //verif si déjà existant   
 if (isset($_POST['s-pseudo']))
 {   
  // Connexion à la base de données
  try
  {
   $bdd = new PDO('mysql:host=localhost;dbname=connexion;charset=utf8', 'root', '');
  }
  catch(Exception $e)
  {
    die('Erreur : '.$e->getMessage());
  }        
  $req = $bdd->prepare('SELECT * FROM membres WHERE pseudo = ? collate utf8_bin');
  $req->execute(array($_POST['s-pseudo']));
  $donnees = $req->fetch(); 
  if ($donnees)
  {
   echo '<p class="mess">'.'Ce '.'<strong>'.'pseudo'.'</strong>'.' est déjà pris, veuillez en changer !'.'</p>';
   $flagverif = false; 
  } 
 }
 //verif du pseudo
 if (isset($_POST['s-pseudo']))
 {
  if(preg_match('#[^a-zA-Z0-9]#',$_POST['s-pseudo']))
  {
   echo '<p class="mess">'.'Le '.'<strong>'.'pseudo'.'</strong>'.' doit être composé que de majuscules, de mininuscules et de chiffres !'.'</p>';
   $flagverif = false;    
  }
 } 
 //verif mot de passe
  setcookie ('connexion-mdp', $mdp, time() + 365*24*3600, null, null, false, true); 
 {    
  if (preg_match('#[^a-zA-Z0-9]#', $_POST['s-mdp']))
  {
   echo '<p class="mess">'.'Le '.'<strong>'.'mot de passe'.'</strong>'.' doit être composé que de majuscules, de mininuscules et de chiffres !'.'</p>';
   $flagverif = false;
  } 
 }
 //verif de l'égalité du mot de passe et sa confirmation
 if ((isset($_POST['s-mdp'])) and (isset($_POST['s-mdp-bis'])))    
 {    
  if ($_POST['s-mdp'] <> $_POST['s-mdp-bis'])
  {
   echo '<p class="mess">'.'Le '.'<strong>'.'mot de passe et sa confirmation'.'</strong>'.' ne sont pas identiques !'.'</p>';
   $flagverif = false;
  } 
 } 
 //verif format email
 if (isset($_POST['s-email']))
 {
  $_POST['s-email'] = htmlspecialchars($_POST['s-email']);
 
  if (!preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#', $_POST['s-email']))     
  {
   echo '<p class="mess">'.'L\'adresse mail '.'<strong>'. $_POST['s-email'] .'</strong>'.' n\'a pas le bon format !'.'</p>'; 
   $flagverif = false;    
  }
 }  
 if ($flagverif == true)
 {
  $mdp = sha1($_POST['s-mdp']);
  // écriture du cookie
  setcookie ('connexion-pseudo', $_POST['s-pseudo'], time() + 365*24*3600, null, null, false, true);  
  //Enregistrement du nouvel inscrit
  $req = $bdd->prepare('INSERT INTO membres (pseudo, pass, email, date_inscription) VALUES(:pseudo , :pass, :email, now())');
  $req->execute(array(
   ':pseudo' => $_POST['s-pseudo'],
   ':pass' => $mdp,
   ':email' => $_POST['s-email']
   ));
  header('Location: inscription.php');
 }
 
?>
Le fichier image-captcha
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
<?php
session_start();
header('Content-Type: image/png');
$largeur=150;//largeur de l'image
$hauteur=40;//hauteur de l'image
$lignes=10;//nombre de lignes multicolore qui seront affichées avec le code
$caracteres="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789";//type de caractère du code qui sera affiché dans l'image
$image = imagecreatetruecolor($largeur, $hauteur);
imagefilledrectangle($image, 0, 0, $largeur, $hauteur, imagecolorallocate($image, 0xC0, 0xC0, 0xC0));
function hexargb($hex)
{
    return array("r"=>hexdec(substr($hex,0,2)),"g"=>hexdec(substr($hex,2,2)),"b"=>hexdec(substr($hex,4,2)));
}
for($i=0;$i<=$lignes;$i++){
    $rgb=hexargb(substr(str_shuffle("ABCDEF0123456789"),0,6));
    imageline($image,rand(1,$largeur-25),rand(1,$hauteur),rand(1,$largeur+25),rand(1,$hauteur),
	imagecolorallocate($image, $rgb['r'], $rgb['g'], $rgb['b']));
}
$code1=substr(str_shuffle($caracteres),0,6);
$_SESSION['code']=$code1;
$code="";
for($i=0;$i<=strlen($code1);$i++){
    $code .=substr($code1,$i,1)." ";
}
imagestring($image, 5, 10, 12, $code, imagecolorallocate($image, 0, 0, 0));
imagepng($image);
imagedestroy($image);
?>
A la fin du HTML j'utilise require au lieu d'avoir fait un <form> action=..............

Pourquoi, si je fait action="inscription-post.php, les commandes "echo" effacent l'écran, et le texte est affiché de façon brute en haut à gauche, donc très moche.

Je suis pas une flèche, aussi, si vous pouvez m'aider à corriger ce problème, je serai bien content de comprendre mes erreurs et faire mieux à l'avenir.

Merci à tous les participants de ce blog.

A+

Bruno