Portál AbcLinuxu, 11. května 2025 06:56

Dotaz: PHP problém se session

21.3.2009 13:14 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
PHP problém se session
Přečteno: 452×
Odpovědět | Admin
Příloha:

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.

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.3.2009 13:23 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: PHP problém se session
Odpovědět | | Sbalit | Link | Blokovat | Admin
Určite by bolo viac zaujímavé vidieť to presmerovanie, ako tú triedu pre session. :)

Ak sa tam pre session id používajú cookies, je možné, že sa zmení adresa (napr. sa pridá/odoberie www) a preto to cookie so SID už nie je prístupné.
21.3.2009 13:34 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Rozbalit Rozbalit vše Re: PHP problém se session
WWW se nepřidává ani neodebírá. Mám to na localhostu. Redirect provádím takto:
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í.

21.3.2009 16:23 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Rozbalit Rozbalit vše Re: PHP problém se session
Zajímavé je, že když do toho přeměrování vložím prázdnou smyčku(tučně), tak mi session fungujou v pořádku:
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.
21.3.2009 17:41 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Rozbalit Rozbalit vše Re: PHP problém se session
Ještě jsem pokročil o kousek dále, pokud provedu redirect přímo z index.php, tak session fungujou, ale jakmile to udělám z nějaké metody, tak už ne. Nevíte někdo, čím to může být?
21.3.2009 19:07 luky
Rozbalit Rozbalit vše Re: PHP problém se session
Odpovědět | | Sbalit | Link | Blokovat | Admin
V PHP už prakticky nedělám, takže jsem možná úplně mimo, ale jen z toho kousku co jsi ukázal, bych se zastavil u několika věcí:
A zbytek už bych asi raději ani nechtěl vidět :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.