IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Parse error: syntax error, unexpected T_OBJECT_OPERATOR


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut Parse error: syntax error, unexpected T_OBJECT_OPERATOR
    Bonsoir,

    Je ne dois pas avoir les yeux en face des trous et je suis paumé ... Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
    error_reporting(E_ALL);
    if ( ! empty($_POST['login']) && ( ! empty($_POST['password']))){
    	$user = $bdd->prepare("SELECT * FROM profil WHERE email = :login AND password = :mdp ");
    	$user->execute(array(
    		':login' => $_POST['login'],
    		':mdp'   => $_POST['password']
    	));
    	if ($user->fetch()){
    		$_SESSION['connecte'] = true;
    		$_SESSION['email']  = $_POST['login'];
    		$id = $user['id'];
    		$membre = bdd->prepare("SELECT * FROM abonne WHERE ((id_profil = ".$id.") AND (fin_abonnement > CURDATE()))");
    				$membre->execute();
     
    				if($membre->fetch())
    				{
    					$_SESSION['membre'] = true;
    				}				
     
    				header('Location: profil.php');
    				exit;
    			}
    	else{
    		echo "Cheat !";
    	}
    }
    ?>
    Sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $membre = bdd->prepare("SELECT * FROM abonne WHERE ((id_profil = ".$id.") AND (fin_abonnement > CURDATE()))");
    J'ai l'erreur suivante : Parse error: syntax error, unexpected T_OBJECT_OPERATOR in C:\wamp\www\xxx\verifLogin.php on line 47

    Parenthèses, points-virgules etc vérifiés, je ne vois pas ...

    Un oeil de lynx pour m'aider ?

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il manque le dollar : $bdd->
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut
    Yes ! Bien vu Sabotage

    Plus que mon $id = $user['id']; qui ne veut pas fonctionner

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    tu n'utilises pas correctement "fetch" pour récupérer le résultat de la requête

    regarde la page suivante pour savoir ce qu'il est possible de faire :
    http://php.net/pdostatement.fetch

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut
    Marrant Mathieu, on a le même prénom

    Bref, je ne pige pas mon erreur. Autant je suis senior en .Net autant je débute en PHP ...

    Normalement ma donnée devrait être réceptionnée, non ?

  6. #6
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    essaye ce qui est marqué dans la page que je t'ai indiquée

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Pour préciser un peu l'indication de mathieu, ton code actuel stocke la requête dans $user et non pas son résultat.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut
    Sorry réunion toute la matinée.

    Donc si je comprends bien, je dois mettre une boucle while ?

    J'ai un peu de mal, je ne comprends pas pourquoi en fait ...

  9. #9
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Utilise une variable pour la "requête" et une pour le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $userStmt = $bdd->prepare("SELECT * FROM profil WHERE email = :login AND password = :mdp ");
    $userStmt->execute(array(
    	':login' => $_POST['login'],
    	':mdp'   => $_POST['password']	));
    if ($user = $userStmt->fetch()){
    Note : le while n'est pas indispensable si le seul résultat qui t'intéresse est le premier retourné (ou si tu es sûr d'avoir au maximum un résultat )
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut
    Merci Célira, je n'ai plus l'erreur.

    Par contre, j'ai l'impression que ma variable de session "membre" n'est pas correcte car il ne fait pas ce que je veux sur le reste du site :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php 
    error_reporting(E_ALL);
    if ( ! empty($_POST['login']) && ( ! empty($_POST['password']))){
    	$userStmt = $bdd->prepare("SELECT * FROM profil WHERE email = :login AND password = :mdp ");
    	$userStmt->execute(array(
    		':login' => $_POST['login'],
    		':mdp'   => $_POST['password']	));
    	if ($user = $userStmt->fetch()){
    	{
    		$_SESSION['connecte'] = true;
    		$_SESSION['email']  = $_POST['login'];
    		$id = $user['id'];
    		$membre = $bdd->prepare("SELECT * FROM abonne WHERE ((id_profil = ".$id.") AND (fin_abonnement > CURDATE()))");
    		$membre->execute(array());
    		if($membre->fetch()){
    			$_SESSION['membre'] = true;				
    		}				
    	}
    		header('Location: profil.php');
    		exit;
    	}
    	else{
    		echo "Cheat !";
    	}
    }
    ?>
    Et sur une page je veux rediriger l'internaute s'il n'est pas membre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    if(empty($_SESSION['membre'])) {
    	header("Location: /abonnements.php");
    }
    ?>

  11. #11
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu as exactement le même problème pour $membre que tu avais pour $user : tu as une seule variable qui fait l'exécution de la requête et aucune qui récupère le résultat.
    Compare ton ancien code et ma correction pour $user et adapte le pour $membre
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut
    Je dois rater un épisode

    Je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($existe = $membre->fetch()){
    	$_SESSION['membre'] = true;				
    }
    Mais non, rien ...

    J'ai encore du mal avec la philosophie PHP moi

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut
    Punaise quel c... !!!

    En fait ça fonctionne mais mon utilisateur de test n'était pas membre ...

    Ca fait du bien de dormir un peu lol.

    Merci à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Parse error: syntax error, unexpected T_OBJECT_OPERATOR
    Par oceane751 dans le forum Langage
    Réponses: 4
    Dernier message: 24/03/2012, 20h48
  2. Réponses: 3
    Dernier message: 02/09/2008, 13h39
  3. Réponses: 2
    Dernier message: 26/06/2007, 23h49
  4. Réponses: 4
    Dernier message: 16/10/2006, 15h16
  5. Parse error: syntax error, unexpected '}' help
    Par beur dans le forum Langage
    Réponses: 5
    Dernier message: 23/03/2006, 21h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo