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+
Partager