IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Formulaire d'inscription ne fonctionne pas :/ [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Avril 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 9
    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 : 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
    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 : 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
    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 !

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    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)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre actif Avatar de 2h15Crew
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 79
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  4. #4
    Membre habitué
    Inscrit en
    Avril 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 9
    Par défaut
    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 !

  5. #5
    Membre habitué
    Inscrit en
    Avril 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 9
    Par défaut
    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 ?

  6. #6
    Membre habitué
    Inscrit en
    Avril 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 9
    Par défaut
    Tout fonctionne !!!!
    Merci beaucoup à vous deux !

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

    Merci beaucoup !!!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lancer un formulaire via javascript : ne fonctionne pas
    Par beegees dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/02/2009, 07h45
  2. [MySQL] function inscription ne fonctionne pas
    Par douceur dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 20/12/2008, 20h39
  3. [A-00] Formulaire de connexion ne fonctionne pas.
    Par Guillaume 78 dans le forum VBA Access
    Réponses: 21
    Dernier message: 29/10/2008, 15h58
  4. formulaire php qui ne fonctionne pas
    Par kate59 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/04/2008, 13h40
  5. formulaire de connexion ne fonctionne pas
    Par masterix59 dans le forum Langage
    Réponses: 2
    Dernier message: 20/09/2007, 00h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo