Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TOUT SUR LES SESSIONS


Information sur la source

Catégorie :Tutoriaux Niveau : Débutant Date de création : 26/02/2003 Date de mise à jour : 12/11/2003 16:01:05 Vu / téléchargé: 33 767 / 3 169

Note :
8,65 / 10 - par 31 personnes
8,65 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (79)
Ajouter un commentaire et/ou une note


Description

Comme promis a hicksman voici un tuto sur les sessions.

Vous trouverez d'abord un petit exemple de 5 pages qui montre l'utilisation simple d'une session, comment on enregistre des variable, comment on les éffaces, comment on ferme la session ...

Ensuite vous trouverez les explications sur toutes les fonctions relatives aux sessions.

Pour faire ce tuto, je me suis aidé de "la bible php" pour certaines fonctions que je n'utilise jamais. Je vous conseil ce livre de 1400 pages trés complets mais assez cher par contre :-/ (59? essayez la fnac c'est moins cher souvent)

 

Source

  • >>>>> page index.php
  • <?
  • $variable = "tortue"; // on initie la variable
  • session_start(); // Démarage de la session OBLIGATOIRE
  • session_register("variable"); // On enregistre une variable appelée "variable" dans la session SANS LE $ DEVANT
  • if (session_is_registered(variable)) // si la variable est enregistrée
  • {
  • echo "Variable de session <b>enregistrée</b> ...<br>";
  • echo "<a href=\"viewsession.php\">Options des sessions</a><br>";
  • echo "<br><br>L'id de la session est <b>".session_id()."</b> ";
  • exit;
  • }
  • else // La variable n'est pas enregistrée
  • {
  • echo "Variable de session <b>non enregistrée</b> ...";
  • exit;
  • }
  • ?>
  • ----------------------------------------------------------------------------------------
  • >>>>> page viewsession.php
  • <?
  • session_start(); // Démarage de la sessions OBLIGATOIRE
  • echo "La variable de session qui a été enregistrée est <b>".$_SESSION[variable]."</b><br>";
  • echo "<a href=\"ajoutvariable.php\">Ajoutons une variable à la session</a><br>";
  • // Notez ici le $_SESSION qu'il faut utiliser lorsque register_global est à off
  • // Nous aurions pu écrire directement $varaible mais
  • // depuis la dernière version de php les register_global sont à off dans la configuration initial
  • // dans un soucis de sécurité. Donc pensez à utiliser cette orthographe pour vous servir de vos variables de session
  • echo "<br><br>L'id de la session est <b>".session_id()."</b>";
  • exit;
  • ?>
  • ----------------------------------------------------------------------------------------
  • >>>>> page ajoutvariable.php
  • <?
  • session_start(); // Démarage de la sessions OBLIGATOIRE
  • $nom = "Geniale";
  • session_register("nom"); // On enregistre une variable appelée "nom" dans la session SANS LE $ DEVANT
  • if (session_is_registered(nom)) // si la variable est enregistrée
  • {
  • echo "Opération réussie, La variable <b>\"nom\"</b> a été enregistrée dans la session<br>";
  • echo "<a href=\"effacement.php\">Effaçons maintenant la variable \"nom\"</a><br>";
  • echo "<br><br>L'id de la session est <b>".session_id()."</b>";
  • exit;
  • }
  • else
  • {
  • echo "Enregistrement <b>raté</b> ...";
  • exit;
  • }
  • ?>
  • ----------------------------------------------------------------------------------------
  • >>>>> page effacement.php
  • <?
  • session_start(); // Démarage de la sessions OBLIGATOIRE
  • if (session_is_registered(nom)) // si la variable nommée "nom" est enregistrée on peut l'éffacer
  • {
  • echo "La variable nom a comme valeur <b>".$_SESSION[nom]."</b><br>";
  • if (session_unregister(nom)) // si elle est éffacée
  • {
  • echo "La variable <b>\"nom\"</b> a été éffacée ...<br>";
  • echo "La preuve, essayons de l'afficher ici : <b>".$_SESSION[nom]."</b><br>";
  • echo "<a href=\"destruction.php\">Destruction des variables de session</a><br>";
  • echo "<br><br>L'id de la session est <b>".session_id()."</b>";
  • exit;
  • }
  • else // éffacement raté
  • {
  • echo "Effacement raté ...";
  • exit;
  • }
  • }
  • else // la variable nommée nom n'existe pas
  • {
  • echo "La variable nommée \"nom\" n'existe pas ...";
  • exit;
  • }
  • ?>
  • ----------------------------------------------------------------------------------------
  • >>>>> page destruction.php
  • <?
  • session_start(); // Démarage de la sessions OBLIGATOIR
  • session_unset();
  • if (session_destroy())
  • {
  • echo "A ce stade il nous reste la Variable <b>\"variable\"</b> enregistrée<br>";
  • echo "Normalement <b>session_destroy</b> et <b>session_unset</b> l'ont détruit, testons ceci : ".$_SESSION[variable]."<br>";
  • echo "<b>Rien n'apparait</b>, la variable n'existe plus et si il y en avait eu d'autre, elles n'existeraient plus<br>";
  • echo "Opération réussie<br>";
  • echo "<br><br>L'id de la session est <b>".session_id()."</b><br>";
  • echo "Oups elle n'exite plus nom plus ;-)<br><br>";
  • exit;
  • }
  • else
  • {
  • echo "Effacement raté ...";
  • exit;
  • }
  • ?>
>>>>> page index.php

<?
$variable = "tortue"; // on initie la variable

session_start(); // Démarage de la session OBLIGATOIRE
session_register("variable"); // On enregistre une variable appelée "variable" dans la session SANS LE $ DEVANT

if (session_is_registered(variable)) // si la variable est enregistrée
{
	echo "Variable de session <b>enregistrée</b> ...<br>";
	echo "<a href=\"viewsession.php\">Options des sessions</a><br>";
	echo "<br><br>L'id de la session est <b>".session_id()."</b>    ";
	exit;
}
else // La variable n'est pas enregistrée
{
	echo "Variable de session <b>non enregistrée</b> ...";
	exit;
}
?>

----------------------------------------------------------------------------------------

>>>>> page viewsession.php

<?
	session_start(); // Démarage de la sessions OBLIGATOIRE

	echo "La variable de session qui a été enregistrée est <b>".$_SESSION[variable]."</b><br>";
	echo "<a href=\"ajoutvariable.php\">Ajoutons une variable à la session</a><br>";
	// Notez ici le $_SESSION qu'il faut utiliser lorsque register_global est à off
	// Nous aurions pu écrire directement $varaible mais
	// depuis la dernière version de php les register_global sont à off dans la configuration initial
	// dans un soucis de sécurité. Donc pensez à utiliser cette orthographe pour vous servir de vos variables de session
	echo "<br><br>L'id de la session est <b>".session_id()."</b>";
	exit;
?>

----------------------------------------------------------------------------------------

