PHP Session geht verloren
Hatzki 31.08.2004 - 14:05 1151 15
Hatzki
Pinky in action
|
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!!! Woran könnt das liegen? tia
|
Phobos
✝
|
der essentielle teil vom code wäre gut. hast dus mit verschiedenen browsern getestet?
|
Hatzki
Pinky in action
|
<?
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: 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
|
Soda habs grad mitn Netscape 7.2 probiert! Dort funktionierts einwandfrei.
...
|
Rektal
Here to stay
|
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
Legendundead
|
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: '&'.session_name().'='.session_id()
anhängen edit: rektal
|
Hatzki
Pinky in action
|
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
Legendundead
|
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
|
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: '&'.session_name().'='.session_id()
anhängen
edit: rektal 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
|
Bitte schön das sind die zwei Scripts:
Hoffe die reichen zum Testen wenn net dann sagts Bescheid. Danke
|
Hatzki
Pinky in action
|
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?
|
tomstig
OC Addicted
|
sry, aber session_is_registered ist alt und unaktuell...
verwende hingegen lieber isset($_SESSION['...'])
|
Hatzki
Pinky in action
|
got leseproblem? Das mit "isset" hab ich schon einbaut das ändert gar nix.
|
watchout
Legendundead
|
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?
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
|
Aha gut zu wissen, danke! 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.
|