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 :

Tutoriel "Utiliser une base de données pour sécuriser vos sessions"


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2005
    Messages : 31
    Points : 19
    Points
    19
    Par défaut Tutoriel "Utiliser une base de données pour sécuriser vos sessions"
    Bonjour,

    Avant tout, j'apprends le php actuellement donc j'suis débutant (d'avance merci pour votre compréhension
    je suis parti de ce tutau (http://a-pellegrini.developpez.com/t...?page=sommaire), mais j'ai 3 problèmes qui sont :
    -1) Quelles sont les bonnes infos à remplir dans les 2 tables site_session et site_user, dommage qu'il n'y est pas d'exemple pour nous aider
    -2) la structure du formulaire d'authentification est bien composé de 2 champs nommé dans ce tutau pour le login : username et pour le password : password.
    -3) J'ai le message d'erreur suivant :
    Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\....
    La ligne qui provoque cette erreur est celle de la fonction getUserInfo() :
    c'est à partir de $sql = $db->prepare ....
    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
     
    /**************** Fonction getUserInfo() ******************/
    /* Récupère les informations contenues dans la table 'site_users' en fonction de l'id de session. 
    */
     
    function getUserInfo() { 
    	global $db;
     
    	$sql = $db->prepare('SELECT u.id, u.active, u.date, u.last_modified, u.username, u.country, 
    					 u.gender, u.birthday, u.avatar
    				FROM site_session s
    				INNER JOIN site_user u
    					ON s.sid = :sid
    					AND s.userid = u.id ');
     
    	$sql->execute( array(':sid' => session_id()) );
     
    	$userdata = $sql->fetch(PDO::FETCH_ASSOC);
     
    	if (empty($userdata)) {
    		$userdata = FALSE;
    	}
     
    	return $userdata;
    }
    Donc ma question est-ce dû au faite que dans mes 2 tables il n'y a aucun enregistrement ?
    Dommage qu'il n'y est pas un formulaire pour ajouter ces infos
    enfin via un c'est pas bien compliqué mais le truc c'est d'y mettre les bonnes infos et bien écrites.

    Voilà j'espère avoir été claire dans mon problème !

    Merci d'avance pour votre aide !!!

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    juin 2003
    Messages
    9 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 9 653
    Points : 14 681
    Points
    14 681
    Par défaut
    le contenu des tables est expliqué dans le tutoriel là :
    http://a-pellegrini.developpez.com/t...page=page_3#L3

    la table "session" est remplie par le script et la table "user" doit être remplie avec tes utilisateurs

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2005
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Les tables y a pas de problèmes j'ai bien compris et je l'ai écrite dans ma base, mais le truc c'est les bonnes infos à mettre dedans, normalement cela se fait tout seul vue que c'est à l'appel de la page et après authentification que la session s'écrit donc il faut commencer avec au minimun un login et password enregistrer dans la base, non ?

    Mais surtout mon message d'erreur, comment résoudre ce problème ?
    je ne sais pas si c'est dû au faite que j'ai rien dans les champs des tables ou dû à la connexion à ma SGBD, bd et tables qui ne se fait pas, la bd qui contient les 2 tables je l'ai appelé user_session

    Si j'ai bien compris mon message d'erreur qui est :
    Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www
    l'appel à un menbre via la fonction prépare ne se fait pas car il n'y a pas d'objet.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2005
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Visiblement dans ma ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $sql = $db->prepare('SELECT u.id, u.active, u.date, u.last_modified, u.username, u.country, 
    					 u.gender, u.birthday, u.avatar
    				FROM site_session s
    				INNER JOIN site_user u
    					ON s.sid = :sid
    					AND s.userid = u.id ');
    la variable $db n'est pas déclaré, et en langage Objet on doit déclarer la variable
    Donc cela ne risque pas de fonctionner !!!!

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    février 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Meme soucis de variable
    6 ans plus tard ...

    Je travaille sur le même tutoriel et j'ai malheureusement le même problème de variable apparemment.

    La variable $bd est bien déclarée en variable globale ( cf code des message ci-dessus) mais n'est pas initialisée. Si toutefois l'erreur venait de là comment l'initialiser correctement pour éviter ce message d'erreur ?

    Merci de l'aide que vous pourriez m'apporter ...

  6. #6
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    janvier 2011
    Messages
    3 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : janvier 2011
    Messages : 3 147
    Points : 9 380
    Points
    9 380
    Par défaut
    Voir la documentation de PDO :
    http://fr.php.net/manual/en/pdo.construct.php
    Exemple 1 où $dbh est $db dans le tutoriel.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    février 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Erreur corrigée

    Merci !

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/07/2012, 23h28
  2. Réponses: 1
    Dernier message: 29/10/2008, 14h04
  3. Réponses: 0
    Dernier message: 30/08/2006, 21h30
  4. Fichier manquant en utilisant une base de données DBF
    Par Stephane Michaud dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/07/2005, 12h22
  5. [ODBC] Utiliser une base de données Access sans les MFC
    Par Higestromm dans le forum Bases de données
    Réponses: 6
    Dernier message: 15/03/2005, 22h37

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