>>>>> page ajoutvariable.php

<?
	session_start(); // Démarage de la sessions OBLIGATOIRE
	$nom = "Geniale";

	session_register("nom"); // On enregistre une variable appelée "nom" dans la session SANS LE $ DEVANT
	
	if (session_is_registered(nom)) // si la variable est enregistrée
	{
		echo "Opération réussie, La variable <b>\"nom\"</b> a été enregistrée dans la session<br>";
		echo "<a href=\"effacement.php\">Effaçons maintenant la variable \"nom\"</a><br>";
		echo "<br><br>L'id de la session est <b>".session_id()."</b>";
		exit;
	}
	else
	{
		echo "Enregistrement <b>raté</b> ...";
		exit;
	}
?>

----------------------------------------------------------------------------------------

>>>>> page effacement.php

<?
	session_start(); // Démarage de la sessions OBLIGATOIRE
	
	if (session_is_registered(nom)) // si la variable nommée "nom" est enregistrée on peut l'éffacer
	{
		echo "La variable nom a comme valeur <b>".$_SESSION[nom]."</b><br>";
		
		if (session_unregister(nom)) // si elle est éffacée
		{
			echo "La variable <b>\"nom\"</b> a été éffacée ...<br>";
			echo "La preuve, essayons de l'afficher ici : <b>".$_SESSION[nom]."</b><br>";
			echo "<a href=\"destruction.php\">Destruction des variables de session</a><br>";
			echo "<br><br>L'id de la session est <b>".session_id()."</b>";
			exit;
		}
		else // éffacement raté
		{
			echo "Effacement raté ...";
			exit;
		}
	}
	else // la variable nommée nom n'existe pas
	{
		echo "La variable nommée \"nom\" n'existe pas ...";
		exit;
	}
?>

----------------------------------------------------------------------------------------

>>>>> page destruction.php

<?
	session_start(); // Démarage de la sessions OBLIGATOIR

	session_unset();

	if (session_destroy())
	{	
		echo "A ce stade il nous reste la Variable <b>\"variable\"</b> enregistrée<br>";
		echo "Normalement <b>session_destroy</b> et <b>session_unset</b> l'ont détruit, testons ceci : ".$_SESSION[variable]."<br>";
		echo "<b>Rien n'apparait</b>, la variable n'existe plus et si il y en avait eu d'autre, elles n'existeraient plus<br>";
		echo "Opération réussie<br>";
		echo "<br><br>L'id de la session est <b>".session_id()."</b><br>";
		echo "Oups elle n'exite plus nom plus ;-)<br><br>";
		exit;
	}
	else
	{
		echo "Effacement raté ...";
		exit;
	}
?>

Conclusion

!!! AUCUNE BALISE HTML NE DOIT ETRE ENVOYE AVANT UNE SESSION !!!

Car les sessions modifient le header (entête) de la page et mais quand le header est déjà lancé il ne peut plus être modifié.

- session_start() indique que l'on demande l'ouverture d'une session

- session_register("variable") indique que l'on enregistre une variable dans la session (attention de ne pas mettre le $ devant le nom de la variable)

- session_unregister() permet de détruire une variable de session

- session_is_registered() renvoit si la variable de session existe ou pas

- session_name() permet le connaitre le nom de la session mais vous pouvez trés bien le changer en faisant session_name(nomdemasession)

- session_id() nous permet de connaitre l'id de la session courante. Vous pouvez le changer en faisant session_id(nomdelasession)

- session_destroy() détruit toutes les variables de la sessions en cours

- session_write_close() sert à écrire les données de session et termine la session.

- session_save_path() indique le dossier ou sont enregistrées les sessions sur le server mais vous pouvez modifier ce dossier en faisant session_save_path(chemindemondossier)

- session_get_cookie_params() permet d'avoir tous les renseignements sur la session courante.Tout ça est retourné dans un tableau, utilisons ici la fonction print_r pour afficher tout le contenu du tableau (la fonction print_r affiche le contenu de tout tableau, pas seulement pour les sessions, utilse pour le debug)

Info de la session courante :
Array ( [lifetime] =&gt; 0 [path] =&gt; / [domain] =&gt; [secure] =&gt; )

les variables retournées sont :
lifetime -&gt; La durée de vie du cookie de la variable
path -&gt; Le chemin de stockage du cookie de la session
domain -&gt; Le domaine du cookie de la session
secure -&gt; Indique si le cookie de session doit etre envoyé que par une connexion sécurisé

- session_set_cookie_params() permet de modifier les 3 premières variables reçue par session_get_cookie_params(). Méthode d'utilisation :
session_set_cookie_params(durée de vie du cookie de session,Chemin de sotckage du cookie de session,Domaine du cookie de session)

- session_set_save_handler() indique a php d'utiliser des fonctions personnalisées pour la gestions des sessions.
Cette fonction prend 6 attributs :
- Ouvrir
- Fermer
- Lire
- Ecrire
- Detruire
- Nettoyer
pour chacun de ses attributs vous devrez faire une fonction ou vous indiquerez tout ce que vous voulez en vous servant des conseils et des fonctions de cette page.

- session_encode converti l'ensemble des variables de sessions en une chaine de caracteres unique

- session_decode recré les variables de session converties par session_encode

- session_module_name permet de définir ou de connaitre le gestionnaire de session utilisé :
- files : les données sont temporairement enregistrées
- user : vous voulez personnaliser le stockage

- session_cache_limiter() affiche la restriction du cache appliquée. Vous pouvez aussi la définir en faisant session_cache_limiter(Variable)
Variable doit prendre comme valeur :
- nocache pour que la page ne soit pas mis en cache par le client
- public pour autoriser la mise en cache
- private est un peu plus restrictif que public
- private_no_expire permet de ne pas envoyer l'entete expire

- session_cache_expire() sert à définir ou à connaitre la durée avant expiration du cache. Pour changer l'expiration faite session_cache_expire(nombredeseconde)



=== LES ERREURS === (maj 12/11/2003)

J'ai décidé, vu le grand nombre de message que je reçoi portant souvent sur la meme chose, de mettre ici les erreurs les plus rencontrées sur les sessions

--- "Warning: Cannot send session cache limiter - headers already sent ........"
Comme je l'ai dit plus haut, il ne faut pas de html ou une ligne blanche avant le debut de la session. Donc assurez vous que les 2 premieres ligne de votre page soit :
<?
session_start();

Comme ça au moins vous etre sur que votre session sera bien ouverte.
Si dans le script vous avez la meme erreur alors que les 2 premieres lignes sont bonne, cela peut etre du à plusieur chose :
- Vous essayez d'ajouté une variable de session alors que le html a déjà était lancé.
- Une ligne de votre script génére un message d'erreur. Ce message s'affiche (il est donc en html) et donc le html est lancé, modification des header de la page impossible.



===================


