[PHP]Session, Matrix weiterleiten

Rain

Lieutenant
Registriert
Mai 2003
Beiträge
704
Hi. Ich hab derzeit mal etwas lust gehabt mich mit php zu beschäftigen und bin aber recht unerfahren in php, quasi anfänger. bis jetzt hat eigentlich alles ganz gut funktioniert was ich so versucht habe, aber das mit den sessions gelingt mir nach mehrstündigen probieren/suchen/weiterprobieren/etc. nicht!

Hab mal ein kleines programm geschrieben um das problem vereinfacht zu zeigen. auf der ersten seite soll eine einfach 6x6- Matrix mit zufälliger 0 oder 1 an jeweilige stelle erstellt werden. der inhalt wird in dem $_SESSION - array gespeichert und soll eigentlich auf seite 2 wieder abgerufen werden aber es funktioniert einfach net.

Tja, nun hab ich wirklich viel gesucht im Internet (wahrscheinlich ist die lösung meines problems so einfach, dass es net nennenswert ist es als fehler zu beschreiben?! ^^) und hoffe ihr könnt mir helfen. Hier die codes:

session1:

PHP:
<?PHP 

session_start();
$_SESSION[$i] = array();
$_SESSION[$i][$j] = array();

$anz_mat = 6;
for ($i=1;$i<$anz_mat;$i++) { 
	for ($j=1;$j<$anz_mat;$j++) {
		
	{$_SESSION[$i][$j] = rand(0, 1);}
	}
echo "<br>"; }

for ($i=1;$i<$anz_mat;$i++) { 
	for ($j=1;$j<$anz_mat;$j++) {
		
	{echo $_SESSION[$i][$j];}
	}
echo "<br>"; }

header("Location: www.http://rain85.ra.funpic.de/test/session2.php?".session_name()."=".session_id());
?>

session2:

PHP:
<?PHP 
session_start();

$anz_mat = 6;

for ($i=1;$i<$anz_mat;$i++) { 
	for ($j=1;$j<$anz_mat;$j++) {
		
	{echo $_SESSION[$i][$j];}
	}
echo "<br>"; }

?>
 
Es wäre vll gut zu wissen was nicht geht.
Und guck mal nach wie dein Server Konfiguriert ist. Also ob Session Autostart auf 1 ist etc.

Das kannst du alles mit phpinfo(); rausfinden.
 
$_SESSION[$i] = array();
$_SESSION[$i][$j] = array();
Der Sinn dieser Zeilen erschließt sich mir nicht, einerseits weil $i und $j zu der Zeit gar nicht definiert ist, andererseits weil $_SESSION + $_SESSION[] jeweils Arrays sein sollen und nicht etwa $_SESSION[] + $_SESSION[][] - letzteres soll offensichtlich ja nur Zahlen speichern... kann mich auch irren dennoch ergeben die Zeilen für mich keinen SInn.
 
hi, danke für die antworten! die anzeige von phpinfo hab ich mal mit angehangen, besagter eintrag ist wohl auf 0 (off). es ist net mein server, bin bei funpic.de .. kA ob ich da selber was umstellen kann (schau ich dann mal).

das mit den arrays ist ne berechtigte andeutung. ich weiß leider net ob die syntax für das $_SESSION mit weiteren arrays so richtig ist. im grunde solls ja n zwei-dimensionales array sein (x-y - matrix halt). die syntax so wie ich sie habe, habe ich nur weil ichs irgendwo anders (link grad net mehr parat) so ähnlich gesehen habe, kann gut sein dass darin der fehler liegt.

was nicht geht? ... naja, alles ^^ es zeigt genau gar nix an auf der seite. rechtsklick --> quelltext anzeigen zeigt aber die html-struktur an (html head body). es geht übrigens auch net einen einzelnen eintrag zuzeigen zu lassen also zB echo $_SESSION[1][1]
 

Anhänge

  • Clipboard01.jpg
    Clipboard01.jpg
    79,3 KB · Aufrufe: 216
Dass die Weiterleitung auf session2.php überhaupt funktioniert, ist ja schon ein wunder:
header("Location: www.http://rain85.ra.funpic.de/test/session2.php?".session_name()."=".session_id());

