URL: https://www.overclockers.at/coding-stuff/php_session_geht_verloren_123376/page_1 - zur Vollversion wechseln!
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
der essentielle teil vom code wäre gut.
hast dus mit verschiedenen browsern getestet?
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>
Code: PHPcase 6: echo "<td bgcolor='#CCCCFF'><a href='$elem' target='_blank'><center><img src='img/download.jpg' border='0'></center></a></td>"; break;
Soda habs grad mitn Netscape 7.2 probiert! Dort funktionierts einwandfrei.
...
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?
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:
anhängenCode: PHP'&'.session_name().'='.session_id()
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.
du sollst sie ja net an die dateinamen anhängen, sondern an die übrigen url's...Zitat von HatzkiUnd 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.
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.Zitat von watchoutok, 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:anhängenCode: PHP'&'.session_name().'='.session_id()
edit: rektal
Bitte schön das sind die zwei Scripts:
Hoffe die reichen zum Testen wenn net dann sagts Bescheid. Danke
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?
sry, aber session_is_registered ist alt und unaktuell...
verwende hingegen lieber isset($_SESSION['...'])
got leseproblem?
ZitatDas mit "isset" hab ich schon einbaut das ändert gar nix.
hmm, testest du unter "localhost"? wenn ja, dann verwende stattdessen die ip-adresse deines rechnersZitat von HatzkiSoda 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?
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.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025