Erreur Code PHP (Parse error...)

Dede7 -  
Tiller Messages postés 783 Statut Membre -
Bonjour. C'est la première fois que je poste ici et je vais tenter de faire bonne impression.
Voilà. Ca fait 3 heures que je parcours le web, le réseau, l'internet, la toile, enfin, etc...

Et impossible de trouver une solution.

J'ai codé un gros formulaire qui permet l'accès à mon espace membre (Delfospace). Il requiert 5 éléments : Pseudo, entre 3 et 30 caractères, Email, Mot de passe, entre 3 et 30 caractères, et la confirmation respective de ces deux derniers.

Une fois validé, la page se recharge. C'est là qu'intervient le script PHP qui entoure mon formulaire.

Si les variables générés par le formulaire n'existent pas (dans la cas de la première visite), affichage d'un formulaire vierge.
Si les variables sont correctes (vérification par Regex), sauvegarde dans MySQL et affichage d'un message de remerciment.
Si les variables sont incorrectes (toujours vérifiés par Regex), affichage du même formulaire, complété âr défaut avec les précédentes entrés, et un signalement pour chaque champ (vérif. Regex pour les 5 entrées) de l'erreur ou de l'exactitude de l'entrée par l'affichage d'une image.
Dans tous les autres cas (Else), affichage d'un message d'erreur classique.

Voici mon code (que j'ai retapé de bout en bout) :

<?php
if (isset($_POST['pseudo']) && ($_POST['mail']) && ($_POST['verif_mail']) && ($_POST['password']) && ($_POST['verif_passord'])) // On vérifie si les variables du forumlaire existent. Dans le cas où les variables n'existent pas, on affiche un formulaire vierge
{
if (preg_match("#^[0-9a-zA-Z.-]{3,30}$#","$_POST['pseudo']")) && (preg_match("#^[az0-9-_-]+@[a-z0-9._-{2,}\,[a-z]{2,4}$#","$_POST['mail']")) && (preg_match("#^.[^<>]{3,30}$#","$_POST['password']")) && ("$_POST['verif_passord']" == "$_POST['password']") && ("$_POST['verif_mail']" == "$_POST['mail']") // Si les variables sont toutes correctes, on valide le formulaire, on complète la table MySQL, et on redirige le client
{
$pseudo=mysql_real_escape_string(htmlspecialchars$_POST['pseudo']));
$mail=mysql_real_escape_string(htmlspecialchars$_POST['mail']));
$password=mysql_real_escape_string(htmlspecialchars$_POST['password'])); // On sécurise les codes contre les codes Html et Java ainsi que les injections SQL
mysql_connect("localhost", "Base", "Pass"); // Logins masqués volontairement, sur et certains ils sont corrects.
mysql_select_db("Table"); //Pareil, masqué, mais correct

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO delfospace_membres VALUES('', '$pseudo', '$mail', '$password')"); // Ajout des donnés dans la table. Là aussi, la table comprend quatres champs, dont le premier est une ID auto incrimenité  

mysql_close();

<h2 id="p1" class="post-title"><a name="Formulaire_dinscription_&agrave;_Delfospace"></a><span style="text-decoration: underline;">Inscription &agrave; Delfospace</span></h2>
<br />
F&eacute;licitations ! Votre inscription &agrave; bien
&eacute;t&eacute; prise en compte. Vous pouvez maintenant vous
connecter &agrave; Delfospace !<br />// affichage du message de félicitation.

