Page 1 sur 1

Classe pour sessions

Posté : 22 juil. 2008, 23:14
par djtec
Bonsoir,

Voilà j'ai crée une classe session mais j'ai un problème.

Voici un extrait ma classe:
class Sid 
{

	var $sid_username;
	var $sid_user_level;
	
	// Fonction de création de session
	function start_sid()
	{

		return session_start;
		
	}


	// Fonction de création de session pour les connectés
	function start_member_sid()
	{
		
		$sid = $_SESSION['sid_username'] = $this->sid_username;
		$sid .= $_SESSION['sid_time'] = time();
		$sid .= $_SESSION['sid_auth'] = $this->sid_user_level;
		$sid .= $_SESSION['sid_userlogin'] = 1;
		
		return $sid;

	}
}
Voici comment j'utilise ma classe:
// Rêquete sql
$sql = "SELECT * 
	   FROM ".TABLE_USERS." 
	   WHERE username = '".$username."'";		
$db->query = $sql;
$sqlr = $db->sql_query();
$db->query = $sqlr;	
$donnees = $db->sql_fetch_object();

// Déclaration de la Class Sid
$sid = new Sid();

// Début de session
$sid->start_sid();

// Renseigne les variables
$sid->sid_username = $donnees->username;
$sid->sid_user_level = $donnees->user_level;
			
// Utilisation de la classe
$sid->start_member_sid();
Mais quand je fais
echo $_SESSION['sid_userlogin'];
Le echo ne m'affiche rien. Donc comment faut-il que je fasse?

Merci d'avance...

Posté : 23 juil. 2008, 00:56
par Sékiltoyai
Euh, c'est moi ou tu n'exécutes pas start_sid() ?

Posté : 23 juil. 2008, 18:56
par djtec
Oups désolé c'est moi qui l'ai oublié dans le post mais dans mon fichier je démarre bien la session en fesant $sid->start_sid;.

J'ai édité mon premier post j'ai rajouté la variable de début de session.

Posté : 23 juil. 2008, 19:50
par Sékiltoyai
Et quand fais tu ton echo ?
Donne plus de code…

Posté : 23 juil. 2008, 21:08
par djtec
Ca c'est le script de vérification de connexion à mon site, ceci s'exécute que si l'utilisateur à bien renseigné les champ pseudo et password:
// Rêquete sql
$sql = "SELECT * 
       FROM ".TABLE_USERS." 
       WHERE username = '".$username."'";        
$db->query = $sql;
$sqlr = $db->sql_query();
$db->query = $sqlr;    
$donnees = $db->sql_fetch_object();

// Déclaration de la Class Sid
$sid = new Sid();

// Début de session
$sid->start_sid();

// Renseigne les variables
$sid->sid_username = $donnees->username;
$sid->sid_user_level = $donnees->user_level;
            
// Utilisation de la classe
$sid->start_member_sid(); 
Si l'utilisateur est reconnu ça le renvoi sur la page index.php.

Et là je fais:
// Déclaration de la Class Sid
$sid = new Sid();

// Début de session
$sid->start_sid;

echo $_SESSION['sid_userlogin'];
Mais cela ne m'affiche rien hors que ça devrait afficher 1.

Posté : 23 juil. 2008, 23:21
par sadeq
Une fonction doit terminer toujours par () même si elle n'a pas de paramètres et surtout lors de son appel. Corrige donc cela dans ta classe au niveau de :
return session_start(); 
et au niveau des autres scripts :
$sid->start_sid(); 
Mais attention, il ne faut surtout pas faire d'echo ou écrire du code HTML avant l'exécution de session_start() car cette fonction envoie des entêtes au client navigateur pour paramétrer la session/cookies. Et on sait que les entêtes HTML (headers) doivent passer en premier.

Posté : 24 juil. 2008, 12:42
par djtec
Merci Sadeg c'est juste les () qui manquait au session_start() et pour le $sid->start_sid() j'avais bien les () dans ma page j'avais oublié de les mettre dans le script là désolé.

Merci de votre aide.

++