Parse error

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Parse error

Re: Parse error

par Ryle » 15 juil. 2011, 11:15

Le message d'erreur t'indique que tu as une erreur de syntaxe qui apparait à partir de la ligne 33. En effet, d'après le code qui précède la ligne 33, PHP ne s'attendait pas à trouver un ELSE à cet endroit...

C'est donc que tu as un problème dans la structure de ton code. Et en effet, si tu regardes l'indentation de ton code tu verras rapidement que tu as deux "else" pour le "if (!$erreur)", le deuxième étant à la ligne 33 ...

En fait ce qui est bien c'est que php te dit tout dans ses messages d'erreur, suffit juste de bien les comprendre :)

Re: Parse error

par poliboolold » 15 juil. 2011, 10:14

oK donc j'ai fait comme ca :

Code : Tout sélectionner

<?php try { $bdd = new PDO('mysql:host=*****************;dbname=polib250634', 'polib250634','******', $pdo_options); $Variables = array('pseudo', 'message'); //Si t'a plus de variable à tester par la suite, c'est pratique <img src="./images/smilies/icon_smile.gif" alt=":)" title="Smile" /> $erreur = 0; foreach ($Variables as $item) { //Boucle qui verifie chaque variables qui sont dans l'array du dessus, si une ou plusieurs manque ou sont vide $erreur vaudra 1 if (isset($_POST[$item])) { if (isempty($_POST[$item])) $erreur = 1; //Pas de isempty sans isset, car une variable peut etre non définie ou définie et vide et si elle n'est pas définie et que tu fait un isempty direc } else $erreur = 1; } if (!$erreur) { $requete = $bdd->prepare('SELECT bann, ID FROM minichat WHERE pseudo = ?'); //La faille n'est pas bouché. $requete->execute(array($_POST['pseudo'])); $reponse = $requete->fetch(); if ($reponse['bann'] == 0) { setcookie('pseudo', $_POST['pseudo'], time() + 365*24*3600, null, null, false, true); $requete->closeCursor(); $req = $bdd->prepare('INSERT INTO minichat (pseudo, message) VALUES(?, ?)'); $req->execute(array($_POST['pseudo'], $_POST['message'])); // Redirection du visiteur vers la page du minichat header('Location: mini_chat.php'); } } else { echo 'message'; } else { echo 'Une ou plusieurs variable ne sont pas correctement définie'; } } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } ?>
J'ai un nouveau parse error:Parse error: syntax error, unexpected T_ELSE in /var/www/poliboolold.fr/htdocs/minichat_post.php on line 33

Re: Parse error

par Berzemus » 15 juil. 2011, 10:02

Puisqu'apparemment c'est difficile, voici le code ci-dessus indenté:
$bdd = new PDO('mysql:host=**************;dbname=polib250634', 'polib250634', '*********', $pdo_options);
$Variables = array('pseudo', 'message'); //Si t'a plus de variable à tester par la suite, c'est pratique :)
$erreur = 0;
foreach ($Variables as $item) { //Boucle qui verifie chaque variables qui sont dans l'array du dessus, si une ou plusieurs manque ou sont vide $erreur vaudra 1
    if (isset($_POST[$item])) {                                                                                                                                                                     
        if (isempty($_POST[$item])) $erreur = 1; //Pas de isempty sans isset, car une variable peut etre non définie ou définie et vide et si elle n'est pas définie et que tu fait un isempty direc
    }
    else $erreur = 1;
}  
if (!$erreur) {
    $requete = $bdd->prepare('SELECT bann, ID FROM minichat WHERE pseudo = ?'); //La faille n'est pas bouché.
    $requete->execute(array($_POST['pseudo']));
    $reponse = $requete->fetch();
    if ($reponse['bann'] == 0)
    {      
        setcookie('pseudo', $_POST['pseudo'], time() + 365*24*3600, null, null, false, true);
        $requete->closeCursor();
        $req = $bdd->prepare('INSERT INTO minichat (pseudo, message) VALUES(?, ?)');
        $req->execute(array($_POST['pseudo'], $_POST['message']));

        // Redirection du visiteur vers la page du minichat 
        header('Location: mini_chat.php');
    }                             
}                                   
else {                                
    echo 'message';                     

}                                         
}                                         
else {                                    
    echo 'Une ou plusieurs variable ne sont pas correctement définie';
}                                         
catch(Exception $e)                       
{                                         
    die('Erreur : '.$e->getMessage());    
}                                         
?>   
Déjà, je vois des accolades en trop, et l'expression catch() fait partie de la construction try{} catch(), aka. lagestion des exceptions. Un catch() sans son try{}, en php il ne me semble pas que ça fonctionne (d'autres langages le permettent, mais ce n'est pas le sujet).

On dirait un code copié-collé et recomposé de façon incomplète.

Parse error

par poliboolold » 15 juil. 2011, 09:42

Bonjour
j'ai un parse error
et je ne vois pas ou est la faute

Parse error: syntax error, unexpected T_CATCH in /var/www/poliboolold.fr/htdocs/minichat_post.php on line 34

Code : Tout sélectionner

[php<?php $bdd = new PDO('mysql:host=**************;dbname=polib250634', 'polib250634', '*********', $pdo_options); $Variables = array('pseudo', 'message'); //Si t'a plus de variable à tester par la suite, c'est pratique :) $erreur = 0; foreach ($Variables as $item) { //Boucle qui verifie chaque variables qui sont dans l'array du dessus, si une ou plusieurs manque ou sont vide $erreur vaudra 1 if (isset($_POST[$item])) { if (isempty($_POST[$item])) $erreur = 1; //Pas de isempty sans isset, car une variable peut etre non définie ou définie et vide et si elle n'est pas définie et que tu fait un isempty direct, t'aura une belle erreur. } else $erreur = 1; } if (!$erreur) { $requete = $bdd->prepare('SELECT bann, ID FROM minichat WHERE pseudo = ?'); //La faille n'est pas bouché. $requete->execute(array($_POST['pseudo'])); $reponse = $requete->fetch(); if ($reponse['bann'] == 0) { setcookie('pseudo', $_POST['pseudo'], time() + 365*24*3600, null, null, false, true); $requete->closeCursor(); $req = $bdd->prepare('INSERT INTO minichat (pseudo, message) VALUES(?, ?)'); $req->execute(array($_POST['pseudo'], $_POST['message'])); // Redirection du visiteur vers la page du minichat header('Location: mini_chat.php'); } } else { echo 'message'; } } else { echo 'Une ou plusieurs variable ne sont pas correctement définie'; } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } ?> ][/php]
Merci d'avance :wink: