Einzelnen Beitrag anzeigen
  #1  
Alt 06.08.2008, 16:14:27
McB_sser McB_sser ist offline
Anfänger
 
Registriert seit: Apr 2008
Beiträge: 66
$_SESSION Speichert array nicht


Problem gelöst, es lag an der value bezeichnung einer foreach schleife
z. B. foreach($_SESSION['TEST']) as $TEST){};
nach änderung des Values Variable funktionierte alles einwandfrei
ich interpretiere das Bezeichnung key Value nicht gleich sein darf in dem fall TEST
richtig also
z. B. foreach($_SESSION['TEST']) as $TEST_anderst){};

ich habe Debian lampp Standard istallation PHP Version 5.2.6

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Zitat:
register_globals=On
das solltest du abschalten dann wird es klappen.

und magic_quotes_gpc=On wohl auch abschalten

Beide fliegen mit PHP6 sowieso ersatzlos raus....
alles i.o. nach der anweisung.

Hallo Leute,

ich habe folgendes problem:

wenn ich array in eine Session Speichere vergisst die Session das Array, woran liegt das?

vorweg:
Ich hatte ein kleines Spiel gemacht was auf ein Server funste, jetzt kam es zum Server wechsel und dann kam ein Fehler, die Fehlermeldung weis ich nicht mehr aber es war quasi das ein ähnliches problem in bezug array Session und hatte mein Script komplett umgeschrieben.

jetzt habe ich wieder ein problem was Session und Array betrifft und will wissen was das ist.

man Drückt Generrieren über POST wird eine if(){}; angesprochen die lößt eine function(){}; die genneriert Karten array(Incremental => array(0 => x, 1 => x)) das wird einer SESSION angehängt
$_SESSION[Name] = array() // vor meiner schleife
// schleife
array_push($_SESSION[name], oben generiertes array)

unten lese ich es mit foreach aus

verhalten:
1. öffnen der seite --> foreach fehler --- logisch es gibt kein array
1.1. drücke generrieren
2. seite wird geladen, foreach gibt korreckt die gerade generierten Zahlen für die Karten aus.
3. Lade die Seite neu (kein reload) Wir haben ja eine SESSION aber --> foreach gibt nur das erste array in array aus und das zweite array in array mit leeren werten
4. Lade nochmal neu nun gibt es garnichts mehr. -->bei print_r steht nur 12 <-- zumindest jetzt

mein Script:
/EDIT:
habe mal den Script gekürzt
Auf Seite 2 ist eine starke zusammenfassung des Scripts
PHP-Code:
<?PHP
         
function Zufallskarten ()
         {
            unset(
$_SESSION[Zieh_Karten_Spieler]);
            unset(
$_SESSION[Zieh_Karten_Marco]);
            
// Genneriere fuer Player $Spieler 16 Karten
            
$_SESSION[Zieh_Karten_Spieler] = array();
            for(
$x=0$x<16$x++)
               {
                  unset(
$Stop);
                  while(empty(
$Stop))
                     {
                        unset(
$weiter);
                        
srand((double)microtime() * 1000000);
                        
$ZufallsZahl_Karte rand (714);
                        
srand((double)microtime() * 1000000);
                        
$ZufallsZahl_Farbe rand (14);
                        foreach(
$_SESSION[Zieh_Karten_Spieler] as $Zieh_Karten)
                           {
                            if(
$Zieh_Karten[0] == $ZufallsZahl_Karte and $Zieh_Karten[1] == $ZufallsZahl_Farbe)
                              {
                                 
$weiter True;
                              };
                           };
                        if(empty(
$weiter))
                          {
                             
array_push($_SESSION[Zieh_Karten_Spieler], array($ZufallsZahl_Karte,  $ZufallsZahl_Farbe));
                             
$Stop True;
                          };
                     };
               };
            
// Genneriere fuer Player Marco 16 Karten
            
$_SESSION[Zieh_Karten_Marco] = array();
            for(
$x=0$x<16$x++)
               {
                  unset(
$Stop);
                  while(empty(
$Stop))
                     {
                        unset(
$weiter);
                        
srand((double)microtime() * 1000000);
                        
$ZufallsZahl_Karte rand (714);
                        
srand((double)microtime() * 1000000);
                        
$ZufallsZahl_Farbe rand (14);
                        foreach(
$_SESSION[Zieh_Karten_Marco] as $Zieh_Karten_Marco)
                           {
                            if(
$Zieh_Karten_Marco[0] == $ZufallsZahl_Karte and $Zieh_Karten_Marco[1] == $ZufallsZahl_Farbe)
                              {
                                 
$weiter True;
                              }
                            else
                              {
                                foreach(
$_SESSION[Zieh_Karten_Spieler] as $Zieh_Karten_Spieler)
                                   {
                                      if(
$Zieh_Karten_Spieler[0] == $ZufallsZahl_Karte and $Zieh_Karten_Spieler[1] == $ZufallsZahl_Farbe)
                                         {
                                            
$weiter True;
                                         };
                                   };
                              };
                           };
                        if(empty(
$weiter))
                          {
                             
array_push($_SESSION[Zieh_Karten_Marco], array($ZufallsZahl_Karte,  $ZufallsZahl_Farbe));
                             
$Stop True;
                          };
                     };
               };
         };

if(isset(
$_POST[Gen]))
   {
Zufallskarten();echo "if PIST Gen";};
echo 
"<form method=\"POST\">
<input type=\"submit\" name=\"Gen\" value=\"Gennerieren\" />
</form>"
;

echo 
"<form method=\"POST\">
ist nur leerer post:
<input type=\"submit\" value=\"Refresh\" />
</form>"
;
////////////////
// TEST
echo "<BR><BR><BR>";

print_r($_SESSION[Zieh_Karten_Spieler]);

echo 
"<br><br><br>";

error_reporting(E_ALL);
?>

Geändert von McB_sser (07.08.2008 um 17:21:29 Uhr)
Mit Zitat antworten