[Résolu] Erreur unexpected T_IF

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 : [Résolu] Erreur unexpected T_IF

Re: Erreur unexpected T_IF

par Clément » 02 juil. 2011, 17:49

En effet tout tes conseils rendent mon code plus logique et plus claire. Tu avais raison l'erreur venait de la ligne
$donnees = $reponse->fetch()
J'ai oublié le point virgule :roll: Merci beaucoup pour ta réponse.

J'ai maintenant une autre erreur :

Code : Tout sélectionner

Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-space WHERE pseudo='$pseudo' OR mail='$mail'' at line 1
D'après ce que je comprend il y a un problème avec ma table "member-space" et le problème viendrais de la fin "-space" ?

Édit : J'ai résolu ce problème en renommant ma table

Re: Erreur unexpected T_IF

par moogli » 02 juil. 2011, 17:21

Salut,

Le message indique que le if n'est pas a sa place.
Il faut donc voir les lignes précédentes il y a peut etre un point virgule d'oublié ou une parenthese ferlante etc

Je m'étonne du if au milieu des elseif (avec le preg_match) ca ne serait la le probleme ?

Si oui met un elseif ?

Pour info if($_POST) est inutile et incohérent car il s'agit d'un tableau et non d'un booléen et ce tableau existe toujours meme vide, donc globalement go test est toujours vrai ;)
Au mieux tu aurais utiliser un empty ;)
Tu ne devrais pas utiliser les valeurs issues de formulaire sans etre certain quelle existe dans le tableau post (isset et ou empty son tes meilleurs amis pour cela ;) )

Ta requête sql ne fonctionnera jamais car tu confond les ' et les ".
Les variables n'en sont pas interprétée dans une chaine délimitée avec des ', c'est possible dans une délimitée par des "
Utilise la concatenation pour creer ta chaine

Le count * que tu essai d'utiliser dans le if pour savoir si le pseudo et mdp sont n'existe pas ! Tu a une methode pour avoir le nombre de tuple retourné par la requete. D'ailleurs seule l'unicité du pseudo compte le mot de passe on s'en fou ;)

En fait tout le travail que tu fait avant l'insertion devrait être fait avant le select (c'est logique de verifier si le pseudo n'est pas vide avant de l'utiliser dans une requete sql ;) )
Tu peux faire se travail directement sur les indexs de $_POST ;)

@+

[Résolu] Erreur unexpected T_IF

par Clément » 02 juil. 2011, 16:42

Bonjour, j'ai un script d'inscription pour un espace que je suis en train de faire et j'ai l'erreur suivante :

Code : Tout sélectionner

Parse error: syntax error, unexpected T_IF in /home/******/*******/inscription.php on line 28
Je sais donc qu'il y a une erreur dans mon if, mais j'ai beau le lire et relire, je ne trouve pas. Je me suis donc dit que le problème venais peut etre de la connexion à ma table SQL car je me suis mis à utiliser PDO.
Voici mon (long) code (ligne 28 indiqué en commentaire).
<?php
session_start();
require("config/mysql.php"); //(Ce fichier contient les variables de connexion et la fonction securite)

if (isset($_SESSION['pseudo'])) { header("Location:compte.php"); } //Si on est connecté, redirection vers le compte
?>
<?php
if($_POST)
{
$ok = true; //Cette variable deviendra fausse au moindre problème. Sinon, l'inscription sera OK
//Sécurisation des variables
$pseudo = securite($_POST['pseudo'], 0, 1, 0);
$mail = securite($_POST['mail'], 0, 1, 0);
$pass1 = securite($_POST['pass1'], 0, 1, 0);
$pass2 = securite($_POST['pass2'], 0, 1, 0);
$nom = securite($_POST['nom'], 0, 1, 0);
$prenom = securite($_POST['prenom'], 0, 1, 0);
$pays = securite($_POST['pays'], 0, 1, 0);
$website = securite($_POST['website'], 0, 1, 0);

try
{
	$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=$server;dbname=$bdd', '$login', '$pass', $pdo_options);							//erreur de connexion avec PDO ?
    $reponse = $bdd->query('SELECT * FROM member-space WHERE pseudo=\'$pseudo\' OR mail=\'$mail\'');
	$donnees = $reponse->fetch()
	//Série de vérifications
    if($donnees['COUNT(*)'] >= 1) {$rep_pseudo = "Ce pseudo/cette adresse est déjà utilisé(e)"; $rep_pseudo = $rep_mail; $ok = false;}	//ligne 28
	elseif(empty($pseudo)) {$rep_pseudo = "Ce champ est vide"; $ok = false;}
	if(!preg_match("#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#", $mail)) {$rep_mail = "L'adresse mail n'est pas valide"; $ok = false;}
	elseif(empty($mail)) {$rep_mail = "Ce champ est vide"; $ok = false;}
	if(empty($pass1)) {$rep_pass1 = "Ce champ est vide"; $ok = false;}
	if(empty($pass2)) {$rep_pass2 = "Ce champ est vide"; $ok = false;}
	elseif($pass 1 != $pass2) {$rep_pseudo = "Les mots de passe ne sont pas identiques"; $ok = false;}
	//Si il n'y a pas d'erreur
	if($ok = true)
	{
		$date = date("d/m/Y à H:i"); //Date d'inscription
		$activation = md5(rand()); //Clef d'activation
		$req = $bdd->prepare('INSERT INTO jeux_video(pseudo, mail, pass, activation, nom, prenom, pays, website, date) VALUES(:pseudo, :mail, :pass, :activation, :nom, :prenom, :pays, :website, :date)'); //Enregistrement du membre
		$req->execute(array(
			'pseudo' => $pseudo,
			'mail' => $mail,
			'pass' => $pass1,
			'activation' => $activation,
			'nom' => $nom,
			'prenom' => $prenom,
			'pays' => $pays,
			'website' => $website,
			'date' => $date
			));
		$contenu = '<html><body>Bonjour ' . $pseudo . '. Vous êtes bien inscrit sur le site ' .$name_site. '. Cependant vous devez confirmer votre inscription en cliquant sur le lien ci-dessus<br /><a href="' .$url_site. '/activation.php?pseudo=' . $pseudo . '&activation=' . $activation . '">Cliquez ici pour activer votre compte</a><br /><br />Rappel de vos identifiant, gardez-les précieusement :<br />Pseudo :' . $pseudo .'.<br />Mot de passe:' . $mdp .'.<br /><a href="' .$url_site. '">' .$url_site. '</a>'; 
		$headers  = 'MIME-Version: 1.0' . "\r\n";
		$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
		$headers = 'From: <$mail_envoi>' . "\r\n" .
		'Reply-To: <$mail_envoi>' . "\r\n";
		mail($mail, $subject, $contenu, $headers); //Envoi du mail
	}
    $reponse->closeCursor(); //Termine le traitement de la requête
}
catch(Exception $e)
	{
		die('Erreur : '.$e->getMessage()); //En cas d'erreur précédemment, on affiche un message et on arrête tout
	}
}
?>
Code du formulaire
...
...
J'ai mis la ligne 28 en commentaire pour voir les autres erreurs et tout mes if, elseif, else ont la même erreur.
Voilà, merci d'avance :wink: