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

JavaScript Discussion :

[AJAX] Utilisation de classe php (pour les sessions mais peu importe) et AJAX


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 11
    Points : 8
    Points
    8
    Par défaut [AJAX] Utilisation de classe php (pour les sessions mais peu importe) et AJAX
    Bonjour à tous,

    Je commence le développement d'un site perso, en php5, dans lequel se trouve un formulaire de login/mot de passe pour accéder à certaines parties du contenu.
    Afin de sécuriser l'appli, j'utilise les sessions (sessions avec base de données). Pour cela, j'ai créé une classe Session... le problème arrive

    Cette classe session contient donc un constructeur, et différentes méthodes, notamment une méthode générant le formulaire d'identification, et une méthode (nommée controleAccess) vérifiant si l'utilisateur est déjà connecté, si la session est valide etc etc...


    Comme vous le savez sûrement déjà, tout session_start doit être effectué en haut de page.

    Sur ma page index.php, tout en haut j'ai donc :
    <?php
    require_once("./class/session/database_session.class.php");
    $session = database_session::getInstance(); // instancie la session, et notamment exécute le fameux sesssion_start(); ?>


    Au milieu de cette même page, j'ai ensuite le formulaire de connexion (qui se trouve en fait dans une page nommée login_form.php:
    <div id="access_form">
    <?php require_once("login_form.php"); ?>
    </div>

    Dans cette page login_form.php, j'appel la méthode controleAccess via $session->controleAccess(...).
    Au chargement de la page, aucun problème avec l'appel de cette méthode car l'objet session est bien instancié au début de la page.

    Le problème c'est que j'aimerai utiliser de l'ajax pour le traitement du formulaire. Je fais donc un truc du genre Onsubmit = traitement du formulaire et rafraichissement uniquement du <div id="access_form">. Dans ce cas, avec ajax, apres le OnSubmit, seul le fichier login_form.php est éxécuté, et là GROS PROBLEME: il me dit que j'appel une méthode sur un non objet (normal puisque l'instanciation de l'objet n'est pas la).

    Y'a t il une solution à ce problème? (le fait que l'on ré execute une page php dans lequel une méthode d'une classe est appelé sur un objet instancié ailleur que dans cette même page)

    Pour info, je sais qu'une solution pourrait être d'utiliser des méthodes statics, et donc dans login_form.php j'appel ma méthode en static mais je trouve pas ça terrible, donc si y'a mieux, ce serait avec grand plaisir.

    Je vous remercie d'avance de votre aide.

    A+

  2. #2
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 169
    Points : 149
    Points
    149
    Par défaut
    require_once("./class/session/database_session.class.php"); dans "login_form.php" ?
    Ca devrait marcher je pense, mais c'est peut etre pas très propre.
    Cartes Pokémon, Yugioh, Magic ?
    Communauté d'échange

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Je pense que tu veux dire que je pourrais instancier ma classe ($session = database_session::getInstance() dans le fichier database_session.class.php juste après avoir fermer ma class.
    Ainsi je retrouverai grâce au require_once mon objet $session dans chacune des pages, même quand j'appel uniquement la deuxième... et du coup plus de problème pour appeler des méthodes.
    En effet ça pourrait marcher... mais ça ne marche pas dans ce cas présent car n'oubli pas qu'ici je traite des sessions.
    Certe au rafraichissement du div, donc de la deuxieme page php (login_form.php) je récupère bien un objet de type database_session et je peux appeler sans problème mes méthodes, mais le session_id n'est pas le même que le reste de la page, ce qui pose bien entendu problème.

    En dehors de la technique d'avoir des méthodes statics, je regarde en ce moment la technique bien connu de la sérialization. Ainsi, au moment ou je valide le formulaire, je pourrait surement passer puis recuperer dans ce cas mon objet...

  4. #4
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 169
    Points : 149
    Points
    149
    Par défaut
    Ah bizarre. Y'a un truc que je n'ai pas compris alors, parce que normalement le session_id est le même tant que tu reste sur le site, même si tu fais des requêtes ajax. Sinon pour la sérialisation, JSON est parfait, et marche aussi bien au niveau de Php(versions récentes) que Javascript.
    Cartes Pokémon, Yugioh, Magic ?
    Communauté d'échange

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    La sérialisation a résolu mon problème qui n'était en aucun cas une histoire de code pas propre...
    Merci quand même pour les réponses.

    A+

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/09/2011, 04h15
  2. Réponses: 2
    Dernier message: 27/04/2011, 01h19
  3. Utilisation de base de données pour les sessions
    Par Aragorn_destroy dans le forum Langage
    Réponses: 3
    Dernier message: 05/07/2007, 08h51
  4. utilisation de classes php
    Par lipao17 dans le forum Langage
    Réponses: 4
    Dernier message: 09/01/2006, 12h02
  5. problème de configuration pour les sessions
    Par spilliaert dans le forum Langage
    Réponses: 13
    Dernier message: 27/12/2005, 20h44

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