PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Entwicklung und Softwaredesign (http://www.selfphp.de/forum/forumdisplay.php?f=14)
-   -   $_SESSION Speichert array nicht (http://www.selfphp.de/forum/showthread.php?t=19974)

McB_sser 06.08.2008 17:14:27

$_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 119377)
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);
?>


DokuLeseHemmung 06.08.2008 17:59:19

AW: $_SESSION Speichert array nicht
 
$_SESSION kann sehrwohl Arrays speichern!
Du machst also irgendwas falsch.
Aber KA was, ich blicke nicht durch(und will auch nicht - ist mir zu konfuß)

Tipp:
Drehe mal error_reporting() hoch. Dein Code müsste dich mit Meldungen zudonnern.

McB_sser 06.08.2008 18:11:01

AW: $_SESSION Speichert array nicht
 
bei error_reporting(E_ALL);

bekomme ich:


Notice: Use of undefined constant Menue - assumed 'Menue' in /opt/lampp/htdocs/Inhalt_Statisch/Inahalt/index.php on line 29

Notice: Use of undefined constant Menue - assumed 'Menue' in /opt/lampp/htdocs/Inhalt_Statisch/Inahalt/index.php on line 33

paar mal

und noch

Notice: Use of undefined constant Benutzer_Recht - assumed 'Benutzer_Recht' in /opt/lampp/htdocs/Inhalt_Statisch/Inahalt/index.php on line 43


allerdings hat das nichts mit meine datei zu tun die hat ein anderen pfad und dateinamen

DokuLeseHemmung 06.08.2008 18:56:45

AW: $_SESSION Speichert array nicht
 
Zitat:

allerdings hat das nichts mit meine datei zu tun
Du bist ja witzig....
Dann drehe es doch mal in der Datei hoch, die es auch braucht.

Und übrigens: Du solltest alle Meldungen beseitigen.
Also erheblich sauberer arbeiten.

McB_sser 06.08.2008 19:07:01

AW: $_SESSION Speichert array nicht
 
nagut da müsst ich mich mal rann machen wenn ich die datei einzeln öffne erzeugt error_reporting(E_ALL); keine fehlermeldung.

/Edit
was sagt die obere fehlermeldung eigentlich aus, das ich die Variable definieren soll wie z. B. das es ein String ist?

DokuLeseHemmung 06.08.2008 19:12:33

AW: $_SESSION Speichert array nicht
 
Glaube ich nicht!!
Alleine if(isset($_POST[Gen])) müsste schon eine Notice liefern.
Und das findet sich an dutzenden Punkten in deinem Script.

McB_sser 06.08.2008 19:17:12

AW: $_SESSION Speichert array nicht
 
ne ehrlich nicht, kommt nichts... habe noch mal geschaut ob error_reporting(E_ALL); eingefügt ist und ... nichts, kein fehler. zumindest von error_reporting(E_ALL);

foreach ist klar.

Edit:
habe den Script gekürzt. aufs wesenstlichste.

feuervogel 06.08.2008 19:59:23

AW: $_SESSION Speichert array nicht
 
Zitat:

Zitat von McB_sser (Beitrag 119331)
nagut da müsst ich mich mal rann machen wenn ich die datei einzeln öffne erzeugt error_reporting(E_ALL); keine fehlermeldung.

/Edit
was sagt die obere fehlermeldung eigentlich aus, das ich die Variable definieren soll wie z. B. das es ein String ist?

du verwendest $array[key] es müsste aber korrekterweise $array['key'] lauten (jaja, oder $array["key"]).

McB_sser 06.08.2008 20:13:55

AW: $_SESSION Speichert array nicht
 
Zitat:

Zitat von feuervogel (Beitrag 119335)
du verwendest $array[key] es müsste aber korrekterweise $array['key'] lauten (jaja, oder $array["key"]).

habe jetzt alles array["key"] umgeändert ergebnis ist in bezug meiner frage das selebe geblieben.

und ich bin mir nicht sicher aber ist das nicht egal? sollange der key zusammen ist?

z. B.
Korekt:
123
Das_ist_ein_Test

Falsch
1 2 3
Das ist ein Test

oder lieg ich da falsch?

feuervogel 07.08.2008 08:33:53

AW: $_SESSION Speichert array nicht
 
Zitat:

Zitat von McB_sser (Beitrag 119336)
habe jetzt alles array["key"] umgeändert ergebnis ist in bezug meiner frage das selebe geblieben.

und ich bin mir nicht sicher aber ist das nicht egal? sollange der key zusammen ist?

Bei assoziativen Arrays ist der Schlüssel vom Typ String. Ein String (http://de.php.net/manual/de/language.types.string.php) kann auf vier Arten definiert werden (siehe link). Keine davon sieht vor, einfach so was zu machen:

PHP-Code:

$string abc

und da spielt es auch keine rolle ob du abc oder a b c schreibst oder a_b_c..., denn das was Du da eigentlich verwendest, sind Konstanten: http://de.php.net/manual/de/language.constants.php zumindest wenn du die Zeichenkette ohne Leerzeichen schreibst.

Und: Ja, die Schlüssel von Arrays dürfen Leerzeichen enthalten:

PHP-Code:

<?php
error_reporting
(E_ALL);
   
$a["das ist ein key"] = "abc";
print_r($a);
?>

Bevor Du Dich mit Sessions beschäftigst, solltest Du Dir vielleicht erst mal die grundlegenden Datentypen von PHP zu Gemüte führen.

Und wenn Du jetzt willst, dass Dir jemand bei der Session hilft: Bitte reduziere Dein Skript soweit auf nötigste, um das Problem zu verdeutlichen, denn so unübersichtlich wie das jetzt grade ist, versteht da eh keiner was.


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:39:42 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.