Si vous avez d'autres messages d'erreurs qui ne sont pas répertoriés ici, envoyé les moi en précisant (si vous l'avait) la solution. Sinon envoyé moi un message pour que je vous aide.



Voila vous savez tout sur les sessions.
Si vous avez un problemes sur les sessions ou sur autre choses passer sur le forum j'y suis souvent !!

Bon coding !!
++
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de koko le 27/02/2003 07:32:37

register_global stp !!!
les variables sont alors en $_SESSION()

signaler à un administrateur
Commentaire de Pentium4 le 27/02/2003 07:39:16

ya une modif ??? sa a lair cool si g bien compris on peut CE rajouter , ce modifier , ce retirer com un login normale ?? j aten de savoir si il y a des modif a faire mais sa a lair très interressant !

signaler à un administrateur
Commentaire de koko le 27/02/2003 07:40:59

J'AI RIEN DIT POUR LES VARIABLES DE SESSIONS $_SESSION... j'avais pas vu dans le code qu'il y en avait... sorry sorry sorry :(

signaler à un administrateur
Commentaire de hicksman le 27/02/2003 13:34:42

ah ben ça! si c'est pas un bon tuto, je m'y connais plus!
Bravo jeune padawan! [;)]
Chapeau bas, respect, et tout, et tout!

Hicksman

signaler à un administrateur
Commentaire de Pentium4 le 27/02/2003 17:44:26

ya po de probleme c bon sa franchement faudrait que je me repenche dessus mon vieu ptit htaccess ne fait po le poids bien jouer et continue tu est sur ke je serai le premier a dl t source :P

signaler à un administrateur
Commentaire de eax le 05/03/2003 00:24:13

ah enfin de bonnes explications détaillées sur les sessions!

signaler à un administrateur
Commentaire de lpikachu58 le 14/04/2003 21:10:50

de la balle

signaler à un administrateur
Commentaire de coolboy78 le 28/04/2003 21:06:16

Ah ca fai plaisir ! je comprend mieux maintenant !

signaler à un administrateur
Commentaire de ninou2 le 04/06/2003 13:20:14

Désolé, mais ca ne marche pas sur mon serveur . Dans le fichier VIEWSESSION.PHP, il n'affiche pas la variable qui est stocké dans la session.
Version PHP : 4.3.2 Windows 2000 SP3.
ninou2

signaler à un administrateur
Commentaire de Tortuegeniale le 04/06/2003 16:01:31

bah c ton serveur ki déconne, ça marche parfaitement chez tout le monde et j'ai pas entendu parlé de changement dans les sessions au passage en php 4.3.x

signaler à un administrateur
Commentaire de Pentium4 le 04/06/2003 16:15:56

php 5.0.0 va bientôt debarquer !

signaler à un administrateur
Commentaire de ninou2 le 04/06/2003 17:16:48

Tortue geniale : Pas tant que cela, car je n'ai pas eu de vraie réponse !!
Merci quand même

signaler à un administrateur
Commentaire de Tortuegeniale le 04/06/2003 17:44:35

Pentium4&gt; ouais recherche dans les vieilles news de cs j'ai mis un lien qui donne certaines nouveautés mais il bug souvent

ninou2&gt; tu vois je suis pas ingénieur php et j'ai franchement autre chose a faire qu'a installer php 4.3.x pour voir ce qui déconne chez toi. T'as qu'a mettre easy php, comme ça t'aura pas de problème parcequ'en regardant tous les hebergeurs même payant, rare sont ceux qui sont sous un php supérieur a 4.2.x.
Prendre la dernière version d'un langage c bien pour testé mais pas pour coder car il y a souvent des bugs

signaler à un administrateur
Commentaire de ekinoks le 13/06/2003 01:13:59

signaler à un administrateur
Commentaire de xtcrsr le 08/07/2003 17:01:49

Super, justement ce que je cherchais :)
Une petite question, l'id et le name changent-il d'une page a l'autre?

signaler à un administrateur
Commentaire de Tortuegeniale le 08/07/2003 17:56:40

nan  justement fait pour garder ses infos en mémoire car 1 id = 1 client.

signaler à un administrateur
Commentaire de additif le 11/07/2003 19:08:24

Bonjour,

Les sessions, j'adore ! ça me permet de gérer les droits de mise à jour sur mes sites et de suivre le parcours des visiteurs (statistiques de consultation...).

Seul problème : les utilisateurs paranos qui activent un firewall au maximum et bloquent les cookies : dans ce cas, le numéro de session est perdu à chaque changement de page... et mes stats tombent à l'eau.

Je pensais me rabattre sur l'adresse IP mais ça ne marche pas lorsque plusieurs utilisateurs connectés sur un même réseau se connectent en même temps (ex: dans une entreprise)...

Dès fois que quelqu'un ait une idée géniale à ce sujet ?

signaler à un administrateur
Commentaire de Tortuegeniale le 11/07/2003 21:04:00

le cookie de session est gardé sur le serveur dans le dossier temporaire, pas sur le client donc ça a rien a voir

signaler à un administrateur
Commentaire de additif le 13/07/2003 00:54:40

oui, c'est vrai, les infos sont stockées sur le serveur.

Cependant, pour savoir quel cookie-info ouvrir, il faut un identifiant unique du visiteur qui peut être récupéré de 2 façons :
- dans l'URL ( ...&sessid=fd152f45d4f5d4f5d.....)
- à la lecture d'un cookie placé sur l'ordinateur du visiteur

Sans cet identifiant unique, il est impossible de suivre ton visiteur à la trace (il s'agit uniquement de statistiques et pas d'espionnage).

Les firewall récents bloquent les cookies et détectent (et suppriment) les infos de sessions placées dans l'URL.
J'en suis certain pluisque l'IP est la même et les pages vues se suivent à quelques dizaines de secondes près.
Cela représente presque 10% de mes visiteurs...

Je travaille actuellement sur la solution suivante : je transforme mes liens hypertextes en formulaires et je passe ainsi mon infos de session en variable HIDDEN.

ça marche mais il y a sans doute plus simple.

signaler à un administrateur
Commentaire de Tortuegeniale le 13/07/2003 12:26:54

je comprend pas ce que tu dis lol
1 cookie = 1 Session ID = 1 seul et unique personne  et cet ID est passé de façon invisible page par page (ou de façon visible celon le php ini). Que le client accepte les cookies ou ai un firewall ça a rien a voir, vu que tout (id de session, variable de session) est stocké sur le serveur et jamais un visiteur ne peut y toucher

signaler à un administrateur
Commentaire de draven13 le 27/07/2003 11:16:48

est que ce source sur les session marche sur le serveur free
si je laisse l'extensionphp, il ne met plein d'erreur et quand je met php3 il me met :
Fatal error: Call to unsupported or undefined function session_start() in your script on line 4
merci

signaler à un administrateur
Commentaire de Tortuegeniale le 28/07/2003 11:53:33

oui ça marche sur free, je m'en sers sur mon site.
Il faut une extension *.php, en php3 ça marche pas

