Session mit Case

Elementar

Mitglied
Moin Tutorials Team !

habe mal den morgen im forum mal durchforscht , und wollte ein case mit sessions machen. leider kommt man nicht auf das 2 te formular. Kann mir jemand nen tipp geben wo es hängt ?

Code:
  <?php
  if (isset ($_POST["page"]))  $page = $_POST["page"]; 
  else 
  $page = 1;
  switch($page)
  	{
  	//Seite1
  		case 1:
  			{
  			ob_start();
  			session_start ();
  			?>
 			<form action="session.php?&page=2" method="POST" name="eintragen">
 		 			<table class="su" width="90%">
 		 			 <tr>
 		 		 		<td align="left">&nbsp;&nbsp;<b>name</font></b></td>
 		 		 		<td><input class='inputbox' type='TEXT' name='name' value="<?php if (isset($_SESSION['name'])) echo $_SESSION['name'] ?>" size='35'></td>
 		 		 	</tr>
 		 		 	<tr>
 		 		 	<td>
 		 	 			<input class='button' class="inputbox" onclick="javascript:history.back(-1);" value="zur&uuml;ck...">
 		 		 		</td>
 		 		 		<td align="right">
 		 		 		<input class='button' class="inputbox" onclick="document.eintragen.submit();" value="weiter...">
 		 		 			
 		 		 		</td>
 		 		 	</tr>
 					</table>
  			</form>
  			<?
  			
  			}
  		break;
  		case 2:
  			{
  			ob_start();
  			session_start ();
  			$_SESSION['name']=$name;
  			?>
 			<form action="session.php?&page=3" method="POST" name="eintragen">
 		 			<table class="su" width="90%">
 		 		 	
 		 		 	<tr>
 		 		 		<td align="left">&nbsp;&nbsp;<b>name2</font></b></td>
 		 		 		<td><input class="inputbox" type="TEXT" name="name2" value="<?php if (isset($_SESSION['name2'])) echo $_SESSION['name2'] ?>"" size='35'></td>
 		 		 	</tr>
 		 		 	<tr>
 		 		 	<td>
 						
 		 		 		<input class='button' class="inputbox" onclick="javascript:history.back(-1);" value="zur&uuml;ck...">
 		 		 		</td>
 		 		 		<td align="right">
 		 		 		<input class='button' class="inputbox" onclick="document.eintragen.submit();" value="weiter...">
 		 		 			
 		 		 		</td>
 		 		 	</tr>
  
  			</table>
  			</form>
  			<?
  			}
  		break;
  		case 3:
  			{
  			ob_start();
  			session_start ();
  			$_SESSION['name2']=$name2;
  			echo "Wert1:".$_SESSION['name']; 
  			echo "Wert2:".$_SESSION['name2']; 
  			}
  		break;
  	}
  ?>

Die session soll dazu benutz werden , wenn man auf der letzten seite ist , zurück auf das 1 formular geht , das dort auch die schon getätigten eingaben in den input feldern steht.

Grüsse Elementar
 
In deinem Script wird die Variable $page nicht per $_POST[] übertragen.
Versuche:

PHP:
if (isset ($_GET["page"]))  $page = $_GET["page"];

Alles was in der Adressleiste erscheint ließt du über $_GET[], alles was innerhalb von Formularen gesandt wird kommt üblicherweise per $_POST[] solange "method=post" gesetztist.
Ansonsten macht das else mal einzeilig. Nicht das dieses ganze switch da mit rein Interpretiert wird ;)

Und für die Übersicht:
Du startes in jedem CASE einmal "ob_start()" und "session_start()". Die würde ich beide gaaaanz an den Anfang setzen. Haste dir n paar Zeilen erspart ;)
 
Zuletzt bearbeitet:
ZodiacXP hat gesagt.:
In deinem Script wird die Variable $page nicht per $_POST[] übertragen.
Versuche:

PHP:
if (isset ($_GET["page"])) $page = $_GET["page"];
;)

yep , jetzt komme ich auf das 2 te formular und dritte. Danke.habe jedoch 2 neue
probleme :confused: .

