PHP Session geht verloren

Seite 1 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/php_session_geht_verloren_123376/page_1 - zur Vollversion wechseln!


Hatzki schrieb am 31.08.2004 um 14:05

Sers,

Folgendes: ich ruf über ein PHP Script einen Downloadlink auf von irgendeiner Datei zB.: .doc oder .zip. Er macht mir dann auch brav das Downloadfenster auf und ich kanns runterladen.

Nur wenn ich dann wieder zurück auf meiner PHP Seite bin und auf einen anderen Link klicke der mich auf die nächste Seite bringt dann flieg ich sofort aus der Session raus!!! :eek:

Woran könnt das liegen?

tia


Phobos schrieb am 31.08.2004 um 14:07

der essentielle teil vom code wäre gut.
hast dus mit verschiedenen browsern getestet?


Hatzki schrieb am 31.08.2004 um 16:36

Code: PHP
<?
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">

<html>

<head>
<title>step5t_cm_bot</title>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>

<body>
<?
if (session_is_registered ("user_eingeloggt"))
{

$d = $_GET['d'];
$s = $_GET['s'];
$n = $_GET['n'];
$c_key = $_GET['c_key'];
$cn = $_GET['cn'];
$tn = $_GET['tn'];

include("connect.php");

$sql = "SELECT ex_id AS id_status, ex_name, ex_error, unix_timestamp(ex_postdate), ex_show, ex_id AS id_del, ex_url, ex_id AS id_ul, ex_id FROM exercises WHERE ex_c_id = $c_key ORDER BY ex_postdate DESC, ex_name;";

if (! $succ = mysql_select_db($_SESSION['db'], $con))
{
	echo mysql_error();
	exit;
}

if (! $res = mysql_query($sql, $con))
{
	echo mysql_error();
	exit;
}
?>
<a name="anfang"></a>

<? echo "<p class='text'><a href='exercise_new.php?d=$d&s=$s&n=$n&c_key=$c_key&cn=$cn&tn=$tn' target='Arbeitsbereich'>Neue Aufgabe hinzufügen</a></p>"; ?>

<table cellspacing="5" cellpadding="2" width="100%">

<colgroup>
	<col width="47%">
	<col width="18%">
	<col width="13%">
	<col width="5%">
	<col width="5%">
	<col width="5%">
	<col width="5%">
	<col width="2%">
</colgroup>

<tr>
	<td bgcolor="#00FF99"><p class="fett">Aufgabe</p></td>
	<td bgcolor="#00FF99"><p class="fett">Status</p></td>
	<td bgcolor="#00FF99"><p class="fett">Datum</p></td>
	<td bgcolor="#00FF99"><p class="fett">Freigabe</p></td>
	<td bgcolor="#00FF99"><p class="fett">Löschen</p></td>
	<td bgcolor="#00FF99"><p class="fett">DL</p></td>
	<td bgcolor="#00FF99"><p class="fett">UL</p></td>
	<td bgcolor="#00FF99"><p class="fett">...</p></td>
</tr>

<tr>
<?
while ($row = mysql_fetch_array($res, MYSQL_ASSOC))
{
	$i = 0;
	foreach ($row as $elem)
	{
		switch ($i) 
		{
			case 0: $id_status = $elem;
					break;
			case 1: $en = $elem;
					echo "<td bgcolor='#CCCCFF'><p class='text'>$elem</p></td>";
					break;
			case 2: $error = $elem;
					switch ($error) 
					{
						case 0:	echo "<td bgcolor='#CCCCFF'></td>";
								break;
						case 1: echo "<td bgcolor='#CCCCFF'><img src='img/new.gif' border='0'></td>";
								break;
						case 2: echo "<td bgcolor='#CCCCFF'><img src='img/updated.gif' border='0'></td>";
								break;
						case 5:	echo "<td bgcolor='#CCCCFF'><p class='fehler-upload'>Falscher Dateityp!</p></td>";
								break;
						case 6: echo "<td bgcolor='#CCCCFF'><p class='fehler-upload'>Datei zu groß!</p></td>";
								break;
						case 7: echo "<td bgcolor='#CCCCFF'><p class='fehler-upload'>Falsche Datei ausgewählt!</p></td>";
								break;
						case 8: echo "<td bgcolor='#CCCCFF'><p class='fehler-upload'>Datei schon vorhanden!</p></td>";
								break;
						case 9: echo "<td bgcolor='#CCCCFF'><p class='fehler-upload'>Upload fehlgeschlagen!</p></td>";
								break;
					}
					break;
			case 3: $datum = date("d. M. Y", $elem);
					echo "<td bgcolor='#CCCCFF'><p class='text'>$datum</p></td>";
					break;
			case 4: if ($elem == 'y')
						echo "<td bgcolor='#CCCCFF'><a href='exercise_lock.php?d=$d&s=$s&n=$n&c_key=$c_key&cn=$cn&tn=$tn&id=$id_status&status=$elem&err=$error' target='Arbeitsbereich2'><center><img src='img/gruen.jpg' border='0'></center></a></td>";
					else
						echo "<td bgcolor='#CCCCFF'><a href='exercise_lock.php?d=$d&s=$s&n=$n&c_key=$c_key&cn=$cn&tn=$tn&id=$id_status&status=$elem&err=$error' target='Arbeitsbereich2'><center><img src='img/rot.jpg' border='0'></center></a></td>";
					break;
			case 5: echo "<td bgcolor='#CCCCFF'><a href='exercise_del.php?d=$d&s=$s&n=$n&c_key=$c_key&cn=$cn&tn=$tn&id=$elem' target='Arbeitsbereich2'><center><img src='img/pkb.jpg' border='0'></center></a></td>";
					break;
			case 6: echo "<td bgcolor='#CCCCFF'><a href='$elem' target='_blank'><center><img src='img/download.jpg' border='0'></center></a></td>";
					break;
			case 7: echo "<td bgcolor='#CCCCFF'><a href='exercise_upd.php?d=$d&s=$s&n=$n&c_key=$c_key&cn=$cn&tn=$tn&id=$elem' target='Arbeitsbereich'><center><img src='img/upload.jpg' border='0'></center></a></td>";
					break;
			case 8: echo "<td bgcolor='#CCCCFF'><a href='step6_cm.php?d=$d&s=$s&n=$n&c_key=$c_key&cn=$cn&tn=$tn&ex_id=$elem' target='Arbeitsbereich'><img src='img/pfeil.jpg' border='0'></a></td>";
					break;
		}
		$i++;
	}
	echo "</tr>";
}
?>
</table>
<p class="text"><a href="#anfang">Zum Seitenanfang</a></p>
<?
}