Par contre pour tes erreurs en *.php ça doit etre header has allready send .... Si c ça, je l'ai écris dans le tuto, ne met pas de html ou meme une ligne blanche avant le session start.

signaler à un administrateur
Commentaire de Tomcube le 19/10/2003 21:42:37

La mise à jour de PHP en version 4.3 a entraîné quelques changements ! Tortuegeniale, t'as du pain sur la planche pour refaire ton tuto.

voici la page ou il fo aller (Source : nexen.net) : http://dev.nexen.net/docs/php/annotee/session.examples.php

En voici un extrait :

L'utilisation de $_SESSION (ou $HTTP_SESSION_VARS avec PHP 4.0.6 et plus ancien) est recommandé pour une meilleure sécurité et un code plus facilement maintenable. Avec $_SESSION , il n'y a pas besoin d'utiliser les fonctions session_register , session_unregister et session_is_registered . Les variables de sessions sont accessibles comme toute autre variable. Enregistrer une variable avec $_SESSION.

&lt;?
phpsession_start();
// Utilisez $HTTP_SESSION_VARS avec PHP 4.0.6 ou plus ancien
if (!isset($_SESSION['count'])) {    
$_SESSION['compteur'] = 0;
} else {    
$_SESSION['compteur']++;
} ?&gt;


Retirer une variable de session avec $_SESSION et register_globals inactif.

&lt;?
phpsession_start();
// Utilisez $HTTP_SESSION_VARS avec PHP 4.0.6 ou plus ancien
unset($_SESSION['compteur']);
?&gt;

signaler à un administrateur
Commentaire de SkyCrasher le 22/11/2003 23:42:11

Cannot send session cookie - headers already sent by
Erreur rencontrer sous Easy PHP !
Pourquoi cette erreur ?

signaler à un administrateur
Commentaire de koko le 22/11/2003 23:55:16

car tu as mis le session_start alors que les headers ont déjà été envoyé !!!
mets le session_start tout en haut de ta page

signaler à un administrateur
Commentaire de SkyCrasher le 23/11/2003 00:02:47

Est-ce normal que certaine page ne s'approprie pas une url du type :
page.php?PHPSESSID=rg4gfh545gfh44f4 ?
Les variables sont bien renvoyées à chaque nouvelle page mais aucune url de ce type n'est obtenue !

signaler à un administrateur
Commentaire de koko le 23/11/2003 00:07:34

en fait, ca dépent de la config de apache !!
moi en local ca passe sans probleme mais sur mon hébergeur, ca doit passer par les PHPSESSID
mais dans ta page php, tu peux rajouter un SID qui est un define de la session
du genre :
echo '&lt;a href="index.php?mode=news&',SID,'"&gt;News&lt;/a&gt;';
enfin tu vois le genre quoi :)

signaler à un administrateur
Commentaire de Tortuegeniale le 23/11/2003 00:10:17

"Cannot send session cookie - headers already sent by" ... relit le tuto

signaler à un administrateur
Commentaire de jashugan le 28/11/2003 23:38:03

j'ai un pb moi rien qu'avec la première partie je la met dans un index.php de easyphp (ds le dossier www) et qd je l'execute par http://127.0.0.1/ et bien ca me dis :

Notice: Use of undefined constant variable - assumed 'variable' in e:program fileseasyphp1-7wwwindex.php on line 7
Variable de session enregistrée ...
Options des sessions

L'id de la session est 41513229c4b6eb3ed65c02456c2f6de7

ensuite j'essay la 2eme partie(en cliquant sur option de session), et sa me met

Notice: Undefined variable: _session in e:program fileseasyphp1-7wwwviewsession.php on line 4
La variable de session qui a été enregistrée est
Ajoutons une variable à la session

L'id de la session est 41513229c4b6eb3ed65c02456c2f6de7

il me dis pas le nom de la variable :/

Si quelqu'un peux m'aider plzzz

signaler à un administrateur
Commentaire de Tortuegeniale le 28/11/2003 23:52:18

c normal easyphp 1.7 n'as pas la meme version de php que easyphp 1.6, Les sessions ont changés sur certaines fonctions.

signaler à un administrateur
Commentaire de jashugan le 28/11/2003 23:54:19

ha ok :/ donc y'a rien a faire pour mon cas desespéré :' ( lol a chaque fois que je vois un tuto j'ai pas la bonne version :/

signaler à un administrateur
Commentaire de koko le 29/11/2003 08:44:43

en fait, c'est un "problème" avec easyphp 1.7. Il y a moyen que ton erreur ne s'affiche pas en mettant ceci :
error_reporting (E_ALL ^ E_NOTICE );
(je crois que c'est ca)
tu le mets dans ta page php au tout début et alors il ne va plus afficher les notices :)

signaler à un administrateur
Commentaire de SkyCrasher le 29/11/2003 17:10:57

Moi j'ai un problème assez compliqué et je ne sais pas si c'est un problème à cause de variable identique sur plusieurs table mysql ou quelquechose d'autre :

voilà une page d'exemple qui me créé se genre de problème :
&lt;? session_start();
if(session_is_registered("utilisateur")=="SkyPlayer"){
$id = "1";
}else{
$id = "2";
}
// "Select * form articles where id='$id'";
//après je fais un "select * from membres where id='$id'";
//puis un formulaire du 10eme article : http://url/article.php?id=10
&lt;form&gt;
&lt;input name=utilisateur id=utilisateur value=&lt;? echo "$utilisateur";?&gt;&gt;
&lt;/form&gt;

L'embettant c'est que la à $utilisateur il reprend l'auteur de l'article et non l'utilisateur en cours !
Est-ce que cela vient du fait que les tables membres et articles ont toputes les deux un champ appelé id ?
Je ne sais pas comment arrangé ça aidez moi !

signaler à un administrateur
Commentaire de koko le 29/11/2003 17:13:16

utilise pas session_is_registred qui n'est plus d'actualité !!!
utilise $_SESSION['utilisateur'] pour vérifié :)

signaler à un administrateur
Commentaire de SkyCrasher le 29/11/2003 17:20:26

Cela ne résous pas mon problème !

signaler à un administrateur
Commentaire de koko le 29/11/2003 17:27:01

voici le bon code :
&lt;?
session_start();
$utilisateur = $_SESSION['utilisateur'];
if($utilisateur == "SkyPlayer") {
$id = "1";
}else{
$id = "2";
}

// "Select * form articles where id='$id'";
//après je fais un "select * from membres where id='$id'";
//puis un formulaire du 10eme article : http://url/article.php?id=10
?&gt;
&lt;form&gt;
&lt;input name=utilisateur id=utilisateur value=&lt;? echo "$utilisateur";?&gt;&gt;
&lt;/form&gt;

ca ca devrait marcher bien que ton code n'est pas tout complet :)

signaler à un administrateur
Commentaire de SkyCrasher le 29/11/2003 17:32:44

