begin process at 2008 05 17 07:41:38
1 173 922 membres
53 nouveaux aujourd'hui
13 973 membres club

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é: 29 138 / 2 946

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (77)
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 !!
++
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

  • 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;


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