Classe pour sessions

Eléphant du PHP | 451 Messages

22 juil. 2008, 23:14

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...
Modifié en dernier par djtec le 24 juil. 2008, 12:42, modifié 2 fois.

ViPHP
ViPHP | 5924 Messages

23 juil. 2008, 00:56

Euh, c'est moi ou tu n'exécutes pas start_sid() ?

Eléphant du PHP | 451 Messages

23 juil. 2008, 18:56

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.

ViPHP
ViPHP | 5924 Messages

23 juil. 2008, 19:50

Et quand fais tu ton echo ?
Donne plus de code…

Eléphant du PHP | 451 Messages

23 juil. 2008, 21:08

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.
Modifié en dernier par djtec le 24 juil. 2008, 12:42, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

23 juil. 2008, 23:21

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.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 451 Messages

24 juil. 2008, 12:42

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.

++