Bon merci même si je devrais trouvé par moi même...
C'est bien gentil $_SESSION['utilisateur'];
Mais mon pb concerné les id !
Mais je crois que je vais trouvé donc merci !

signaler à un administrateur
Commentaire de koko le 30/11/2003 08:41:03

a mon avis, tu n'as pas de $utilisateur = avant d'afficher le formulaire c tout :)
montre aussi les select pour voir si le problème il n'est pas la

signaler à un administrateur
Commentaire de fredzool le 25/12/2003 21:15:42

avec mon code
&lt;?
...........
..........
..........
?&gt;
les sessions passe bien mais si j inclu a la suite de ?&gt; du code html
je perds les variables de ma session pk et que faire

merci
freedzool@wanadoo.fr

signaler à un administrateur
Commentaire de phpkiller le 12/01/2004 17:19:32

exactement ce ke je recherchait. Merci beaucoup.

signaler à un administrateur
Commentaire de SATANdemon le 16/01/2004 16:47:12

superbe, j'en avais besoin pour mon site !!
merci pour le boulot !!

signaler à un administrateur
Commentaire de mathieumg le 07/02/2004 03:10:02

J'ai fait session_set_cookie_params(7200); avant d'enregistrer mes variables de session pour que la session dure 2 heures mais en faisant un print_r de session_get_cookie_params() sa me renvoie que le lifetime est de 0. comment se fait-il ?

Merci


Mathieu M-G

signaler à un administrateur
Commentaire de Tortuegeniale le 07/02/2004 15:32:41

Hello

La durée d'une session est fixée dans le php.ini. Si tu veux pouvoir la modifier il faut que ton hébergeur te permette de le faire. Donc a moins que tu héberges chez toi ou que tu ais un serveur dédiés, c mal parti ...

++

signaler à un administrateur
Commentaire de mathieumg le 07/02/2004 15:35:19

Ah...:( d'accord merci...

Car j'ai vu des sites ou à la connexion l'on pouvait choisir la durée de session que l'on voulait...comment s'y prennent-ils ? Ils modifient le php.ini chaque fois ?


Merci


Mathieu M-G

signaler à un administrateur
Commentaire de Tortuegeniale le 07/02/2004 15:40:43

c pas le php.ini qui est modifié, c une variable qui outrepasse celle du php.ini. Pour modifier le php.ini y a une fonction iniset() ou un truc du genre mais toujours la meme chose, si t'as pas accés c mort

signaler à un administrateur
Commentaire de mathieumg le 07/02/2004 15:42:40

D'accord alors c'est mort :(

Merci pareil ;) c'est juste que c'est fatiguant les sessions trops courtes ^^ Admettons tu laisse le site là et tu reviens un peu de temps apres...


Mathieu M-G

signaler à un administrateur
Commentaire de Tortuegeniale le 07/02/2004 15:53:29

moi mon hébergeur les limites a kelke minutes alors que normalement c environ 27 minutes ...

signaler à un administrateur
Commentaire de mathieumg le 07/02/2004 17:13:38

Moi je ne sais pas mais je suppose que je peux le trouver avec phpinfo() reste tout de même que c'est plate ne pas avoir le control la-dessus :(


Mathieu M-G

signaler à un administrateur
Commentaire de ghostahjay le 19/02/2004 19:19:55

Super tuto rien a redir jai trouver mon bonheur dan tes explications
Bonne continuation ! :)

signaler à un administrateur
Commentaire de Arthur15 le 27/03/2004 23:14:09

cool le tuto!

Je me suis bricolé un ptit truc avec mais sous free ca marche pas :o(
et en vérifiant avec les pages de tortuegeniale  ca me donne la même erreur  
cf----&gt; http://tuturzone.free.fr/tortue/

"No such file or directory (2) in /var/www/free.fr/e/e/tuturzone/tortue/index.php on line 2"

Il faut spécifier au serveur ou stocker les cookies ou quoi?

et à prioris les erreurs de header aprés c parce ya celle là avant non?

c surement une erreur de serv PHP parce que chez moi ca marche niquel...



signaler à un administrateur
Commentaire de koko le 28/03/2004 09:36:00

le serveur ne stock pas les cookies... car les cookies c'est chez les clients !!
mais chez free, tu dois créer un dossier sessions pour que ca marche :p

Warning: session_start(): open(/var/www/free.fr/e/e/tuturzone/sessions/.sess_8fa03c12718e51a97ace784e72006595, O_RDWR) failed: No such file or directory

je trouve que l'erreur No such file or directory est tres clair !

signaler à un administrateur
Commentaire de Arthur15 le 28/03/2004 15:37:45

Et là  c qui qui passe pour un gros looser... :o)
j'avais essayé de créer un rep session mais je crois que j'avais oublié le "s".

Merci

signaler à un administrateur
Commentaire de eka808 le 16/04/2004 15:45:58

Salut à tous
J'ai rencontré le même problème que jashugan, c'est à dire que je n'arrivais pas à faire fonctionner les sessions sous easy php 1.7
La solution a ce problème est évidemment de modifier le fichier de config de php (menu d'easy php &gt; configuration &gt; php)
En remplaçant ce fichier par mon fichier (http://membres.lycos.fr/eka808/filesforum/phpmultimania/php.zip)
plus de problèmes!!! (le fichier a les memes valeurs que celui du serveur de multimania)

Voila faites en bon usage :-P
Ah ui le fichier php.ini a remplaçer se situe dans "c:\program files\easy php\apache"

signaler à un administrateur
Commentaire de Tortuegeniale le 16/04/2004 16:23:27

tss alors ça c n'importe koi. Easy php 1.7 a une version de php différente de la 1.6 et une config différente aussi (la config par defaut en plus).
Ca sert absolument a rien de faire ce que tu fais car le jour ou les serveur qui héberge vos sites changerons leur config php, vos sites marcherons plus.
Si tu fais ça installe easy php 1.6 parceque cette "solution" revient a faire ça.

Ce tuto marchait sous easy php 1.6, pour la 1.7 il faut changer 2 - 3 trucs pour les sessions (et encore ça devient meme plus simple). Donc a vous de chercher un peux. y a une super aide officiel php ou tout est expliqué (clairement en plus).

J'en vois plein qui se plaignent sur ce site c abérant alors qu'ils cherchent meme pas. "Ils peuvent aider sur ce site la alors pourquoi chercher" pensent les 3/4 des gens. Cette remarque n'est dirigé vers personne en particulier donc vous fachez pas. Mais c'est franchement usant de recevoir des message sur la messagerie privé  du site, de personne que je ne connais pas, qui disent rarement bonjour, me colle un code de 50 - 100 lignes et me demandent (des fois c meme ordonnent) de les aider.

La maj de ce tuto existe, elle est meme finie mais j'ai décidé de ne pas la mettre vu les comportements de certains sur ce site.

signaler à un administrateur
Commentaire de hicksman le 16/04/2004 17:36:18

ET TOC!!! Bien fait! Non mais, aucune reconnaissance, bandes d'ingrats ( je déconne, lol)
Comme disait un célèbre philisophe, qui s'appelait coluche si je me rapelle bien:
c'est en forgeant qu'on devient forgeron et c'est en sciant du bois que léonard de Vinci.

signaler à un administrateur
Commentaire de eka808 le 16/04/2004 18:17:08

je compren pa bien pk tu dis ça lol
moi je voulais juste aider et montrer ma solution.
si tu as mieux c ton pb moi cette solution me convient

signaler à un administrateur
Commentaire de pedgom le 21/04/2004 19:22:13

Salut à tous, c juste pour dire que le tutorial est SUPER balaise et surtout complet (c rare), thx Tortuegeniale.

Cepandant la solus d'eka808 est pas mal du tt. P.ex. sur free.fr ils ont aussi moditifé leur config de php pr pas faire ch.. les gens avec leurs vieux codes.

Je pense que les 2 se valent mais le mieux est de savoir les maitriser tt ;)

signaler à un administrateur
Commentaire de koko le 21/04/2004 19:33:53

il est vrai qu'il est bien mais il n'est pas a jour... mais il ne sera pas mis a jour comme l'a dit son auteur !

signaler à un administrateur
Commentaire de eka808 le 21/04/2004 20:17:54

merci pedgom jme sens moins seul lol

signaler à un administrateur
Commentaire de pedgom le 21/04/2004 21:59:07

@ eka808 : de rien, de rien. ça marche donc c une solus, non? un vieux proverbe disait : "si le code ne va pas au serveur, amène le serveur au code" ou kekchose comme ça. ;)

