Page 1 sur 1

formulaire

Posté : 10 mars 2013, 19:27
par msgbrr
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

Re: formulaire

Posté : 10 mars 2013, 19:57
par yann18
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.

Re: formulaire

Posté : 10 mars 2013, 20:13
par yann18
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'] .

Re: formulaire

Posté : 10 mars 2013, 22:33
par msgbrr
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 !

Re: formulaire

Posté : 11 mars 2013, 14:37
par Ryle
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é"

Re: formulaire

Posté : 11 mars 2013, 19:02
par msgbrr/
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

Re: formulaire

Posté : 11 mars 2013, 21:45
par Ryle
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
       }
   }

Re: formulaire

Posté : 11 mars 2013, 23:53
par BGMaxime
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.

Re: formulaire

Posté : 12 mars 2013, 00:43
par msgbrr
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

Re: formulaire

Posté : 12 mars 2013, 01:08
par moogli
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>
@+

Re: formulaire

Posté : 12 mars 2013, 01:12
par msgbrr
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]

Re: formulaire

Posté : 12 mars 2013, 01:14
par moogli
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 :)


@+

Re: formulaire

Posté : 12 mars 2013, 01:23
par msgbrr
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 ?

Re: formulaire

Posté : 12 mars 2013, 22:14
par msgrr
Pouvez-vous dans ce cas me dire ce que signifie cette erreur afin que je puisse la corriger ?

Merci