else
{?>
	<p class="fehler">Sie haben nicht die Berechtigung diese Seite zu öffnen.</p>
<?}
?>
</body>
</html>

soda das is das ganze Script jetzt.

Da essentielle Teil wär ja eigentlich nur:
Code: PHP
case 6: echo "<td bgcolor='#CCCCFF'><a href='$elem' target='_blank'><center><img src='img/download.jpg' border='0'></center></a></td>";
					break;

Nein, mit einem anderen Browser hab ichs noch nicht getestet, aber das ist in dem Fall auch nicht wirklich von belang, weil dort sowieso nur IE verwendet wird. ;)


Hatzki schrieb am 01.09.2004 um 13:59

Soda habs grad mitn Netscape 7.2 probiert! Dort funktionierts einwandfrei.

...


Rektal schrieb am 07.09.2004 um 11:24

Ich wuesst net warums net gehen soll. Auch wenn du auf href weiterleitest und keine trans_session und keine Cookies hast, beim Browser back ist die Session ja wieder da.

Ist die vorhergehende Seite eine POST-Seite?


watchout schrieb am 07.09.2004 um 11:24

ok, was mir auffällt:
verwende statt session_is_registered() isset($_SESSION[...])
der teil wo die session _erstmals_ gestartet wird tät interessant sein