Bon c vrai que ya beaucoup de gens qui se plaignent ss trop chercher (genre je m'assieds par terre et je pleure)...

Je vais tenter (je dis bien tenter) de mettre à jour le tutorial de Tortuegeniale histoire de faire un peu avancer les choses.

Ce code fonctionne avec EasyPHP1-7 de base. J'attire qd même l'attention que ss cette config (error_reporting  =  E_ALL) EasyPHP mensionne aussi les avertissements à l'écran au format suivant "Notice: ...". ce ne sont pas des fautes en sois et ça peut servir pr un bon débugage.
La majorité des serveurs cachent ces messages pr le confort des surfeurs qui ont souvent affaire à des faux-programmeurs ou (mauvais) donc ya pas de quoi s'en faire. ;p

&gt;&gt;&gt;&gt;&gt; page index.php

&lt;?
session_start(); // Démarrage de la session OBLIGATOIRE

$_SESSION['variable'] = "tortue"; //L'enregistrement de la variable et son affectation se font en même temps

if (isset($_SESSION['variable'])) //la fonction session_is_registered() a été remplacée par isset()
{
    echo "Variable de session &lt;b&gt;enregistrée&lt;/b&gt; ...&lt;br&gt;";
    echo "&lt;a href=\"viewsession.php\"&gt;Options des sessions&lt;/a&gt;&lt;br&gt;";
    echo "&lt;br&gt;&lt;br&gt;L'id de la session est &lt;b&gt;".session_id()."&lt;/b&gt;  ";
    exit;
}
else // La variable n'est pas enregistrée
{
    echo "Variable de session &lt;b&gt;non enregistrée&lt;/b&gt; ...";
    exit;
}
?&gt;


----------------------------------------------------------------------------------------

&gt;&gt;&gt;&gt;&gt; page viewsession.php

&lt;?
    session_start(); // Démarrage de la sessions OBLIGATOIRE

    echo "La variable de session qui a été enregistrée est &lt;b&gt;".$_SESSION['variable']."&lt;/b&gt;&lt;br&gt;";
    echo "&lt;a href=\"ajoutvariable.php\"&gt;Ajoutons une variable à la session&lt;/a&gt;&lt;br&gt;";

    // il est mieux d'écrire $_SESSION['variable'] que $_SESSION[variable] mais les 2 marchent aussi bien (juste 1 Notice)

    echo "&lt;br&gt;&lt;br&gt;L'id de la session est &lt;b&gt;".session_id()."&lt;/b&gt;";
    exit;
?&gt;

----------------------------------------------------------------------------------------

&gt;&gt;&gt;&gt;&gt; page ajoutvariable.php

&lt;?
    session_start(); // Démarrage de la sessions OBLIGATOIRE

    $_SESSION['nom']="Geniale"; //L'enregistrement de la variable et son affectation se font en même temps

    if (isset($_SESSION['nom'])) //La fonction session_is_registered() a été remplacée par isset()
    {
        echo "Opération réussie, La variable &lt;b&gt;\"nom\"&lt;/b&gt; a été enregistrée dans la session&lt;br&gt;";
        echo "&lt;a href=\"effacement.php\"&gt;Effaçons maintenant la variable \"nom\"&lt;/a&gt;&lt;br&gt;";
        echo "&lt;br&gt;&lt;br&gt;L'id de la session est &lt;b&gt;".session_id()."&lt;/b&gt;";
        exit;
    }
    else
    {
        echo "Enregistrement &lt;b&gt;raté&lt;/b&gt; ...";
        exit;
    }
?&gt;


----------------------------------------------------------------------------------------

&gt;&gt;&gt;&gt;&gt; page effacement.php

&lt;?
    session_start(); // Démarage de la sessions OBLIGATOIRE
    
    if (session_is_registered(nom)) // si la variable nommée "nom" est enregistrée on peut l'éffacer
    {
        echo "La variable nom a comme valeur &lt;b&gt;".$_SESSION[nom]."&lt;/b&gt;&lt;br&gt;";
        
        if (session_unregister(nom)) // si elle est éffacée
        {
            echo "La variable &lt;b&gt;\"nom\"&lt;/b&gt; a été éffacée ...&lt;br&gt;";
            echo "La preuve, essayons de l'afficher ici : &lt;b&gt;".$_SESSION[nom]."&lt;/b&gt;&lt;br&gt;";
            echo "&lt;a href=\"destruction.php\"&gt;Destruction des variables de session&lt;/a&gt;&lt;br&gt;";
            echo "&lt;br&gt;&lt;br&gt;L'id de la session est &lt;b&gt;".session_id()."&lt;/b&gt;";
            exit;
        }
        else // éffacement raté
        {
            echo "Effacement raté ...";
            exit;
        }
    }
    else // la variable nommée nom n'existe pas
    {
        echo "La variable nommée \"nom\" n'existe pas ...";
        exit;
    }
?&gt;


&lt;?
    session_start(); // Démarrage de la sessions OBLIGATOIRE
    
    if (isset($_SESSION['nom'])) //La fonction session_is_registered() a été remplacé par isset()
    {
        echo "La variable nom a comme valeur &lt;b&gt;".$_SESSION['nom']."&lt;/b&gt;&lt;br&gt;";

unset($_SESSION['nom']);
//La fonction session_unregister() a été remplacée par unset()
//unset() renvoit une erreur donc on ne peut pas tester directement dessus.

        if (!isset($_SESSION['nom'])) // si elle est éffacée
        {
            echo "La variable &lt;b&gt;\"nom\"&lt;/b&gt; a été éffacée ...&lt;br&gt;";
            echo "La preuve, essayons de l'afficher ici : &lt;b&gt;".$_SESSION['nom']."&lt;/b&gt;&lt;br&gt;";
// il est mieux d'écrire $_SESSION['variable'] que $_SESSION[variable]
//ça fait une Notice en mode error_reporting  =  E_ALL.
            echo "&lt;a href=\"destruction.php\"&gt;Destruction des variables de session&lt;/a&gt;&lt;br&gt;";
            echo "&lt;br&gt;&lt;br&gt;L'id de la session est &lt;b&gt;".session_id()."&lt;/b&gt;";
            exit;
        }
        else // éffacement raté
        {
            echo "Effacement raté ...";
            exit;
        }
    }
    else // la variable nommée nom n'existe pas
    {
        echo "La variable nommée \"nom\" n'existe pas ...";
        exit;
    }
?&gt;

----------------------------------------------------------------------------------------

&gt;&gt;&gt;&gt;&gt; page destruction.php

&lt;?
    session_start(); // Démarage de la sessions OBLIGATOIR

    session_unset();
    if (session_destroy())
    {  
        echo "A ce stade il nous reste la Variable &lt;b&gt;\"variable\"&lt;/b&gt; enregistrée&lt;br&gt;";
        echo "Normalement &lt;b&gt;session_destroy&lt;/b&gt; et &lt;b&gt;session_unset&lt;/b&gt; l'ont détruit, testons ceci : ".$_SESSION['variable']."&lt;br&gt;";
        echo "&lt;b&gt;Rien n'apparait&lt;/b&gt;, la variable n'existe plus et si il y en avait eu d'autre, elles n'existeraient plus&lt;br&gt;";
        echo "Opération réussie&lt;br&gt;";
        echo "&lt;br&gt;&lt;br&gt;L'id de la session est &lt;b&gt;".session_id()."&lt;/b&gt;&lt;br&gt;";
        echo "Oups elle n'exite plus nom plus ;-)&lt;br&gt;&lt;br&gt;";
        exit;
//Quelques Notice puisqu'on essaye d'affiche des variables qui n'existent plus
    }
    else
    {
        echo "Effacement raté ...";
        exit;
    }
?&gt;

Voila comme vous avez pu le remarquer ce sont des fonctions qui ont changé tt simplement, rien de terrible. En fait il suffisait tt simplement d'aller sur le site www.php.net/ ;)

signaler à un administrateur
Commentaire de koko le 21/04/2004 22:07:16

tu as utilisé session_is_registred qui est obsolète :p
tout par $_SESSION !!!

session_unset caca aussi
$_SESSION = Array();

signaler à un administrateur
Commentaire de pedgom le 21/04/2004 22:42:35

@ koko : merci. En fait g oublié d'enlever l'ancien code à un endroit .. oups
Ben justement, la fonction unset() ne peut pas être utilisée pr remplacer la fonction session_unset() c pr ça que g laissé la vieille méthode. Je vais tester ton truc, thx.

/!\ ATTENTION pr la modif que g faite plus haut /!
Pour la page effacement.php le code est présent 2 fois, d'abord l'ancien puis le nouveau. Utilisez le nouveau evidement :).

