"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

PHP Session geht verloren

Hatzki 31.08.2004 - 14:05 1151 15
Posts

Hatzki

Pinky in action
Avatar
Registered: Apr 2000
Location: Dort wo DU nicht..
Posts: 1017
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

✝
Avatar
Registered: Jan 2003
Location: 1050
Posts: 2111
der essentielle teil vom code wäre gut.
hast dus mit verschiedenen browsern getestet?

Hatzki

Pinky in action
Avatar
Registered: Apr 2000
Location: Dort wo DU nicht..
Posts: 1017
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

Pinky in action
Avatar
Registered: Apr 2000
Location: Dort wo DU nicht..
Posts: 1017
Soda habs grad mitn Netscape 7.2 probiert! Dort funktionierts einwandfrei.

...

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
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

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
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

Pinky in action
Avatar
Registered: Apr 2000
Location: Dort wo DU nicht..
Posts: 1017
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

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
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

Here to stay
Registered: Nov 2002
Location: Graz
Posts: 4873
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

Pinky in action
Avatar
Registered: Apr 2000
Location: Dort wo DU nicht..
Posts: 1017
Bitte schön das sind die zwei Scripts:

Hoffe die reichen zum Testen wenn net dann sagts Bescheid. Danke
step4_dl_bot_62347.txt (downloaded 47x)
hit_count_62348.txt (downloaded 38x)

Hatzki

Pinky in action
Avatar
Registered: Apr 2000
Location: Dort wo DU nicht..
Posts: 1017
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

OC Addicted
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
sry, aber session_is_registered ist alt und unaktuell...

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

Hatzki

Pinky in action
Avatar
Registered: Apr 2000
Location: Dort wo DU nicht..
Posts: 1017
got leseproblem?

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

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
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
Bearbeitet von watchout am 09.09.2004, 21:34

Hatzki

Pinky in action
Avatar
Registered: Apr 2000
Location: Dort wo DU nicht..
Posts: 1017
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. ;)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz