Bonjour,
Avant tout je donne le contenu de mes fichiers (mon problème est expliqué à la fin).
le 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 <!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 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 #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 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
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'); } ?>
A la fin du HTML j'utilise require au lieu d'avoir fait un <form> action=..............
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); ?>
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
Partager