1. auf der letzten seite wird nur die 2 te variable ausgegeben
2. wenn ich auf der letzten seite bin , und zurück gehe kommt:
Aktuelle Seite nicht mehr gültig..., möchte aber das man zurück kommt ohne f5 zu drücken
geht das ?

hier mal der aktuelle code:
Code:
 <?php
 ob_start();
 session_start ();
 if (isset ($_GET["page"])) $page = $_GET["page"]; 
 else 
 $page = 1;
 switch($page)
 {
 //Seite1
 case 1:
 {
  
 ?>
 <form action="session.php?&page=2" method="POST" name="eintragen">
 	 <table class="su" width="90%">
  
 	 <tr>
 		<td align="left">&nbsp;&nbsp;<b>name</font></b></td>
 		<td><input class="inputbox" type="TEXT" name="name" value="<?php if (isset($_SESSION['name'])) echo $_SESSION['name'] ?>" size="35"></td>
 	 </tr>
 	 <tr>
 	 <td>
  
 		<input class="inputbox" onclick="javascript:history.back(-1);" value="zur&uuml;ck...">
 		</td>
 		<td align="right">
 		<input class="inputbox" onclick="document.eintragen.submit();" value="weiter...">
  
 		</td>
 	 </tr>
 	 </table>
 </form>
 <?
  
 }
 break;
 case 2:
 {
 $_SESSION['name']=$name;
 ?>
 <form action="session.php?&page=3" method="POST" name="eintragen">
 	 <table class="su" width="90%">
  
 	 <tr>
 		<td align="left">&nbsp;&nbsp;<b>name2</font></b></td>
 		<td><input class="inputbox" type="TEXT" name="name2" value="<?php if (isset($_SESSION['name2'])) echo $_SESSION['name2'] ?>"" size="35"></td>
 	 </tr>
 	 <tr>
 	 <td>
  
 		<input class="inputbox" onclick="javascript:history.back(-1);" value="zur&uuml;ck...">
 		</td>
 		<td align="right">
 		<input class="inputbox" onclick="document.eintragen.submit();" value="weiter...">
  
 		</td>
 	 </tr>
 </table>
 </form>
 <?
 }
 break;
 case 3:
 {
  
 $_SESSION['name2']=$name2;
 echo "
 Wert1:".$_SESSION['name']; 
 echo "Wert2:".$_SESSION['name2']; 
 echo "<a class='inputbox' href='javascript:history.back(-1);'>zur&uuml;ck...";
  
 }
 break;
 }
 ob_end_flush ();
 ?>
 
Zuletzt bearbeitet:
Hm. Also mal vorab: wenn du nochma gaaaaaaaanz am anfang phpinfo(); schreibs kriegs du alle Infos wie dein Apache (der der PHP interpretiert) funktioniert. Ich denke es hapert bei dir mit der Session.

Setze einfach mal über session_start() das hier:

session_name("sessid");

Du kannst dadrüber deiner Session einen Namen geben. Danach gehst du in deine form rein und schreibt in dein "action" folgendes:

"session.php?page=2&sessid=<?php echo session_id(); ?>"

Du siehst der erste Teil ist noch deiner. Die Seitenzahl musst du natürlich anpassen ;) Was dazugekommen ist ist ein "&" das eine neue Variable anzeigt die ich "sessid" genannt hab. Dort sollte genau das stehen was du bei session_name() angibst. Das PHP Script hinter dem "=" gibt dann die genaue ID dieser Session wieder (ein wildes Zahlen und Buchstabengewürfel) damit immer genau eine Session verwendet wird.
Es kann sein das auf Seite 1 die Session "abcdef123" gestartet wird und eine Seite weiter "hijkl78965" oder sowas gestartet wird. Damit gehen dir natürlich die Daten verloren. ;)

Sollte es immernoch nicht klappen setze noch zusätzlich ein session_lifetime() ein. Wie die Funktion funktioniert erfährst du unter PHP.net ;) oder frag hier nochmal wenn was unklar ist.
 
Zurück