/!\ ATTENTION pr la modif que g faite plus haut /!\

signaler à un administrateur
Commentaire de yami_no_ookami le 03/05/2004 11:20:10

merci pour ce tuto très complet qui m'a permis de mettre en place les sessions pour le stage d'un pote.

mais pour mon boulot, j'ai vu que les sessions sont bloquées par le navigateur si la confidentialité est mis a fond.
en effet, l'id est stockée dans un cookie sur le client et cela ne peut etre changée.

mettre l'id dans l'url est irrealisable niveau securité donc pas la peine de me le proposer.

Merci d'avance pour votre aide.

signaler à un administrateur
Commentaire de nashoy le 12/06/2004 12:44:49

Le tuto est très bien fait, bravo.
J'ai néanmoins quelques erreurs qui apparaissent comme :

Notice: Use of undefined constant variable - assumed 'variable' in c:\programme\easyphp1-7\www\session1.php on line 7 &lt;== dans index.php
-----------
Notice: Use of undefined constant variable - assumed 'variable' in c:\programme\easyphp1-7\www\viewsession.php on line 4

Notice: Undefined index: variable in c:\programme\easyphp1-7\www\viewsession.php on line 4 &lt;== dans viewsession.php

Notice: Use of undefined constant nom - assumed 'nom' in c:\programme\easyphp1-7\www\ajoutvariable.php on line 7 &lt;==ajoutvariable.php
---------
Notice: Use of undefined constant nom - assumed 'nom' in c:\programme\easyphp1-7\www\effacement.php on line 4

Notice: Use of undefined constant nom - assumed 'nom' in c:\programme\easyphp1-7\www\effacement.php on line 6
La variable nom a comme valeur

Notice: Use of undefined constant nom - assumed 'nom' in c:\programme\easyphp1-7\www\effacement.php on line 8
La variable "nom" a été éffacée ...

Notice: Use of undefined constant nom - assumed 'nom' in c:\programme\easyphp1-7\www\effacement.php on line 11

Notice: Undefined index: nom in c:\programme\easyphp1-7\www\effacement.php on line 11
&lt;== dans effacement.php

Je suis débutant, c'est pk je vous demanderai d'être tolérent, s'il s'agit d'une erreur bête.

Merci

signaler à un administrateur
Commentaire de Solo le 23/06/2004 15:41:32

Source: PhpFrance.com/Tutorials page 2:
"La fonction session_start() essaye de trouver l'identificateur de la session dans les cookies se trouvant sur votre disque dur.
Si l'identificateur de la session ne peut être trouvé, une nouvelle session est alors créée."

Est ce a dire que si l'internaute visitant le site en PHP a désactivé les cookies sur son poste (il existe des paranos !), une nouvelle session va etre créée a chaque changement de page, et que les variables de session ne seront pas accessibles de pages en pages ?

Toutefois, il semblerait que si dans l'URL d'appel de la page suivante, on mentionne la constante SID, on outrepasse les problemes de cookies...
&lt;a href="page2.php?' . SID . '"&gt;page 2&lt;/a&gt;

Enfin, si j'ai bien compris, les variables de session sont mémorisées dans un fichier de session situé sur le serveur (contrairement aux cookies qui eux le sont sur le poste de l'internaute)... Ce fichier peut-il avoir une durée de vie limitée ? que devient ce fichier si l'internaute ne se déconnecte pas proprement (et oui, EdF se met en greve parfois !)... le fond du problème étant de ne pas encombrer le serveur avec des fichiers obsolètes...

