Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2011, 18h18   #1
Invité de passage
 
Inscription : avril 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 9
Points : 1
Points : 1
Par défaut Formulaire d'inscription ne fonctionne pas :/

Bonjour à tous,

J'ai un soucis avec mon code PHP, si jamais quelqu'un peut jeter un coup d'oeil, ca m'aiderait beaucoup!

Arrivé au formulaire, alors que je fais volontairement des erreurs pour tester mon code, il ne se passe rien (je me retrouve sur la page register.php mais sans aucune redirection ou quoi).

Mes deux fichiers :

Signup pour le formulaire et écrire à l’utilisateur les différentes erreurs qu'il a fait:


Code :
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<body>
    <form action="register_c.php" method="post">
        <p>
        <label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" /> 
		<?php 
		if ((isset($_GET['ins'])))
		{
			if ($_GET['ins'] == 2)
			{
			if ($pseudo_wrote==false)
			{
			echo "Vous n'avez pas saisi de pseudo !";
			}
			else if ($pseudo_valid==false)
			{
			echo "Le pseudo que vous avez saisi n'est pas valide, il doit être composé de lettres et/ou de chiffres (min 3).";
			}
			else if ($pseudo_not_exist==false)
			{
			echo "Le pseudo que vous avez saisi est déjà pris par un autre joueur.";
			}
			}
		}
		?>
 
		<br />
 
 
	<label for="message">Mot de passe</label> :  <input type="password" name="password_1" />
 
			<?php 
		if ((isset($_GET['ins'])))
		{
			if ($_GET['ins'] == 2)
			{
			if ($pass1_exist==false)
			{
			echo "Vous n'avez pas saisi de mot de passe!";
			}
			else if ($same_password==false)
			{
			echo "Les mots de passe ne sont pas identiques.";
			}
			else if ($pass1_valid==false)
			{
			echo "Le mot de passe n'est pas valide, il doit être composé de lettres et/ou de chiffres (min 4).";
			}
			}
		}
			?>
 
		<br />
 
 
	<label for="message">Confirmez le mot de passe</label> :  <input type="password" name="password_2" />
 
			<?php 
		if ((isset($_GET['ins']))) 
		{
			if ($_GET['ins'] == 2)
			{
			if ($pass2_exist==false)
			{
			echo "Vous n'avez pas confirmé le mot de passe!";
			}
			else if ($same_password==false)
			{
			echo "Les mots de passe ne sont pas identiques.";
			}
			}
		}
			?>
 
		<br />
 
 
	<label for="message">Adresse e-mail</label> :  <input type="text" name="mail" />
 
			<?php 
		if ((isset($_GET['ins']))) 
		{
			if ($_GET['ins'] == 2)
			{
 
			if ($mail_wrote==false)
			{
			echo "Vous n'avez pas saisi d'adresse e-mail!";
			}
			else if ($mail_valid==false)
			{
			echo "L'adresse e-mail est incorrecte.";
			}
			}
		}
		?>
 
		<br />
 
        <input type="submit" name=submit" value="Envoyer" />
	</p>
    </form>
</body>


Le contrôleur qui gère les erreurs et redirige, crée l'account etc :


Code :
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
89
90
91
92
<?php
//include_once('Modele/register/register_m.php');
 
