formulaire

msgbrr
Invité n'ayant pas de compte PHPfrance

10 mars 2013, 19:27

Bonjour,
possédant un site j'ai voulue créer un accès membre et voici le formulaire d'inscription.
     
<?php
   
    if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') { 
       
       if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
if (isset($_POST['E-mail']) && !empty($_POST['E-mail']))) { 
          
         
          if ($_POST['pass'] != $_POST['pass_confirm']) { 
             $erreur = 'Les 2 mots de passe sont différents.'; 
          } 
          else { 
             $base = mysql_connect ('localhost', 'msgbrr', 'sandrine'); 
             mysql_select_db ('my_msgbrr', $base); 
             
            
             $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"'; 
             $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
             $data = mysql_fetch_array($req); 
     
             if ($data[0] == 0) { 
                $sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['pass'])).'")'; 
                mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
     
                session_start(); 
                $_SESSION['login'] = $_POST['login']; 
                header('Location: membre.php'); 
                exit(); 
             } 
             else { 
                $erreur = 'Un membre poss&#233de d&#233ja ce login.'; 
             } 
          } 
       } 
       else { 
          $erreur = 'Au moins un des champs est vide.'; 
       }  
    }  
    ?>
    <html>
    <head>
    <title>Inscription</title>
    </head>
     
    <body>
    Inscription � l'espace membre :<br />
    <form action="inscription.php" method="post">
    Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
    Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
    Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
    E-mail : <input type="e-mail" name"E-mail" value="<?php if (isset($_POST['e-mail'])) echo htmlentities( trim($_POST['e-mail'])); ?>"><br />
    <input type="submit" name="inscription" value="Inscription">
    </form>
    <?php
    if (isset($erreur)) echo '<br />',$erreur;  
    ?>
    </body>
    </html> 
Lorsque je l'ai testé, j'ai créer un membre, et valider.
un message d'erreur s'affiche
"Parse error: syntax error, unexpected ')' in /****/****/inscription.php on line 6"
je cite la ligne 6 :
if (isset($_POST['E-mail']) && !empty($_POST['E-mail']))) {
OU est la faute ?

merci

Mammouth du PHP | 571 Messages

10 mars 2013, 19:57

bonjour,
"Parse error: syntax error, unexpected ')' in /****/****/inscription.php on line 6"
ça veut veux dire que tu as une erreur de syntaxe provoquée par une fin de ligne inattendue en particulier une parenthèse ")" de trop.

moi à ta place j'aurai jamais utiliser des éditeurs de codes comme vi ,notepad, emacs... il faut vite passer aux IDE comme netbeans, eclipse, intellij...car ces derniers détectent automatiquement toute erreur de syntaxe au moment de l'écriture du code.

Mammouth du PHP | 571 Messages

10 mars 2013, 20:13

if (isset($_POST['E-mail']) && !empty($_POST['E-mail'])) {
la fonction empty est largement suffisante dans ton cas, inutile de lui adjoindre isset car si $_POST['E-mail'] n'est ni vide ni nulle (valable pour empty) suffit à elle seule de prouver l'existence(cas de isset) de $_POST['E-mail'] .

msgbrr
Invité n'ayant pas de compte PHPfrance

10 mars 2013, 22:33

Merci l'erreur a disparu cependant une nouvelle erreur apparaît :

Parse error: syntax error, unexpected $end in /****/******/inscription.php on line 59

J'ai cherché la ligne 59 mais la ligne 58 est la dernière ligne.

Soit la ligne 59 est un ligne blanche

Que dois-je faire ou est la faute

Merci de votre aider

Ps: le code est dans le 1er message poster !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 mars 2013, 14:37

Ta première erreur était un problème d'équilibre de tes parenthèses : tu en fermes plus que tu n'en as ouvert :)
if (isset($_POST['E-mail']) && !empty($_POST['E-mail']))) {
   (     (                )          (                )))
Mais effectivement, empty() est redondant avec isSet() puisque si la variable est vide, nulle ou n'est pas définie, empty() renverra TRUE.