// [...] //Je pense que vous n'avez pas envie de lire ce qui suit (codes annonces Google, etc...)

}
else // Si une variable est fausse, on renvoie le même formulaire avec les erreurs signalés. On lui demande de corriger le lot. (au client)
{
?> 
<h2 id="p1" class="post-title"><a name="Formulaire_dinscription_&agrave;_Delfospace"></a><span style="text-decoration: underline;">Formulaire d'inscription &agrave; Delfospace</span></h2>





Une erreur à été décelé dans le formulaire. Il s'agit surement d'une erreur de frappe. Vérifiez votre formulaire avant de le renvoyer. Il se peut que vous avez entrés des caractères interdits, ou que vous avez oubliés un @ à l'email, par exemple.<br />

<br />

&nbsp;Pour cr&eacute;er votre compte, veuillez remplir ce formulaire. Ces informations seront modifiables depuis Delfospace. <br />

// [...] Le formulaire. Si vous voulez le voir, postez...

<?php
}
}
else
{
<?php
if(isset($_POST['pseudo']) && ($_POST['mail']) && ($_POST['verif_mail']) && ($_POST['password']) && ($_POST['verif_passord']) // On vérifie si les variables du forumlaire existent
{ // Dans le cas où les variables n'existent pas, on affiche un formulaire vierge
echo ?> 
<h2 id="p1" class="post-title"><a name="Formulaire_dinscription_&agrave;_Delfospace"></a><span style="text-decoration: underline;">Formulaire d'inscription &agrave; Delfospace</span></h2>





Ce formulaire va vous permettre de vous inscrire &agrave; l'espace
membre du site, Delfospace. Grace &agrave; ce compte, vous pourrez
acceder &agrave; des options avanc&eacute;s, &agrave; des contenus
exclusifs et bien plus encore ! <br />

// [...] // Formulaire vierge


Voilà bref.

Et maintenant l'erreur :

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/alternc/html/d/dede7/delfospace/inscription.php on line 92

(Lien ici)

16 réponses

  1. Tiller Messages postés 783 Statut Membre 211
     
    Je me suis permis de te refaire un formulaire, essaie de l'adapter a ton site =)

    <?php
    $connect = mysql_connect('localhost', 'root', '');
    mysql_select_db('maBase', $connect);
    
    if (isset($_POST['pseudo']))
    {
    	$req1 = preg_match("#^[0-9a-zA-Z.-]{3,30}$#", $_POST['pseudo']);
    	$req2 = preg_match("#^[a-zA-Z0-9_.-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$#", $_POST['email']);
    	$req3 = preg_match("#^.[^<>]{3,30}$#", $_POST['password']);
    	$req4 = ($_POST['email'] == $_POST['email2']);
    	$req5 = ($_POST['password'] == $_POST['password2']);
    	$req6 = isset($_POST['rules']);
    	
    	if (!$req1)
    		$error = 'Votre pseudo ne correspond pas aux critères demandés';
    	elseif (!$req2)
    		$error = 'Votre email ne correspond pas aux critères demandés';
    	elseif (!$req3)
    		$error = 'Votre mot de passe ne correspond pas aux critères demandés';
    	elseif (!$req4)
    		$error = 'Les deux adresse mails ne correspondent pas';
    	elseif (!$req5)
    		$error = 'Les deux mot de passes ne correspondent pas';
    	elseif (!$req6)
    		$error = 'Vous n\'avez pas accepté le réglement';
    	else
    	{
    		$sql = 'SELECT * FROM `delfospace_membres` WHERE `pseudo` = "'.$_POST['pseudo'].'"';
    		$req = mysql_query($sql);
    		if (mysql_num_rows($req) > 0)
    			$error = 'Le pseudo est deja utilisé';
    		else
    		{
    			$pseudo = $_POST['pseudo'];
    			$email = $_POST['email'];
    			$password = $_POST['password'];
    			
    			$sql = 'INSERT INTO `delfospace_membres` VALUES("", "'.$pseudo.'", "'.$email.'", "'.md5($password).'")';
    			mysql_query($sql);
    			
    			$error = 'Votre inscription a bien été effectué..';
    		}
    	}
    }
    
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<title>Document sans titre</title>
    </head>
    
    <body>
    	<div style="font-size: 26px; font-weight: bold">Formulaire d'inscription à Delfospace</div><br/><br/>
    	<div style="color: #FF0000; font-size: 16px"><?php echo (isset($error))?$error.'<br/><br/>':''; ?></div>
    	<div style="font-size: 13px">
    		Ce formulaire va vous permettre de vous inscrire à l'espace membre du site, Delfospace. Grace à ce compte, vous pourrez acceder à des options avancés, à des contenus exclusifs et bien plus encore !<br/><br/>
    		Pour créer votre compte, veuillez remplir ce formulaire. Ces informations seront modifiables depuis Delfospace. <br/><br/>
    	</div>
    	<span style="font-size: 9px">(Ces informations sont obligatoires)</span><br/><br/>
    	<div style="font-size: 13px">
    		<form action="test8.php" method="post">
    			Pseudo : Votre pseudo doit faire entre 3 et 30 caractères.<br/>
    			<input type="text" name="pseudo" value="<?php echo (isset($_POST['pseudo']))?$_POST['pseudo']:''; ?>" /><br/><br/>
    			
    			Email : Vous devez entrez une adresse email valide.<br/>
    			<input type="text" name="email" value="<?php echo (isset($_POST['email']))?$_POST['email']:''; ?>" /><br/><br/>
    			
    			Confirmation de l'email : Retapez ici votre email.<br/>
    			<input type="text" name="email2" value="<?php echo (isset($_POST['email2']))?$_POST['email2']:''; ?>" /><br/><br/>
    			
    			Mot de passe : Il doit faire entre 3 et 30 caractères.<br/>
    			<input type="password" name="password" value="<?php echo (isset($_POST['password']))?$_POST['password']:''; ?>" /><br/><br/>
    			
    			Confirmation du mot de passe : Retapez votre mot de passe.<br/>
    			<input type="password" name="password2" value="<?php echo (isset($_POST['password2']))?$_POST['password2']:''; ?>" /><br/><br/>
    			
    			<input type="checkbox" name="rules" value="1" /> J'ai lu et accepte <a href="http://www.dede7.weboserv.org/reglement.php?adress=/delfospace/insciption.php" target="_blank">les termes du réglement de Delfows.</a>
    			<br/><br/>
    			<input type="submit" value="Vérifiez le formulaire" />
    		</form>
    	</div>
    </body>
    </html>
    1
  2. Tiller Messages postés 783 Statut Membre 211
     
    Sa serait bien tu pouvais mettre le code d'origine, car avec les [..] on a pas la moindre idée d'où se situe la ligne 92 =)
    0
  3. ShadowRevenge Messages postés 156 Statut Membre 13
     
    Tu peux nous dire quelle est la ligne 92 stp? ^^
    Parce que j'ai pas envie de compter :p
    0
  4. donuts08 Messages postés 523 Statut Membre 39
     
    bonjour,

    c'est où la ligne 92?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Tiller Messages postés 783 Statut Membre 211
     
    Et surtout:
    == "$_POST['password']"

    A bannir!!

    Ne prend SURTOUT PAS l'habitude de mettre tes variables dans ces foutus quotes.
    == $_POST['password']


    Et:
    mysql_query("INSERT INTO delfospace_membres VALUES('', '".$pseudo."', '".$mail."', '".$password."')");


    Bref c'est du détail, il faut la ligne 92 =)
    0
  7. Dede7
     
    Olley ! petit bug, je pensais ne pas déja avoir posté ! Désolé.

    Voilà la suite et fin de mon message !

    Et maintenant l'erreur :

    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/alternc/html/d/dede7/delfospace/inscription.php on line 92

    (Lien ici : http://www.dede7.weboserv.org/delfospace/inscription.php)

    A savoir que la ligne en question est la toute première que j'ai tapé en Code dans ce message. Avant le petit remake du code, cette ligne était la 185. Le message d'erreur me parlait aussi de la 185. Je ne vois pas ce qui cloche. Il n'y a rien d'intéressant au dessus et en dessous. Mais si jamais ça vous intéresse, je peux vous livrer le code en entier !

    J'espère que vous trouverez solution à mon problème, merci d'avence !

    Et encore bravo ! Jamais vu des personnes si rapides ^^

    PS : Tiller, merci de tes conseils, je change ca tout de suite ;-)
    0
  8. Tiller Messages postés 783 Statut Membre 211
     
    Si la première ligne est la 92, il nous faut celle d'avant. 5-10 avant
    0
  9. Alain_42 Messages postés 5413 Statut Membre 904
     
    salut,

    tes <?php et ?> ne sont pas aux bons endroits, il en manque

    <?php
    if (isset($_POST['pseudo']) && ($_POST['mail']) && ($_POST['verif_mail']) && ($_POST['password']) && ($_POST['verif_passord'])) // On vérifie si les variables du forumlaire existent. Dans le cas où les variables n'existent pas, on affiche un formulaire vierge
    {
    if (preg_match("#^[0-9a-zA-Z.-]{3,30}$#","$_POST['pseudo']")) && (preg_match("#^[az0-9-_-]+@[a-z0-9._-{2,}\,[a-z]{2,4}$#","$_POST['mail']")) && (preg_match("#^.[^<>]{3,30}$#","$_POST['password']")) && ("$_POST['verif_passord']" == "$_POST['password']") && ("$_POST['verif_mail']" == "$_POST['mail']") // Si les variables sont toutes correctes, on valide le formulaire, on complète la table MySQL, et on redirige le client
    {
    $pseudo=mysql_real_escape_string(htmlspecialchars$_POST['pseudo']));
    $mail=mysql_real_escape_string(htmlspecialchars$_POST['mail']));
    $password=mysql_real_escape_string(htmlspecialchars$_POST['password'])); // On sécurise les codes contre les codes Html et Java ainsi que les injections SQL
    mysql_connect("localhost", "Base", "Pass"); // Logins masqués volontairement, sur et certains ils sont corrects.
    mysql_select_db("Table"); //Pareil, masqué, mais correct
    
    // On ajoute une entrée avec mysql_query
    mysql_query("INSERT INTO delfospace_membres VALUES('', '$pseudo', '$mail', '$password')"); // Ajout des donnés dans la table. Là aussi, la table comprend quatres champs, dont le premier est une ID auto incrimenité  
    
    mysql_close();
    ?>
    <h2 id="p1" class="post-title"><a name="Formulaire_dinscription_&agrave;_Delfospace"></a><span style="text-decoration: underline;">Inscription &agrave; Delfospace</span></h2>
    <br />
    F&eacute;licitations ! Votre inscription &agrave; bien
    &eacute;t&eacute; prise en compte. Vous pouvez maintenant vous
    connecter &agrave; Delfospace !<br />// affichage du message de félicitation.
    
    // [...] //Je pense que vous n'avez pas envie de lire ce qui suit (codes annonces Google, etc...)
    <?php
    }
    else // Si une variable est fausse, on renvoie le même formulaire avec les erreurs signalés. On lui demande de corriger le lot. (au client)
    {
    ?> 
    <h2 id="p1" class="post-title"><a name="Formulaire_dinscription_&agrave;_Delfospace"></a><span style="text-decoration: underline;">Formulaire d'inscription &agrave; Delfospace</span></h2>
    
    
    
    
    
    Une erreur à été décelé dans le formulaire. Il s'agit surement d'une erreur de frappe. Vérifiez votre formulaire avant de le renvoyer. Il se peut que vous avez entrés des caractères interdits, ou que vous avez oubliés un @ à l'email, par exemple.<br />
    
    <br />
    
    &nbsp;Pour cr&eacute;er votre compte, veuillez remplir ce formulaire. Ces informations seront modifiables depuis Delfospace. <br />
    
    // [...] Le formulaire. Si vous voulez le voir, postez...
    
    <?php
    }
    }
    else
    {
    
    // On vérifie si les variables du forumlaire existent
    if(isset($_POST['pseudo']) && ($_POST['mail']) && ($_POST['verif_mail']) && ($_POST['password']) && ($_POST['verif_passord']) {
     // Dans le cas où les variables n'existent pas, on affiche un formulaire vierge
    
    ?>
    <h2 id="p1" class="post-title"><a name="Formulaire_dinscription_&agrave;_Delfospace"></a><span style="text-decoration: underline;">Formulaire d'inscription &agrave; Delfospace</span></h2>
    
    
    
    
    
    Ce formulaire va vous permettre de vous inscrire &agrave; l'espace
    membre du site, Delfospace. Grace &agrave; ce compte, vous pourrez
    acceder &agrave; des options avanc&eacute;s, &agrave; des contenus
    exclusifs et bien plus encore ! <br />
    
    // [...] // Formulaire vierge
    0
  10. donuts08 Messages postés 523 Statut Membre 39
     
    ça va paraître bête mais c'est pas un problème avec ton commentaire? il est sur une seule ligne j'espère...

    sinon essaies avec des isset partout plutôt (ex: isset($_POST['truc']) ) mais normalement cette ligne est bonne
    0
  11. Tiller Messages postés 783 Statut Membre 211
     
    Soit Alain42 a raison soit tu les as viré sans faire attention en écourtant ton code, si le probleme n'est pas là:

    Envoi Tout le code telle qu'elle, et avec exactement le même nombre de ligne que online
    0
  12. Dede7
     
    Un peu fatigué, je rame un peu...

    Bon, perso, je crois que ca servirait à rien d'indiquer ce qu'il y a au dessus, mais si ca peu vous aider...

    A savoir que je code PHP depuis 5 jours.

    <body>
    
    
    
    
    
    <div id="page">
    <div id="page">
    <div id="top">
    <h1><a href="http://www.dede7.weboserv.org/delfos">Delfos
    Web Site -
    Delfows</a></h1>
    
    
    
    
    
    </div>
    
    
    
    
    
    <div id="middle">
    <div id="main">
    <div id="content">
    <div class="post">
    <?php
    if (isset($_POST['pseudo']) && ($_POST['mail']) && ($_POST['verif_mail']) && ($_POST['password']) && ($_POST['verif_passord'])) // On vérifie si les variables du forumlaire existent. Dans le cas où les variables n'existent pas, on affiche un formulaire vierge
    {
    if (preg_match("#^[0-9a-zA-Z.-]{3,30}$#","$_POST['pseudo']")) && (preg_match("#^[az0-9-_-]+@[a-z0-9._-{2,}\,[a-z]{2,4}$#","$_POST['mail']")) && (preg_match("#^.[^<>]{3,30}$#","$_POST['password']")) && ("$_POST['verif_passord']" == "$_POST['password']") && ("$_POST['verif_mail']" == "$_POST['mail']") // Si les variables sont toutes correctes, on valide le formulaire, on complète la table MySQL, et on redirige le client
    {
    $pseudo=mysql_real_escape_string(htmlspecialchars$_POST['pseudo']));
    $mail=mysql_real_escape_string(htmlspecialchars$_POST['mail']));
    $password=mysql_real_escape_string(htmlspecialchars$_POST['password']));
    mysql_connect("localhost", "Base", "Pass");
    mysql_select_db("Table");
    
    // On ajoute une entrée avec mysql_query
    mysql_query("INSERT INTO delfospace_membres VALUES('', '$pseudo', '$mail', '$password')");
    
    mysql_close();
    ?>
    <h2 id="p1" class="post-title"><a name="Formulaire_dinscription_&agrave;_Delfospace"></a><span style="text-decoration: underline;">Inscription &agrave; Delfospace</span></h2>
    <br />
    F&eacute;licitations ! Votre inscription &agrave; bien
    &eacute;t&eacute; prise en compte. Vous pouvez maintenant vous
    connecter &agrave; Delfospace !<br />
    <br />
    <div style="text-align: center;"><a href="/connect.php"><small>> Connection <</small></a></div>
    </div>
    
    
    
    <div style="text-align: justify;">
    <div style="text-align: right;"><br />
    
    
    
    
    <br />
    <script type="text/javascript"> <!--
       google_ad_client = "pub-7703474819142135";
       google_ad_slot = "9850021026";
       google_ad_width = 468;
       google_ad_height = 60;
       google_ad_format = "468x60_as";
       google_ad_type = "text_image";
       //--> </script>
       
    <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
       </script></div>
       <?php
    }
    else // Si une variable est fausse, on renvoie le même formulaire avec les erreurs signalés. On lui demande de corriger le lot.
    {
    ?> 


    La première ligne est la 85. La dernière est là 138. Elle débouche sur un code html faisant partie du PHP.

    Merci pour votre aide rapide

    Fichier TXT du code entier en cours de préparation
    0
  13. Tiller Messages postés 783 Statut Membre 211
     
    Bon attend, sa me donne mal au crane tous ces bout un peu partout

    Poste l'intégralité sur le même post, Merci

    Avec la 92ème ligne de ton poste qui correspondrait a la 92ème ligne sur ta page
    0
  14. Dede7
     
    J'en étais sur...

    http://www.dede7.weboserv.org/inscription_php_dede7.txt
    0
  15. Tiller Messages postés 783 Statut Membre 211
     
    $pseudo=mysql_real_escape_string(htmlspecialchars$_POST['pseudo']));
    $mail=mysql_real_escape_string(htmlspecialchars$_POST['mail']));
    $password=mysql_real_escape_string(htmlspecialchars$_POST['password']));


    Il manque 3 parenthèses

    mysql_connect("localhost", "Base", "Pass");
    mysql_select_db("Table");
    
    // On ajoute une entrée avec mysql_query
    mysql_query("INSERT INTO delfospace_membres VALUES('', '$pseudo', '$mail', '$password')");
    
    mysql_close();
    ?>
    


    Comme a dit Alain42, il te manque ?> a la fin de cette partie la

      <input type="text" name=mail value="$_POST['mail']" /> <?php if (preg_match("#^[az0-9-_-]+@[a-z0-9._-{2,}\,[a-z]{2,4}$#","$_POST['mail']")


    Il manque un parenthèse, et chaque "$_POST['...']" avec les quotes dans un preg_replace te donne une erreur

    <img scr=https://i54.servimg.com/u/f54/11/34/80/05/agt_ac11.png>

    Pas une erreur php mais syntaxique HTML, on met src="http://.."

    Excuse moi de dire sa, mais ton code pourri. Il y a des erreurs a chaque ligne de php pratiquement...
    Et puis, 1047 lignes pour un formulaire...

    Désolé mais j'ai pas le courage de toute les faire pour corriger, un conseil, refait le depuis le début, et apprend a codé propre!
    0