Normalerweise musst du die Session auch nicht per GET weiterleiten. Hast du evtl. Cookies im Client deaktiviert? Wird die Matrix denn auch überhaupt erstellt? Schmeiss mal die Weiterleitung in session1.php raus, und ersetz das durch
PHP:
print_r($_SESSION);
und überprüfe, ob die Werte gesetzt wurden.

Ansonsten finde ich nichts, außer den doppelten geschweiften Klammern der Schleifen
PHP:
for(...) { 
{$_SESSION[$i][$j] = rand(0, 1);} 
}
und
PHP:
for(...) {
{echo $_SESSION[$i][$j];} 
}
Das ist jeweils ein paar zuviel ;) Ansonsten könnte es vielleicht helfen, wenn du $i und $j zwischen dem Füllen mit Werten und dem Ausgeben der Werte in session1.php zurücksetzt:
PHP:
for ($i=1;$i<$anz_mat;$i++) { 
    for ($j=1;$j<$anz_mat;$j++) {
        
    $_SESSION[$i][$j] = rand(0, 1);
    }
}

unset($i, $j);

for ($i=1;$i<$anz_mat;$i++) { 
    for ($j=1;$j<$anz_mat;$j++) {
        
    echo $_SESSION[$i][$j] . '<br />';
    }

Ach, und was du da baust ist keine 6er-Matrize, sondern nur eine 5er-Matrize =)
PHP:
for($i = 1; $i < $anz_mat; $i++)
1, 2, 3, 4, 5

Für eine 6er-Matrize müsste es
PHP:
for($i = 1; $i <= $anz_mat; $i++)
heißen.
 
Zuletzt bearbeitet:
hiho. danke für deine antwort und die tipps! das mit dem www.http... ist ja mal peinlich, voll übersehen und du hast natürlich auch mit der matrix recht, ist nur ne 5er so
//aber anzahl hätte auch 100x100 sein können , geht ja nur ums prinzip ^^
die doppelten klammern sind nun auch weg ... so, fasselfehler alles ^^

wenn ich
PHP:
print_r($_SESSION);
mache gibt er mir:
Code:
Array ( [] => Array ( [] => Array ( ) ) [1] => Array ( [1] => 0 [2] => 1 [3] => 1 [4] => 0 [5] => 0 ) 
[2] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 [5] => 1 ) [3] => Array ( [1] => 1 [2] => 0 [3] => 1 [4] => 1 [5] => 0 )
 [4] => Array ( [1] => 1 [2] => 1 [3] => 0 [4] => 0 [5] => 0 ) [5] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 [5] => 1 ) )
ich blick da grad erst ma nur ansatzweise durch um ehrlich zu sein. die erste zahl in [ ] hat ein weiteres array, soweit klar. aber dann .. hm, vielleicht wird da jemand anderes schlauer draus. aber auf jedenfall wird die matrix erstellt wenn ich in session1.php mit ner for-schleife das $_SESSION - array abfrage mit echo $_SESSION[$i][$j] .. nur auf session2.php kommt nix an

das mit dem unset hat mich auch leider net weiter gebracht.
 
Setze am besten den <pre> tag um deine Ausgabe des Arrays. Ist dann wesentlich übersichtlicher.
Im empfehler dir mal das Zend Framework anzugucken. Da gibts eine Klasse für Sessions. Damit ist es wesentliich komfortabler zu arbeiten.

Und es könnte eventuell daran liegen, das du den Session Namen weiter gibts und nicht die Session Id.
 
na das sieht nur so merkwürdig aus wegen dem print_r vermute ich mal, bei ner normalen for-schleife habe ich ne ordentliche matrix nur aus 0en und 1en. Das was du mir gesagt hast, werde ich bei gelegenheit mir mal anschauen. nur den session namen? aber ich geb da doch noch session_id() mit an, gebe ich damit net die id weiter?


EDIT:

Juhu, habs hinbekommen, er überträgt. ich bin net ganz sicher wieso, aber ich glaub es lag an den
PHP:
$_SESSION[$i] = array(); 
$_SESSION[$i][$j] = array();

Allerdings hab ich schon wieder n neues Problem, aber ich glaub dazu mache ich dann noch n neues Thema auf, hat nichts mehr mit session zu tun .. (oder doch?!)
 
Zuletzt bearbeitet:
Zurück
Oben