Pour la seconde, un problème sur la dernière ligne du fichier est généralement également synonyme d'un problème de parenthèses ou d'accolades non équilibrées (en général tu as ouvert une accolade "quelque part" que tu n'as pas refermé... la difficulté étant de trouver laquelle ;))

En indentant bien ton fichier, ça saute généralement assez vite aux yeux.. en l'occurrence, ta ligne où tu testes le champ E-mail n'est pas indenté correctement, c'est probablement le bloc d'instruction de ce if() qui n'est pas "fermé"
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

msgbrr/
Invité n'ayant pas de compte PHPfrance

11 mars 2013, 19:02

Desole mais je ne vois pas d'acolade ou de parenthese pas fermé si c'est cette ligne que tu parle
E-mail : <input type="e-mail" name"E-mail" value="<?php if (isset($_POST['e-mail'])) echo htmlentities( trim($_POST['e-mail'])); ?>"><br />
Pouvez vous dans ce cas me citer la faute ou ecrire un correction ?

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 mars 2013, 21:45

Nonon, bien avant au début de ton code :
    if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
       if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
if (isset($_POST['E-mail']) && !empty($_POST['E-mail']))) { 
Il faudrait vérifier, mais je pense que c'est l'accolade de cette dernière ligne qui n'est pas équilibrée.

Au niveau indentation tu devrais avoir ceci : (nota j'ai viré les isSet inutiles pour plus de clarté)
   if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') { 
       if (!empty($_POST['login']) && !empty($_POST['pass'])  && !empty($_POST['pass_confirm']) ) {
            if (!empty($_POST['E-mail']) ) { 
                 ....
            } // je pense que c'est celle là qu'il te manque qq part
       }
   }
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 20 Messages

11 mars 2013, 23:53

Hello,

j'utilise l'éditeur libre Notepadd++ qui permet de controler la validité de ton code "on the fly", au fur à mesure que tu le tapes.

Il fait aussi automatiquement les indentations.

Certains paragraphes ne sont pas comme j'ai l'habitude de les indenter, mais c'est vraiment un plaisir à débugger. Le gain de temps est énorme.

Je ne connais pas les autres éditeurs, à part Notepad de base que j'ai longtemps utilisé :-)

Donc je conseille largement Notepad++, malgré l'aspect non lucratif de cette pub :-)

Bon code.
Quelques pages sur le php et mysql => http://blueguitarmaxime.blogspot.fr/

Eléphanteau du PHP | 37 Messages

12 mars 2013, 00:43

Bonjour,

J'utilise déjà notepad ++
Merci comme même !


Par contre sans vouloir êtres chiant ou sans vouloir te contredire, dans un message antérieur Yann18 m'a dit de ne pas utiliser notepad mais un IDE

Autrement je vous remercie de m'avoir aider et j'aimerais savoir si les .... sont la exprès donnes dans la dernière correction. :?: ( juste avant le com "je pense que c'est celle ci qu'il te manquait" un truc comme ca)

Merc

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

12 mars 2013, 01:08

Autrement je vous remercie de m'avoir aider et j'aimerais savoir si les .... sont la exprès donnes dans la dernière correction. :?: ( juste avant le com "je pense que c'est celle ci qu'il te manquait" un truc comme ca)
Les ... indique qu'il y a du code à rajouter, en l’occurrence le reste de la validation de ton formulaire.


Le problème viens du fait qu'il y a une parenthèse fermante en trop sur la ligne indiquée par Ryle, ainsi que l'accolade fermante correspondant au 1er if.


pour ce qui est de l'éditeur, effectivement un IDE est plus intéressant, de par l'auto complétion ou l'indication des correspondances des parenthèses, mais aussi pas l'indication directement dans le code de l'erreur, ou le formatage du code (beaucoup plus simple à lire).

L’éditeur de zend, zend studio, est bien foutu, basé sur éclipse qui est suffisant. D'autre existe comme netbeans et des tonnes que je ne connais pas.

notepad++ est bien pratique mais pas l'aide apportée par un IDE n'est pas négligeable.

ton code mis en forme (ctrl +f avec eclipse).
<?php
 
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
	 
	if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
		if (isset($_POST['E-mail']) && !empty($_POST['E-mail'])) {

			 
			if ($_POST['pass'] != $_POST['pass_confirm']) {
				$erreur = 'Les 2 mots de passe sont différents.';
			}
			else {
				$base = mysql_connect ('localhost', 'msgbrr', 'sandrine');
				mysql_select_db ('my_msgbrr', $base);
				 

				$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"';
				$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
				$data = mysql_fetch_array($req);
				 
				if ($data[0] == 0) {
					$sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['pass'])).'")';
					mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
					 
					session_start();
					$_SESSION['login'] = $_POST['login'];
					header('Location: membre.php');
					exit();
				}
				else {
					$erreur = 'Un membre poss&#233de d&#233ja ce login.';
				}
			}
		}
		else {
			$erreur = 'Au moins un des champs est vide.';
		}
	}
}
	?>