signaler à un administrateur
Commentaire de nashoy le 23/06/2004 18:23:43

Pour ce qui est de ma part, j'ai réussi a résoudre le pb.

signaler à un administrateur
Commentaire de Solo le 24/06/2004 12:00:31

Question concernant les variables de session:
1- Si je définis une variable de session nommé "MaVariable", et dans mon script ou mes fonctions, j'utilise la sytaxe "$MaVariable" (notez le $), est ce que j'utilise bien la variable de session, ou y a t-il conflit ou cohéxistance ?

2- En supposant qu'a la question précédente "$MaVariable" est bien ma variable de session; si je modifie le contenu de "$MaVariable, faut-il que je force la mise a jour de l'enregistrement pour la page suivante ?

3- La portée d'une variable étant limitée à la fonction qui la définit, pour avoir une variable globale au script, il faut  redéfinir la variable dans chacune des fonctions l'utilisant en la fesant précéder de "GLOBAL"... ah moins que je ne dise une bétise !
Pour les variables de session, faut-il aussi les déclarer dans chaque fonction les utilisant avec la commande "GLOBAL" ?

Mes questions semblent simplistes certes, mais ne faut il pas etre précis dans la méthodologie ?

signaler à un administrateur
Commentaire de orsam le 17/01/2005 11:27:39

Bonjour à tous...

Ok j'ai compris comment fonctionne les sessions (merci pour le tuto)

Cependant, j'ai un ch'ti probleme pour declarer une variable tableau avec session_register("quelajout[]");

Merci par avance...

signaler à un administrateur
Commentaire de koko le 18/01/2005 08:55:05

peut-être que le tuto dit d'utiliser session_register, mais il faut l'oublié...
utilise plutot le tableau $_SESSION ;)
et je crois que tu ne peux pas mettre de tableau avec session_register !
Voici comme le faire :
$_SESSION['lenomquetuveux'] = $letableau;

Il faudrait vraiment que ce tut soit mis à jour :/

signaler à un administrateur
Commentaire de brocoli le 13/02/2005 19:06:24

Hello !

Merci beaucoup pour ce tuto :-)
j'ai toutefois un ptit problème hum hum...
j'ai rajouté sur la page index.php
echo $_SESSION['variable']."<br>";
et il m'affiche bien tortue !
Par contre sur ma page viewsession.php
echo "La variable de session qui a été enregistrée est ".$_SESSION['variable']."<br>";
Il ne trouve plus la variable de session :-(((
Il m'a également généré un nouveau no ID de session !
J'ai essayé les 2 versions du tuto, (j'en ai essayé pleins d'autres depuis d'autres sites...ça fais 3 jours que je m'arrache les cheveux !) mais j'ai toujours ce problème...

Merci de votre aide !
A++ Oli

signaler à un administrateur
Commentaire de mathieumg le 13/02/2005 20:42:32

Tes cookies sont activés?

Mathieu M-G
mathieumg@qc-net.com

signaler à un administrateur
Commentaire de brocoli le 14/02/2005 13:54:00

Hello !

Oui, mes cookies sont activés... enfin dans mes paramètres de sécurités, je suis "Moyen".
ESt-ce que c'est mon hébergeur ?
J'ai affiché le phpinfo et voici ce que ça donne...
PHP Version 4.3.10
register_globals On
session.auto_start Off
session.cookie_path /
session.cookie_secure Off
session.name sid
session.use_cookies Off

Voili...voila :-)
Merci beaucoup !!

A++ Oli

signaler à un administrateur
Commentaire de brocoli le 14/02/2005 20:22:15

Bon... je crois que j'ai trouvé pour quoi ça marche po...
session.use_cookies = Off ??!!
Je suis chez un hébergeur payant, il n'autorise par les cookies ?

Merci
A+ Oli

signaler à un administrateur
Commentaire de mathieumg le 17/02/2005 02:53:17

Ça à l'air à cela, il authorise les cookies mais pas ceux de session :/

Peut-être devrais-tu lui écrire?

Mathieu M-G
mathieumg@qc-net.com

signaler à un administrateur
Commentaire de brocoli le 17/02/2005 09:36:56

Hello !

C'est chose faite... il n'accepte pas les cookies de sessions, car d'après lui, certains navigateurs ne les supportent pas !
Voici un lien sur la doc officielle...
http://ch2.php.net/manual/fr/ref.session.php

Pour ma part, j'ai fais un truc comme ça :

Je test si le nom d'utilisateur et le mot de passe sont correctes, si le test est ok, je démarre la session
session_start();
//on enregistre les paramètres de notre visiteur comme variables de session (utilisateur_client et passe_client)
$_SESSION['utilisateur_client'] = $_POST['utilisateur'];
$_SESSION['passe_client'] = $_POST['passe'];
// on redirige notre visiteur vers une page de notre section membre
header ('location: ./accueil/index.php?'.strip_tags(SID));

Donc les infos passent à travers l'url... ça donne qqchose comme ça :
/index.php?sid=8b4a63c36a1d81ea27767f5fd96331f0

Sur toutes mes pages protégées :
session_start();
if (! isset($_SESSION['utilisateur_client'])) {
header ('location: ../index.php'); //retour à la page de login
} else {
//Affichage de la page
}

Bon...ça marche aussi, mais l'url est super moche !!!
De plus, je peux ouvrir une page protégée juste en séléctionnant l'url dans l'historique de mon navigateur sans même passer par la page de login !! c'est grave !

Resultat : je sais plus quoi faire :-((((
Pour info, j'ai trouvé un post sur un autre forum, ça peut toujours intéresser quelqu'un ?
http://www.phpindex.com/articles/articles_lire.php3?element=182
(le dernier msg tout en bas de page donne la réponse de comment protéger ses sessions... mais c'est un peu du bricolage ??)
Merci
A++ Oli

signaler à un administrateur
Commentaire de koko le 19/02/2005 08:35:28

Essaie de le mettre dans le cookie "à la main"

signaler à un administrateur
Commentaire de ninaW le 06/03/2007 10:04:20

Un grand merci pour ce code qui m'a été très utile^^!! même si j'ai pas tout compri^^ mais bon le principal c'est que j'y arrive non? encor merci^^
Bye

signaler à un administrateur
Commentaire de jul_diedhiou le 04/07/2008 19:26:04

bonjour jai ce message d'erreur sur les session que j'arrive pas comprendr alor que mon script fonctionne normalement.
au fait c'est pas une erreur mais c'est un warning pouvait m'aider s'il vout plait:
voici le message:
'Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0'

signaler à un administrateur
Commentaire de xsamoud le 25/03/2009 09:53:43

salut
j'ai besoin d'un script php
lorsque le client connecter d'un poste les session ouvert avec les autres sessions relatives au meme compte  se ferment, de sorte à avoir une seule seule session active en même temps pour chaque compte.
(comme avec msn)
merci

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,562 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.