sonst an jede url:

Code: PHP
'&amp'.session_name().'='.session_id()
anhängen

edit: rektal :p


Hatzki schrieb am 07.09.2004 um 11:47

Nein, die vorhergehende Seite ist keine POST Seite.

Das mit "isset" hab ich schon einbaut das ändert gar nix.

Und wenn i die Session ID und den Session Name an die URL anhäng dann kann i die Datei net downloaden, weil a ja mit die Session Sachen nix anfangen kann im Dateinamen.


watchout schrieb am 07.09.2004 um 12:16

Zitat von Hatzki
Und wenn i die Session ID und den Session Name an die URL anhäng dann kann i die Datei net downloaden, weil a ja mit die Session Sachen nix anfangen kann im Dateinamen.
du sollst sie ja net an die dateinamen anhängen, sondern an die übrigen url's...


dio schrieb am 07.09.2004 um 12:30

Zitat von watchout
ok, was mir auffällt:
verwende statt session_is_registered() isset($_SESSION[...])
der teil wo die session _erstmals_ gestartet wird tät interessant sein

sonst an jede url:
Code: PHP
'&'.session_name().'='.session_id()
anhängen

edit: rektal :p
sollte normal nicht nötig sein, da es sonst ohne auch funktioniert. lad die betroffenen php files mal hoch, damit man sich des selbst genauer anschaun kann.


Hatzki schrieb am 07.09.2004 um 12:56

Bitte schön das sind die zwei Scripts:

Hoffe die reichen zum Testen wenn net dann sagts Bescheid. Danke


Hatzki schrieb am 07.09.2004 um 16:27

Soda hab grad was rausgefunden. Und zwar wenn ich das ganze auf einen anderen Rechner lade und meinen dann faktisch als Client verwend und nicht direkt als Server dann funktionierts im IE auch ohne das ich aus der Session flieg!!!

Kann das tatsächlich was damit zu tun haben das ich direkt am Server getest hab? Vorallem warum gehts mitn Netscape und mitn IE net? Is da irgendeine Einstellung die ma ändern muss?

:confused:


tomstig schrieb am 07.09.2004 um 17:56

sry, aber session_is_registered ist alt und unaktuell...

verwende hingegen lieber isset($_SESSION['...'])


Hatzki schrieb am 08.09.2004 um 08:35

got leseproblem?

Zitat
Das mit "isset" hab ich schon einbaut das ändert gar nix.


watchout schrieb am 09.09.2004 um 21:31

Zitat von Hatzki
Soda hab grad was rausgefunden. Und zwar wenn ich das ganze auf einen anderen Rechner lade und meinen dann faktisch als Client verwend und nicht direkt als Server dann funktionierts im IE auch ohne das ich aus der Session flieg!!!

Kann das tatsächlich was damit zu tun haben das ich direkt am Server getest hab? Vorallem warum gehts mitn Netscape und mitn IE net? Is da irgendeine Einstellung die ma ändern muss?

:confused:
hmm, testest du unter "localhost"? wenn ja, dann verwende stattdessen die ip-adresse deines rechners

edit: erklärung: durch tests kann ich sagen dass der internet-explorer _absolut_ unterschiede zwischen ausführung lokal v. der hdd, ausführung von "http://localhost" und "http://deineipadresse" macht, wobei er sich bei der variante mit der ip-adresse so verhält wie er es auch gegenüber dem web macht


Hatzki schrieb am 11.09.2004 um 18:57

Aha gut zu wissen, danke! :cool:

Ich verwend zwar nicht localhost aber meinen Computernamen den ich im Hosts-File als Alias für meine IP angeben hab. Das wird wahrscheinlich aufs gleiche kommen. ;)




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025