<html>
<head>
<title>Inscription</title>
</head>

<body>
	Inscription ? l'espace membre :
	<br />
	<form action="inscription.php" method="post">
		Login : <input type="text" name="login"
			value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
		Mot de passe : <input type="password" name="pass"
			value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
		Confirmation du mot de passe : <input type="password"
			name="pass_confirm"
			value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
		E-mail : <input type="e-mail"
			name"E-mail" value="<?php if (isset($_POST['e-mail'])) echo htmlentities( trim($_POST['e-mail'])); ?>"><br />
		<input type="submit" name="inscription" value="Inscription">
	</form>
	<?php
	if (isset($erreur)) echo '<br />',$erreur;
	?>
</body>
</html>
@+
Modifié en dernier par moogli le 12 mars 2013, 01:12, modifié 1 fois.
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 37 Messages

12 mars 2013, 01:12

Merci a la correction du modo l'erreur a disparue mais une nouvelle survient

Parse error: syntax error, unexpected '}' in /******/*********/inscription.php on line 38

J'ai donc enlever une acolade mais maitenant cette erreur apparaît :


Parse error: syntax error, unexpected T_ELSE in /*****/******/inscription.php on line 38

La ligne 38 c'est juste une accolade.

Ou est l'erreur et comment la corriger ?

Merci

PS : voici mon script actuel
     <?php
   
    
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') 
{ if (!empty($_POST['login']) && !empty($_POST['pass']) && !empty($_POST['pass_confirm']) ) { 
if (!empty($_POST['E-mail']) ) { 
} // je pense que c'est celle là qu'il te manque qq part 
} 
}

          
         
          if ($_POST['pass'] != $_POST['pass_confirm']) { 
             $erreur = 'Les 2 mots de passe sont diff�rents.'; 
          } 
          else { 
             $base = mysql_connect ('localhost', 'msgbrr', 'sandrine'); 
             mysql_select_db ('my_msgbrr', $base); 
             
            
             $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"'; 
             $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
             $data = mysql_fetch_array($req); 
     
             if ($data[0] == 0) { 
                $sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['pass'])).'")'; 
                mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
     
                session_start(); 
                $_SESSION['login'] = $_POST['login']; 
                header('Location: membre.php'); 
                exit(); 
             } 
             else { 
                $erreur = 'Un membre poss&#233de d&#233ja ce login.'; 
          } 
    } 
       else { 
          $erreur = 'Au moins un des champs est vide.'; 
       }  
    }  
    ?>
    <html>
    <head>
    <title>Inscription</title>
    </head>
     
    <body>
    Inscription � l'espace membre :<br />
    <form action="inscription.php" method="post">
    Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
    Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
    Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
    E-mail : <input type="e-mail" name"E-mail" value="<?php if (isset($_POST['e-mail'])) echo htmlentities( trim($_POST['e-mail'])); ?>"><br />
    <input type="submit" name="inscription" value="Inscription">
    </form>
    <?php
    if (isset($erreur)) echo '<br />',$erreur;  
    ?>
    </body>
    </html> 
[list][/list]
Modifié en dernier par msgbrr le 12 mars 2013, 01:14, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

12 mars 2013, 01:14

j'ai éditer mon message avec la correction


il est plus qu'important que tu regarde prenne le temps de vérifier les correspondances des parenthèses accolade.
C'est la première source d'erreurs, ensuite les ; manquant :)


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 37 Messages

12 mars 2013, 01:23

Parse error: syntax error, unexpected T_ELSE in /membri/msgbrr/inscription.php on line 38

Voici la nouvelle erreur qui apparait cette fois uniquement quand j'appuie sur valider. ?

Que dois-je faire ? Comment la corriger ?

Au passage j'aimerais remercier toute la communauté de phpfrance et plus particulièrement ceux qui m'ont aidé sur ce topic.

Pouvez vous m'aider s'il vous plaît ?

msgrr
Invité n'ayant pas de compte PHPfrance

12 mars 2013, 22:14

Pouvez-vous dans ce cas me dire ce que signifie cette erreur afin que je puisse la corriger ?

Merci