Ankündigung

Einklappen
Keine Ankündigung bisher.

Session-Problem...

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gast-Avatar
    Ein Gast erstellte das Thema Session-Problem....

    Session-Problem...

    Morgen...

    Nach dem ich das Problem mit der Verbindung zu meiner Datenbank hinbekommen habe habe ich ein neues Problem bei dem ich selber nicht mehr weiter komme...

    Ich soll als Übungsprojekt eine Kursverwaltung schreiben, bei der der User über die Page Kurse abfragen kann. Das ganze läuft über PHP und MySQL. Das ganze könnt ihr euch

    > hier <

    mal anschauen.

    Das ganze klappt bis jetzt auch ganz gut...nur eine Sache bekomme ich nicht hin.

    Nach der Kursauswahl (unten) bekommt der User Infos über den gewählten Kurs. Danach soll er mit einem Link wieder zu seiner Auswahl kommen...

    Ich bin mittlerweile so weit dass ich weiss das ich das nur über eine Session lösen kann. Das hat mit Testvariablen auch wunderbar geklappt. Auch das übliche Header-Problem hab ich in den Griff bekommen (habe das session_start() direkt in die erste Zeile gesetzt weil ich gelesen habe dass davor nichts kommen darf...so funzt das dann auch, nur ob es ein eleganter Programiertstil ist kann ich nicht beurteilen....).

    Nun das Problem: Leider bekomme ich es nicht hin dass nach Betätigung des "Rück"-Links die vorherige Auswahl erscheint...

    Ich poste mal die Scripts dafür. Nicht wundern wegen der mysql_connect(); , das Script ist von der Localen Variante...

    Die Linkreihenfolge sieht wie folgt aus:

    Zuerst wird die Seite auswahl_kurs.php aufgerufen. Von ihr aus wird auf der rechten Seite ein iframe (iframe_kursauswahl_neu.php) gestartet. Nach auswahl da wird unten die Seite iframe_kursauswahl.php angezeigt. Nach auswahl des Kurses werden die Infos in iframe_kursbeschreibung.php angezeigt. Mit dem "Rück"-Link soll der User wieder zurück zu iframe_kursauswahl.php kommen, wobei die vorherige Auswahl wieder angezeigt werden soll. Nur das funzt halt nicht, es kommt eine Fehlermeldung. Also denke ich dass die Variable nicht übergeben werden.

    Hier die Scripts:

    auswahl_kurs.php

    Code:
    <?php 
    session_start();
    $session = 0;
    session_register("session");
    // Session wird eingeleitet
    ?>
    
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Auswahl Kurs</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body>
    
    
    <table width="750" height="200"  border="1" cellpadding="0" cellspacing="0">
      <tr>
        <td width="300" height="200" align="left" valign="top">
    	
    	<?php
    		
    		
    		// Verbindung zur Datenbank wird hergestellt
    		mysql_connect();
    		mysql_select_db("schulungen");
    		
    		// Datenbankabfrage
    		$mysql_abfrage = "SELECT * FROM kurskategorie";
    		$mysql_ergebnis = mysql_query($mysql_abfrage);
    		$num = mysql_num_rows($mysql_ergebnis);
    		
    		if ($num == 0) echo "Keine Datensätze gefunden";
    		
    		// Auswahl der Kurskategorie
    		echo "
    Bitte wählen Sie eine Kurskategorie aus: 
    
    ";
    		
    		echo "<form action='iframe_kursauswahl_neu.php?<?=SID?>' target='iframe_rechts' method = 'post'>";
    		
    		echo "<select name='kurs_kat_nr_send'>";
    		
    		// Ausgabe der gesuchten Datenbankinhalte
    		while ($datensatz = mysql_fetch_assoc($mysql_ergebnis))
    		{
    			echo "<option value='" . $datensatz["kurs_kat_nr"] . "'>" . $datensatz["kurs_kat_nr"] . " " . $datensatz["kurs_kat"] . "</option>";
    			
    		}
    		
    		
    		echo "</select>";
    	
    		echo "
    
    ";
    		
    		echo "<input type='submit' name='gesendet'>";
    		echo "<input type='reset'>";
    		
    		
    		echo "</form>";
    		
    		// Schließung der Datenbank
    		mysql_close();
    
    ?>
    	
    	
    	</td>
        <td width="300" height="100" align="left" valign="top">
    		
    		
    		<div align="left">
    			<iframe name=iframe_rechts src="iframe_blank.php" frameborder=0 width=300 height=140></iframe>
    		</div>	
    	</td>
      </tr>
      <tr align="left" valign="top">
        <td height="400" colspan="2">
    		
    		
    		<div align="left">
    			<iframe name=iframe_unten src="iframe_blank.php" frameborder=0 width=600 height=400></iframe>
    		</div>	
    	
    	</td>
      </tr>
    </table>
    </body>
    </html>

    iframe_kursauswahhl_neu.php

    Code:
    <?php
    session_start();
    // Session wird eingeleitet
    ?>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Kursauswahl_neu</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body>
    
    
    Bitte wählen Sie die Kursart aus:
    	
    	<?php
    	
    
    		
    		// Verbindung zur Datenbank wird hergestellt
    		mysql_connect();
    		mysql_select_db("schulungen");
    		
    		// Abfrage der Datenbank
    		$mysql_abfrage = "SELECT DISTINCT kurs_art_nr, kurs_art FROM kursbeschreibung WHERE kurs_kat_nr = $kurs_kat_nr_send";
    		
    		$mysql_ergebnis = mysql_query($mysql_abfrage);
    		$num = mysql_num_rows($mysql_ergebnis);
    		
    		
    
    ?>
    
    
    
    	
    	<form action="iframe_kursauswahl.php?<?=SID?>" target="iframe_unten" method="post">
    	<select name="kurs_art_nr_send">
    
    <?php 
    		
    		// Ausgabe der abgefragten Inhalte
    		if ($num == 0) echo "Keine passenden Datensätze gefunden
    
    ";
    		
    		while($datensatz = mysql_fetch_assoc($mysql_ergebnis))
    		
    		{
    		echo "<option value='" . $datensatz["kurs_art_nr"] . "'>" . $datensatz["kurs_art_nr"] . " " . $datensatz["kurs_art"] . "</option>";
    		}
    
    
    ?>
    	</select>
    	
    	
    
    
    	
    	<input type="submit"><input type="reset">
    
    
    	</form>	
    
    	
    
    </body>
    </html>

    iframe_kursauswahl.php

    Code:
    <?php
    session_start();
    // Session wird eingeleitet
    
    $session = $kurs_art_nr_send;
    // Session-Wert wird auf Wert der Kursart-Abfrage gesetzt
    
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Kursauswahl</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body>
    <table width="180" height="15" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td>
    	
    	<?php
    
    		// Verbindung zur Datenbank wird hergestellt
    		mysql_connect();
    		mysql_select_db("schulungen");
    		
    		// Abfrage Datenbank
    		$mysql_abfrage = "SELECT * FROM kursbeschreibung WHERE kurs_art_nr = $session";
    		
    		$mysql_ergebnis = mysql_query($mysql_abfrage);
    		$num = mysql_num_rows($mysql_ergebnis);
    		
    		
    
    		echo '<table width="580" height="360" border="0" cellpadding="0" cellspacing="0">';
    		  echo '<tr>';
    			echo '<td align="left" valign="top">';
    		
    		
    			
    			
    			echo '<form action="iframe_kursbeschreibung.php?<?=SID?> method="post">';
    				
    				echo "Folgende Kurse können sie bei uns belegen: 
    
    ";
    					echo '<table   border="1" cellspacing="0" cellpadding="0">';
    						echo "<tr>";
    							echo "<th></th><th>Kursnummer</th> <th>Kurbezeichnung</th></tr>";
    						
    						
    				// Ausgabe der Inhalte aus der Datenbank
    								while ($datensatz = mysql_fetch_assoc($mysql_ergebnis))
    								{
    									
    									echo "<tr><td><input type='radio' name='kurs_nr_send' value='" . $datensatz["kurs_nr"] . " 'checked></td><td>"  . $datensatz["kurs_nr"] . "</td><td>" . $datensatz["kurs"] . "</td></th> ";
    								}
    						
    								
    						echo "</tr>";
    					echo "</table>";
    		
    			echo'
    ';
    			echo'<input type="submit"> <input type="reset">';
    	?>
    	</form>
    	
    	
    	
    	</td>
      </tr>
    </table>
    </body>
    </html>

    iframe_kursbeschreibung

    Code:
    <?php
    session_start();
    // Session wird eingeleitet
    ?>
    
    
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Unbenanntes Dokument</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body>
    
    
    <?php
    
    	// Verbindung zur Datenbank wird hergestellt
    	mysql_connect();
    	mysql_select_db("schulungen");
    	
    	// Abfrage der Datenbank
    	$mysql_abfrage = "SELECT * FROM kursbeschreibung WHERE kurs_nr = $kurs_nr_send";
    	
    	$mysql_ergebnis = mysql_query($mysql_abfrage);
    	
    	$num = mysql_num_rows($mysql_ergebnis);
    	
    	echo "Test Session $kurs_art_nr";
    	
    	// Ausgabe der Inhalte der Datenbank
    	while ($datensatz = mysql_fetch_assoc($mysql_ergebnis))
    	{
    		echo '<table border="0" width="400" cellspacing="0" cellpadding="0">';
    			
    			echo '<tr>';
    				echo '<td width="150">Kursnummer:
     <u>' . $datensatz["kurs_nr"] . '</u></td>';
    				echo '<td width="300">Kursbezeichnung:
     <u>' . $datensatz["kurs"] . '</u></td>';
    			echo '</tr>';
    			
    			echo '<tr>';
    			
    				echo '<td width="400">
    
    
    Kursbeschreibung:
     ' . $datensatz["kursbeschreibung"] . '</td>';
    			echo '<tr>';
    			
    		echo '</table>';
    				
    	}
    
    
    
    
    
    echo '
    
    zur&uuml;ck zur Auswahl </p>';
    ?>
    </body>
    </html>
    besten Dank...

    Lapje

  • HStev
    antwortet
    Was mir grad auffällt warum nutzt du eigentlich session_register() ?

    Wenn Sie wollen, dass ihr Script unabhängig von der Einstellung von register_globals funktioniert, müssen Sie stattdessen das Array $_SESSION verwenden, weil $_SESSION-Einträge automatisch registriert werden. Wenn Sie in Ihrem Script session_register() verwenden, funktioniert es nicht in Umgebungen, in denen die PHP-Anweisung register_globals deaktiviert ist.
    und wahrscheinlich dürfte bei dir register_globals off sein weils default einstellung ist

    [edit]
    register_globals: Wichtiger Hinweis: Seit PHP 4.2.0 ist die Standardeinsteillung für die Konfigurationsoption register_globals off. Die PHP Community ermutigt Alle, sich nicht auf diese Option zu verlassen und Alternativen wie superglobals zu verwenden.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    also ich weiss nicht ob das jetz richtig so war...aberich habe das einfach mal auf jede Seite eingebunden...und jedesmal wurde mir:

    string(0) ""

    angezeigt...

    Ich habe auch mla den localen tmp-Ordner für die Session-ID kontroliert...

    Die Nummer wäre sess_66bdd24bac0fd8ee40abd4b56588b27e ... das scheint ja noch ok zu sein...in der ID steht dann:
    session|s:1:"1";

    aber sollte da nicht was anderes drinn stehen ?

    Nur noch mal zur Erklärung bitte....bei Sessions...wird dann eine Variable in der Session gespeichert, oder werden automatisch alle Variablen solange aufrecht gehalten bis der Browser geschlossen wird (oder nach Timeout) ? Sonst müsste doch in der ID der Wert der Kurswahl stehen...und der wäre "4"...

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet


    $_POST steht doch in überhaupt keiner Konkurrenz zu echo? Hmm, vielleicht kommen wir trotzdem nochmal zurück zu deinem Problem. Was gibt denn "var_dump(SID)" aus?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ja..schon...ist so jetz ja auch verständlich...

    Aber ich hab das bisher so verstanden dass echo nur zur ausgabe auf dem Bildschirm benutzt wird. Alle variablen die ich bis jetzt übergeben habe wurden entwedre nur definiert, oder ich habe mit $_POST gearbeitet. Das mit den Sessions ist halt vollkommenes Neuland für mich (im Grunde wie das ganze PHP.. )

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    @Lapje: Bruchpilot meinte dich.

    Ich mein mach doch mal

    PHP-Code:
    <?php
    $hallo 
    "Hallo";
    $hallo;
    ?>
    Die Ausgabe ist leer. Was soll auch passieren ohne print/echo? Und du willst ja, dass die SID ausgegeben wird.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Nicht Ausgabe auf dem Bildschirm, sondern Schreiben in den Ausgabestrom.
    Und das ist der Eingabestrom des Browsers. Und über diesen einzigen Weg müssen erst die header und dann der Inhalt laufen
    PHP-Code:
    <html>
        
    <?php
    echo '';
    echo 
    '    <body>blub</body></html>';
    ?>

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    öhm..wer ist jetzt gemeint ? Ich verliere ein wenig den Überblick..

    ich dachte halt immer das ECHO nur zur ausgabe auf den Bildschirm dient...zumindest habe ihc es so bis jetzt verstanden...

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Und wie soll das Deiner Meinung nach geschehen?
    Welche Übertragungswege php<->Webserver<->Browser stehen Dir sonst noch zur Verfügung?

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Dann pfefferst du es aber in den leeren Raum.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    was ich mich nur frage:

    <form action="iframe_kursauswahl.php?<?php echo $SID ?>" target="iframe_unten" method="post">

    wieso dieses echo ? ich möchte ja nichts ausgeben, sondern einfach nur dass die ID mit übermittelt wird...

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    Zitat von Zergling
    Was soll eigentlich dieses SID?
    SID ist eine Konstante, die PHP beim Aufruf von session_start() generiert. Der Inhalt der Konstanten variiert abhängig davon, ob der Client das Sessioncookie akzeptiert oder nicht.
    Wenn er es akzeptiert enthält SID lediglich eine leere Zeichenkette, ansonsten eine Zeichenkette im Format session_name() . '=' . session_id().

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Da fragst Du mich zuviel...ich habe das so gemacht weil ich es so gelesen habe...

    definiert werden müsste dass direkt in den ersten Zeilen im Code...dachte dass das so richtig wäre...

    Lapje

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Was soll eigentlich dieses SID? Wo definierst du das und warum hängst dus einfach so per ? an die URL? Müsste es nicht

    ?PHPSESSID=<?php print session_id(); ?>

    heißen?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Hab das ganze jetzt so umgeändert:

    Code:
    echo '<form action="iframe_kursauswahl_neu.php?'.SID.'" target="iframe_rechts" method = "post">';
    und

    Code:
    <form action="iframe_kursauswahl.php?<?php echo SID ?>" target="iframe_unten" method="post">
    habe das auch online geändert...hat sich aber nichts getan...

    @CIX88

    Warum ist dsa Blödsin? Wenn Du keine Vernünftige Erkärung zu Deinen Post's geben kannst dann verschone uns bitte damit, ich hasse solche neunmalklugen Post die im Grunde nichts zur Problemlösung beitragen...

    allen anderen besten dank...

    Einen Kommentar schreiben:

Lädt...
X