2010-09-10 7 views
0

J'ai ce petit script PHP:

<?php 
session_start(); 

$var = array(); 
$var['key'] = 'Var -> Key'; 

if ($_GET['set']) { 
    $_SESSION = array(); 
    $_SESSION['var'] = 'Session -> Var'; 
} 
print_r($_SESSION); 
?> 

je me attends à retourner ce, pour voir = 0 et set = 1:

Array 
(
    [var] => Session -> Var 
) 

Cependant, il retourne pour voir ce = 0 (après 1 jeu = bien sûr):

Array 
(
    [var] => Array 
     (
      [key] => Var -> Key 
     ) 

) 

Avoir un look yourselfe ici: http://dev.gruppenunterkuenfte.de/index_test.php?set=1Ce qui semble arriver est que $ _SESSION ['var'] est remplacé par $ var. Mais seulement après le chargement de la page suivante.

Une idée pourquoi?

Je peux changer ma version de PHP dans mon interface d'administration des hébergeurs et j'ai essayé 5.2.11, 5.3.2 et 4.4.8.

Est-ce un paramètre que je peux modifier en PHP, donc il ne va pas écraser les variables de session? Cause Je n'ai pas ce problème sur un autre serveur.

Il semble y avoir une sorte de réglage pour que PHP écrive $ var dans $ _SESSION ['var'], si $ _SESSION ['var'] est défini.

Répondre

3

Désactiver l'option register_globals

+0

Merci, qui ont aidé .. Il était en fait la première chose que j'ai vérifié. Je l'ai éteint dans l'interface de mon hébergeur, mais je n'ai pas vérifié avec phpinfo(): -/Maintenant j'ai vérifié et j'ai réalisé qu'il n'était pas éteint. Merci pour l'aide rapide – JochenJung

1

rien d'étrange, c'est un comportement documenté.
il suffit de tourner register_globals hors