PHP : variable de session

Résolu/Fermé
dimi3 Messages postés 269 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 1 avril 2011 - 10 déc. 2010 à 09:39
dimi3 Messages postés 269 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 1 avril 2011 - 13 déc. 2010 à 17:38
Bonjour,

Est-il possible de créer ce que j'appellerais une variable de session. C'est-à-dire une variable à laquelle toutes les pages du site puisse faire appel et/ou modifier durant la durée de la visite d'un utilisateur ? Quelque chose en somme qui remplacerait un cookie, et éviterait le passage de variable par URL...

Merci de votre réponse.


A voir également:

11 réponses

Brendonuts Messages postés 58 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 10 décembre 2010 12
10 déc. 2010 à 11:33
Bonjour,

Oui. Cette question est surprenante, car les variables de session sont très utilisées en PHP.

Il vous suffit de démarrer votre session via la ligne <?php session_start(); ?> qui doit se situer en tout début de fichier (avant même le code HTML).
Vos variables de sessions se définissent ensuite via la ligne $_SESSION['var'] = "value";

Bon nombres de tutoriels très complets sont disponibles...
3
dimi3 Messages postés 269 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 1 avril 2011 20
10 déc. 2010 à 11:49
Merci pour votre réponse. Je vais étudier ça avec soin.
0
dimi3 Messages postés 269 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 1 avril 2011 20
10 déc. 2010 à 14:32
J'ai fait mes premiers essais avec session_stat(), mais ils ne sont pas concluants !
J'obtiens cet avertissement :
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /...chemin.../fichier.php:1) in /chemin/fichier.php on line 2

Qu'est-ce que cela signifie ?
Je vous remercie.
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
Modifié par Melooo le 10/12/2010 à 14:45
Bonjour,
Que tu as un affichage (echo) avant ton header
session_start(); doit être la première ligne de code de ta page.
0
dimi3 Messages postés 269 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 1 avril 2011 20
Modifié par dimi3 le 10/12/2010 à 14:55
Merci de votre réponse.

session_start(); est pourtant bien en première ligne de mon code. Il n'y a pas d'echo avant.

Et voilà ce que j'obtiens encore :
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


Dur... dur...

Voici mon fichier 1 :
<?php
session_start();
session_register("prenom");
session_register("nom");
$prenom = "Jean";
$nom = "Valjean";

?>


Et voici mon fichier 2 :
<?php
session_start();
echo "ID de session : ".session_id()."<br>";
echo "$prenom $nom";
session_unset();
session_destroy();
?>
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
10 déc. 2010 à 14:54
File le code :)
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
Modifié par Melooo le 10/12/2010 à 15:00
Dans ton php.ini essayes de remplacer cette ligne :
session.bug_compat_warn = 1
par
session.bug_compat_warn = 0
Voir : https://www.generation-nt.com/reponses/sessions-entraide-19965.html
0
dimi3 Messages postés 269 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 1 avril 2011 20
10 déc. 2010 à 15:10
rien n'y fait !
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
10 déc. 2010 à 15:14
Bon apparement personne n'arrives à cerner ce problème, plusieurs recherche sur le net et toujours les mêmes réponse qui reviennet...
Essayes de lire ca :
https://forums.commentcamarche.net/forum/affich-6414114-message-d-erreur-incomprehenssible
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
10 déc. 2010 à 14:56
il faut que ce soit en début de page, c'est à dire strictement rien avant dans le fichier, même pas une ligne vide, ni code html.

Si t'as toujours le probleme, fais attention à bien utiliser un codage utf8 sans BOM (c'est un octet bisarre placé en début de fichier texte qui fout la merde)
0
dimi3 Messages postés 269 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 1 avril 2011 20
Modifié par dimi3 le 10/12/2010 à 15:03
Oui, il n'y a vraiment rien avant la fonction de session et les fichiers ne sont pas encodés avec BOM.
Melooo, le code de mes 2 fichiers est dans le message précédent.
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
10 déc. 2010 à 15:02
fais voir le fichier ...
0
dimi3 Messages postés 269 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 1 avril 2011 20
Modifié par dimi3 le 10/12/2010 à 15:05
Voici le fichier 1 :

<?php
session_start();
session_register("prenom");
session_register("nom");
$prenom = "Jean";
$nom = "Valjean";

?>


Et voici mon fichier 2 :

<?php
session_start();
echo "ID de session : ".session_id()."<br>";
echo "$prenom $nom";
session_unset();
session_destroy();
?>
0
dimi3 Messages postés 269 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 1 avril 2011 20
10 déc. 2010 à 16:21
J'ai suivi à la lettre les conseils de la page https://forums.commentcamarche.net/forum/affich-6414114-message-d-erreur-incomprehenssible mais rien ne se résout. Je pense que ça vient de la configuration des serveurs de mon hébergeur et comme je n'ai pas accès au fichier php.ini, il n'y a pas d'espoir... En tout cas merci à tous pour votre attention et votre temps...
0
dimi3 Messages postés 269 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 1 avril 2011 20
Modifié par dimi3 le 10/12/2010 à 16:47
@session_start(); 
ini_set ('session.bug_compat_42', 0);  
ini_set ('session.bug_compat_warn', 0); 
session_register("prenom");  
session_register("nom");  
$prenom = "Jean";  
$nom = "Valjean";  
 


Là, je n'ai plus de messages d'erreurs ou d'avertissements, mais les variables $nom et $prénom ne passent pas... Donc ça ne me sert pas à grand-chose... :-(
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
10 déc. 2010 à 16:58
tu as essayé comme ca :
$_SESSION['nom'] = "Valjean";
$_SESSION[prenom'] = "Jean";
0
dimi3 Messages postés 269 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 1 avril 2011 20
10 déc. 2010 à 17:07
Oui, les variables ne passent pas non plus.
0
dimi3 Messages postés 269 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 1 avril 2011 20
10 déc. 2010 à 19:11
Avec le code suivant pour récupérer les variables, ça fonctionne :
foreach($_SESSION as $cle => $valeur)
{
echo "  <li><strong>".ucfirst($cle)." : </strong><em>".$valeur."</em></li>\n";
}


Je l'ai trouvé à l'adresse : http://www.php-astux.info/sessions-php.php

Merci à tous.
0
dimi3 Messages postés 269 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 1 avril 2011 20
13 déc. 2010 à 17:38
Je rajoute un petit détail qui m'a donné bien du fil à retordre. Il faut bien déclarer la variable de session dans le fichier index du site. Faute de quoi, la variable est irrégulièrement reconnue dans les autres pages du site.
0