Variables $_SESSION qui disparaissent !
Résolu
evilsamo
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
-
evilsamo Messages postés 17 Date d'inscription Statut Membre Dernière intervention -
evilsamo Messages postés 17 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous!
J'aimerais comprendre pourquoi dans $_SESSION les variables positionnées après une clé composé d'un nombre disparaissent.
je m'explique:
$_SESSION = array (
"nom" => "Dupont",
"123" => "3, rue du Paradis",
"ville" => "Marseille" );
Sur cette même page ca va fonctionner très bien, mais sur une page suivante $_SESSION['123'] et $_SESSION['ville'] auront disparues, alors que $_SESSION['nom'] sera bien équivalant a 'Dupont'
ca me pose un problème car j'aurais bien aimé que:
$reponse = mysql_query("SELECT * FROM test WHERE pseudo='$pseudo'" );
$_SESSION =mysql_fetch_array($reponse);
Or mysql me retourne un array numérotés ET associatifs!!
merci d'avance pour votre aide.
J'aimerais comprendre pourquoi dans $_SESSION les variables positionnées après une clé composé d'un nombre disparaissent.
je m'explique:
$_SESSION = array (
"nom" => "Dupont",
"123" => "3, rue du Paradis",
"ville" => "Marseille" );
Sur cette même page ca va fonctionner très bien, mais sur une page suivante $_SESSION['123'] et $_SESSION['ville'] auront disparues, alors que $_SESSION['nom'] sera bien équivalant a 'Dupont'
ca me pose un problème car j'aurais bien aimé que:
$reponse = mysql_query("SELECT * FROM test WHERE pseudo='$pseudo'" );
$_SESSION =mysql_fetch_array($reponse);
Or mysql me retourne un array numérotés ET associatifs!!
merci d'avance pour votre aide.
A voir également:
- Variables $_SESSION qui disparaissent !
- Chaine qui disparaissent - Accueil - TV & Vidéo
- Pourquoi mes contacts disparaissent - Accueil - Guide Android
- Pourquoi les likes disparaissent sur meetic ✓ - Forum Instagram
- Followers instagram qui disparaissent ✓ - Forum Instagram
- Au bout de combien de temps les flammes snap disparaissent - Forum Snapchat
11 réponses
Ce que je te disais c'est de nommer tes variables de sessions spécifiquement de façon à rendre nul tout risque d'écrasement par une autre variable de ton script.
Par exemple :
Et dans ton code donc, tu ne devras jamais utiliser une variable portant le nom $session.
C'est certes contraignant, mais au moins, c'est efficace.
Ils sont complètement stupide Free en laissant cette directive de php à on, à croire qu'ils encouragent le piratage des sites qu'ils hébergent...
Par exemple :
$_SESSION['session']['pseudo'] = 'toto'; $_SESSION['session']['id'] = 19;
Et dans ton code donc, tu ne devras jamais utiliser une variable portant le nom $session.
C'est certes contraignant, mais au moins, c'est efficace.
Ils sont complètement stupide Free en laissant cette directive de php à on, à croire qu'ils encouragent le piratage des sites qu'ils hébergent...
Effectivement, mysql_fetch_array renvoie bien, par défaut, le tableau dans les 2 types.
Pour moi, ton erreur ne peut venir que de ta requète.
Pour moi, ton erreur ne peut venir que de ta requète.
Il se trouve que l'erreur se produit même sans requête mysql simplement avec l'exemple donné au début.
Je pourrais contourner le problème en supprimant les entrées a clés numériques avec :
<?php
for ($I = 0; $I < 30; $I++)
{
//supprimer entrées et clés dont la clé est $I
}
?>
mais (1) je trouve pas le bon code pour ci-dessus et (2) j'aimerais bien comprendre :)
Je pourrais contourner le problème en supprimant les entrées a clés numériques avec :
<?php
for ($I = 0; $I < 30; $I++)
{
//supprimer entrées et clés dont la clé est $I
}
?>
mais (1) je trouve pas le bon code pour ci-dessus et (2) j'aimerais bien comprendre :)
Ton register_globals est à on, consulte la doc de ton hébergeur pour voir si tu ne peux pas le désactiver, sinon, va falloir que tu fasses avec en nommant tes variables de sessions en les préfixant.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je suis sur Free et je peux pas modifier mon register_globals avec un .htaccess.
Je ne crois pas pouvoir non plus préfixé mes variables vu que c'est mysql qui me sort un array numéroté.
Mais je trouve ca bizarre, pk ca serait aussi compliqué? je suis novice et je voudrais juste enregistrer dans $_SESSION des infos sélectionné dans ma BDD (pseudo, mdp, adresse, age, plat préféré...) et ainsi faire des pages personnalisés après avoir demandé un login.
Je ne crois pas pouvoir non plus préfixé mes variables vu que c'est mysql qui me sort un array numéroté.
Mais je trouve ca bizarre, pk ca serait aussi compliqué? je suis novice et je voudrais juste enregistrer dans $_SESSION des infos sélectionné dans ma BDD (pseudo, mdp, adresse, age, plat préféré...) et ainsi faire des pages personnalisés après avoir demandé un login.
Tu as essayé sans les guillemées ?
$_SESSION = array ( "nom" => "Dupont", 123 => "3, rue du Paradis", "ville" => "Marseille" ); echo $_SESSION[123];
c'est pas moi qui choisit 123, mysql me renvoi par exemple un array du type:
$_SESSION = array
(
"0" => "Dupont ",
"nom" => "Dupont",
"1" => "Marseille",
"ville" => "Marseille",
"2" => "1m75",
"taille" => "1m75",
....;
)
me donnera sur la page suivante avec print_r($_SESSION);
Array
(
)*rien quoi!*
alors que
$_SESSION = array
(
"pas_de_chiffre" => "Dupont"
"nom" => "Dupont"
"1" => "Marseille"
"ville" => "Marseille"
"2" => "1m75"
"taille" => "1m75"
....
)
me donnera sur la page suivante avec print_r($_SESSION);
Array
(
[pas_de_chiffre] => Dupont,
[nom] => Dupont,
)*seulement les entrées avant la clef numerique ici [1]*
$_SESSION = array
(
"0" => "Dupont ",
"nom" => "Dupont",
"1" => "Marseille",
"ville" => "Marseille",
"2" => "1m75",
"taille" => "1m75",
....;
)
me donnera sur la page suivante avec print_r($_SESSION);
Array
(
)*rien quoi!*
alors que
$_SESSION = array
(
"pas_de_chiffre" => "Dupont"
"nom" => "Dupont"
"1" => "Marseille"
"ville" => "Marseille"
"2" => "1m75"
"taille" => "1m75"
....
)
me donnera sur la page suivante avec print_r($_SESSION);
Array
(
[pas_de_chiffre] => Dupont,
[nom] => Dupont,
)*seulement les entrées avant la clef numerique ici [1]*