Portál AbcLinuxu, 11. května 2025 06:56
Dělám jeden projekt v PHPku a jako úložtě pro session používám DB přes session_set_save_handler. Všechno funguje v pořádku do doby, než použiju redirect z formuláře, kdy session proměnné zmizí. Před redirectem pro jistotu volám i session_write_close, ale ani to nepomáhá.
Pomocí google jsem hledal, ale k žádnému použitelnému výsledku jsem se nedopracoval :(
V příloze je soubor se třídou pro práci se sessions.
function redirect($url) { session_write_close(); //$url='https://'.$_SERVER["SERVER_NAME"].eregi_replace('index.php(.*)','',$_SERVER["REQUEST_URI"]).$url; //echo "<script>document.location.href='$url';</script>\n"; header('HTTP/1.1 301 Moved Permanently'); header('Location: https://'.$_SERVER["SERVER_NAME"].eregi_replace('index.php(.*)','',$_SERVER["REQUEST_URI"]).$url); exit; }
A protokol https používám i před přesměrováním.Zajímavé je že toto na začátku index.php funguje:
if(!isset($_SERVER['HTTPS'])) { header('HTTP/1.1 301 Moved Permanently'); header('Location: https://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]); exit; }
a když zkusím zadat http://localhost/aplikace/index.php?bla=bla tak se provede přesmerování na https://localhost/aplikace/index.php?bla=bla žádné session data se neztratí.
function redirect($url) { session_write_close(); for($i=0;$i<10000;$i++) { for($j=0;$j<1000;$j++) { } } $url='https://'.$_SERVER["SERVER_NAME"].eregi_replace('index.php(.*)','',$_SERVER["REQUEST_URI"]).$url; if(headers_sent()) { echo "<script>document.location.href='$url';</script>\n"; } else { header('HTTP/1.1 301 Moved Permanently'); header('Location: '.$url); } exit; }A když tu vnější smyčku snížím jenom na 1000 provádění, tak sessions opět nefungujou.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.