if ((isset($_POST['pseudo'])) AND (isset($_POST['password_1'])) AND (isset($_POST['password_2'])) AND (isset($_POST['mail'])))
{
 
	$pseudo= htmlspecialchars($_POST['pseudo']);
	$_POST['password_1']= (htmlspecialchars($_POST['password_1']));
	$_POST['password_2']= (htmlspecialchars($_POST['password_2']));
	$_POST['mail'] = htmlspecialchars($_POST['mail']);
 
	try
	{
	$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
	$bdd = new PDO('mysql:host=localhost;dbname=hordcraft', 'root', '', $pdo_options);
	$nb_pseudo = $bdd->query('SELECT COUNT(*) as nb_pseudo FROM account WHERE pseudo=\'$pseudo\'');
	if (($nb_pseudo == NULL) AND (preg_match("#^[a-zA-Z]+[a-zA-Z0-9 ]{0,}$#", $_POST['pseudo'])) AND (preg_match("#^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['mail'])) AND (preg_match("#^[a-zA-Z0-9]{4,}$#", $_POST['password_1'])) AND ($_POST['password_1'] == $_POST['password_2']))
			{
 
	//INSCRIPTION REUSSIE_faire entrer le nouveau compte dans la base de donnée
	//INSCRIPTION REUSSIE
	//INSCRIPTION REUSSIE
	$_POST['password_1']= sha1($_POST['password_1']);
	header('Location: register.php');
			}
 
		else if ((isset($_POST['submit'])) AND ($_POST['submit'] == 'Envoyer'))
			{
 
		if (!(isset($_POST['pseudo'])))
			{
				$pseudo_wrote = false;
			}
 
		if (!(preg_match("#^[a-zA-Z]+[a-zA-Z0-9 ]{0,}$#", $_POST['pseudo'])));
			{
				$pseudo_valid = false;
			}
 
		if ($nb_pseudo != 0)
			{
				$pseudo_not_exist=false;
			}
 
		if (!(isset($_POST['mail'])))
			{
				$mail_wrote=false;
			}
 
		if (!(preg_match("#^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['mail'])))
			{
				$mail_valid=false;
			}
 
		if (!(isset($_POST['password_1']))) 
			{
				$pass1_exist=false;
			}
 
		if (!(isset($_POST['password_2'])))
			{
				$pass2_exist=false;;
			}
 
		if(!(preg_match("#^[a-zA-Z0-9]{4,}$#", $_POST['password_1'])))
			{
				$pass1_valid=false;
			}
 
		if ($_POST['password_1'] != $_POST['password_2'])
			{
				$same_password=false;
			}
 
				?> 
				<script language="Javascript">
				document.location.replace("C:\wamp\www\vue\signup.php?ins=2");
				</script>;
			 <?php
 
				}
				$nb_pseudo->closeCursor();
				}	
				catch(Exception $e)
					{
						die('Erreur : '.$e->getMessage());
					} 
	}
 
 
			//if (!isset($_POST['pseudo']) //essayer NOT(isset) qui peut etre plus rapide.
	?>


Merci d'avance si quelqu'un a une idée !
Ayosha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 18h47   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
Si je comprends bien, ton premier script c'est ton script signup.php et le second c'est la cible du formulaire register_c.php ?
Dans ce cas, c'est normal que ça donne l'impression de ne rien faire : les variables que tu veux tester ($pseudo_wrote, $pass1_exist...) sont affectées dans register_c.php que fait ensuite une redirection avec signup.php. Une redirection, c'est le chargement d'un nouveau script, et comme les variables ne sont pas conservées d'un script à l'autre...
Je te conseille de stocker tes variables en session (en oubliant pas de vider la session à un moment ou un autre)

Au passage, pour ta redirection, il vaudrait mieux utiliser un header('Location: signup.php?ins=2'); plutôt qu'une redirection en JS Comment faire une redirection ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 18h49   #3
Membre régulier
 
Avatar de 2h15Crew
 
Homme Valentin
Étudiant
Inscription : mai 2011
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Valentin
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 79
Points : 97
Points : 97
Code :
1
2
 
        <input type="submit" name=submit" value="Envoyer" />

Salut,

l'attribut name de ta balise input n'est pas correct, il est juste fermé. As-tu fait une erreur de recopie de ton code ?
2h15Crew est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 20h19   #4
Invité de passage
 
Inscription : avril 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 9
Points : 1
Points : 1
C'est pas possible.......... C'était le !!! MERCI (pour voir ce genre de détail ^^)
Et maintenant, il me fait effectivement une erreur sur les variables indéfinies (puisqu'elles sont définies dans le deuxième fichier!)

Je vais essayer quelque chose avec les sessions et je reviens vous dire !
Ayosha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 20h36   #5
Invité de passage
 
Inscription : avril 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 9
Points : 1
Points : 1
Alors j'ai juste un petit problème. Je fais des test avec isset(variable) pour savoir si la variable existe... mais en fait, j'aimerai tester si elle est vide ou pas (alors qu'elle existe!), est ce que tester est correct ?
Ayosha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 21h06   #6
Invité de passage
 
Inscription : avril 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 9
Points : 1
Points : 1
Tout fonctionne !!!!
Merci beaucoup à vous deux !

Premier bug : le deuxième soucis des variables : j'ai fais avec des sessions !!

Merci beaucoup !!!!!
Ayosha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h12.


 
 
 
 
Partenaires

Hébergement Web