Salut

Je ne comprend pas ce qui se passe avec mon code :/ pourtant il me semble juste.


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
 
if( isset($_POST['valide']) ) 
{
	if(!empty($_POST['pseudo'])and !empty($_POST['pass'])and !empty($_POST['email']) )
	{
		$ok=0; // 0=Tous les champs sont correctement remplis.
		$info='';
		$pseudo=htmlspecialchars($_POST['pseudo']);
		$pass=htmlspecialchars($_POST['pass']);
		$passhash=password_hash($pass, PASSWORD_DEFAULT);
		$email=htmlspecialchars($_POST['email']);
 
               // tests champs 1 donne $ok=1 si le champ est mauvais.
               // tests champs 2 donne $ok=2 si le champ est mauvais.
               // tests champs 3 donne $ok=3 si le champ est mauvais.
               // tests champs 4 donne $ok=4 si le champ est mauvais.
          }
          else
          {
	       $info="Erreur : Tous les champs doivent êtres corrects !";
          }
 
	if ($ok==0)
	{
               // Enregistrement dans la base
               $info="C'est enregistré !";
        }
 
        // ici j'affiche $info.
        echo $info;
}
Quand j'oublie un champ ou que j'en mets aucun, il donne l'erreur indiquée ci-dessus.
Quand je remplis bien tous les champs, il valide sans rien dire, mais rien ne s'enregistre dans la base, car $ok vaut plus que 0 apparemment.
On remarque que le 4eme test de champ, n'est pas inclu dans les tests des Empty, mais c'est parce que c'est un champ radio et je sais pas comment tester son empty mais c'est pas important puisque je le teste ensuite non ? (dans les 4 tests de champs)

EDIT : Désolé, ça venait de ce que j'avais mis plus que 4 champs dans l'insertion BDD, avec (?,?, etc...)


EDIT : SALUT !!!
Mon probleme est résolu mais il me cause un autre soucis :
Fatal error: Call to a member function insert() on a non-object in C:\wamp\www\beserious\index.php on line 156
C'est cette ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$DB->insert("INSERT INTO identité(activation,genre,pseudo,pass,mail,jour,heure) VALUES(?,?,?,?,?,?,?)",array($activation,$genre,$pseudo,$passhash,$email,$jour,$heure));
Ma question est : ça veut dire quoi cette erreur systeme PHP ?

MON CODE EN ENTIER :
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
<?php
 
if( isset($_POST['valide']) ) 
{
	include ('connection.php');
 
	if(!empty($_POST['genre'])and !empty($_POST['pseudo'])and !empty($_POST['pass'])and !empty($_POST['email']) )
	{
		$ok=0; // 0=Tous les champs sont correctement remplis.
		$info='';
		$pseudo=htmlspecialchars($_POST['pseudo']);
		$pass=htmlspecialchars($_POST['pass']);
		$passhash=password_hash($pass, PASSWORD_DEFAULT);
		$email=htmlspecialchars($_POST['email']);
 
		// ici on vérifie si le genre a été choisi.
		if(!isset($_POST['genre']))
		{
			$info=$info.'<span class="erreur">GENRE</span> : "un homme" ou "une femme" !<br/>';
			$ok=1;
		}else $genre=$_POST['genre'];
 
		// ici on teste si le pseudo a été saisi et s'il a plus de 7 caractères.
		if(($pseudo=='') or (strlen($pseudo)<8))
		{
			$info=$info.'<span class="erreur">PSEUDO</span> : Il doit avoir au moins  8 caractères !<br/>';
			$ok=2;
		}
 
		// ici on teste si le mot de passe est inférieur à 8 caractères.
		if(mb_strlen($pass)<8)
		{
			$info=$info.'<span class="erreur">MOT DE PASSE</span> : Il doit avoir au moins  8 caractères !<br/>';
			$ok=3;
		}
 
		// ici on teste si l'email saisi est bien une adresse email.
		if(filter_var($email, FILTER_VALIDATE_EMAIL)==false)
		{
			$info=$info.'<span class="erreur">EMAIL</span> : IL n\'est pas valide !<br/>';
			$ok=4;
		}
 
		// ici on teste si tout est OK.
		if($ok==0)
		{
 
			$jour=date("j-m-Y");
 
			$heure=date("H:i:s");
			// ici on crée un code INT aléatoire pour activation du compte.
			$activation=mt_rand(1000000, 100000000);
 
			// ici Insertion dans la base, du membre et de son code d'activation.
			$DB->insert("INSERT INTO identité(activation,genre,pseudo,pass,mail,jour,heure) VALUES(?,?,?,?,?,?,?)",array($activation,$genre,$pseudo,$passhash,$email,$jour,$heure));
			$info="<span class='gras'>$pseudo</span> :<p/>inscrit !<p/>
			Un code pour activer votre compte va être envoyé par mail<p/>";
 
 
		}
	}
	else
	{
		$info="Erreur : Tous les champs doivent êtres corrects !";
	}
 
	$variable="<html><head><meta charset=\"UTF-8\"><title>Inscription</title><link rel=\"stylesheet\" href=\"erreurs.css\" />
				<script type=\"text/javascript\" src=\"js/erreurs.js\"></script></head>
				<div class=\"panneau\" id=\"panneau\">
				<div id=\"contenu\">$info<br/>
				<input type=\"button\" id=\"fermer\" value=\"fermer\" onclick=\"ferme()\"><br/></div></div>
				<script language=\"javascript\">
				centre_pannel();
				</script>
				</html>";
 
	echo htmlspecialchars_decode($variable);
 
}
 
 $pdo = null;
 
 
?>