Zdravím,
mám dosť zapeklitý problém so session po presmerovaní. Ale nieje to v tom, že by som zabudol na exit(práve v tom je ten problém).
Mám kód:
session_start();
$_SESSION['test']='test';
header('location:http://niekam.sk/inam');
exit;
Normálne sa session po presmerovaní stratí, ak tam zabudnete pridať exit, alebo die(). Ale ako vidíte ja ho tam mám((aj session_start a ani prázdne znaky neposielam pred headerom)). Apache log píše iba "undefined index test". Na online servery to funguje bez problémov, len na locale mi to blbne. Pred časom som nainštaloval nový Apeche 2.4 a PHP 5.4 na Win XP sp3, tak rozmýšľam či to nieje v tom. Ale netuším v čom. Ani Google, DJPW a Stackoverflow netušia...
Strata session premenných po presmerovaní
Re: Strata session premenných po presmerovaní
Skús ich poslať "manuálne"
http://stackoverflow.com/a/1861437/948909
http://stackoverflow.com/a/1861437/948909
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Strata session premenných po presmerovaní
neviem kde si nabral že s exitom alebo s die by to malo fungovať. Tú sú funkcie ktoré iba prerušia vykonávanie skriptu, takže čokoľvek za nimi sa ignoruje a pošle sa chybový kód. Nemá to na to najmenší vplyv, či tam exit máš alebo nemáš (v tomto tvojom konkrétnom prípade).
Problém u teba robí to, že session sa viaže na doménu. Ak to skúšaš na serveri, a presmerovávaš vrámci tej istej domény (teda len na inú podstránku) tak jasné že to fungovať bude. Ak to skúšaš lokálne a presmerovávaš napríklad z localhostu niekam na web, tak sa zmení doména a logicky tie session nemôže poznať
Problém u teba robí to, že session sa viaže na doménu. Ak to skúšaš na serveri, a presmerovávaš vrámci tej istej domény (teda len na inú podstránku) tak jasné že to fungovať bude. Ak to skúšaš lokálne a presmerovávaš napríklad z localhostu niekam na web, tak sa zmení doména a logicky tie session nemôže poznať
-
camo
Medium Expert
- Príspevky: 98
- Registrovaný: 05 sep 2009, 14:01
- Bydlisko: Lehota
- Kontaktovať používateľa:
Re: Strata session premenných po presmerovaní
pcsiete
Ani to nepomáha. ale už som prišiel na to čo to spôsobuje. Upravoval som Apache, aby akceptoval aj adresu http://www.localhost. Problém je keď pri presmerovaní to www neuvediem. Keď to tam pridám, tak to funguje.
//autoeditácia príspevku (25 Júl 2013, 14:38)
audiotrack:
Chceš mi povedať, že tebe to funguje aj bez exitu? To mi nerozprávaj. Stačí si zadať do Googlu seesion desn´t work after redirect.
Ani to nepomáha. ale už som prišiel na to čo to spôsobuje. Upravoval som Apache, aby akceptoval aj adresu http://www.localhost. Problém je keď pri presmerovaní to www neuvediem. Keď to tam pridám, tak to funguje.
//autoeditácia príspevku (25 Júl 2013, 14:38)
audiotrack:
Chceš mi povedať, že tebe to funguje aj bez exitu? To mi nerozprávaj. Stačí si zadať do Googlu seesion desn´t work after redirect.
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Strata session premenných po presmerovaní
no veď to sú dve rôzne (sub)domény. Jedna je *. a druhá je www.
takže si iba napísal to isté čo som ti písal ja
Len som použil iný príklad
a k tomu exitu: písal som že to ukončí skript. A teda aj zapíše session do súboru. Bez exitu ti to bude tiež fungovať, ak tie sesion pred redirectom zapíšeš "ručne". To čo popisuješ nie je chyba presmerovania alebo exitu, je to chyba človeka ktorý nepoužíva hlavu a naivne si myslí že môže čítať premenné ešte pred ich zapísaním
takže si iba napísal to isté čo som ti písal ja
a k tomu exitu: písal som že to ukončí skript. A teda aj zapíše session do súboru. Bez exitu ti to bude tiež fungovať, ak tie sesion pred redirectom zapíšeš "ručne". To čo popisuješ nie je chyba presmerovania alebo exitu, je to chyba človeka ktorý nepoužíva hlavu a naivne si myslí že môže čítať premenné ešte pred ich zapísaním
Re: Strata session premenných po presmerovaní
exit ukončuje script, teda je pokojne možné že sa pri jeho vykonaní volajú registrované (register_shutdown_function) procedúry na flushing pre sessions alebo niečo podobné.audiotrack napísal:neviem kde si nabral že s exitom alebo s die by to malo fungovať. Tú sú funkcie ktoré iba prerušia vykonávanie skriptu, takže čokoľvek za nimi sa ignoruje a pošle sa chybový kód. Nemá to na to najmenší vplyv, či tam exit máš alebo nemáš (v tomto tvojom konkrétnom prípade).
Problém u teba robí to, že session sa viaže na doménu. Ak to skúšaš na serveri, a presmerovávaš vrámci tej istej domény (teda len na inú podstránku) tak jasné že to fungovať bude. Ak to skúšaš lokálne a presmerovávaš napríklad z localhostu niekam na web, tak sa zmení doména a logicky tie session nemôže poznať
Podľa mňa je lepšou praktikou vytvoriť si zjednotenú funkciu pre ukončovanie scriptov a zapisovanie sessions, a následne ju registrovať, ako to robiť všade osamostatnene. Aj keď to síce ešte teraz nevyužíva, v budúcnosti sa mu ten exit za presmerovaním môže zísť.
-
camo
Medium Expert
- Príspevky: 98
- Registrovaný: 05 sep 2009, 14:01
- Bydlisko: Lehota
- Kontaktovať používateľa:
Re: Strata session premenných po presmerovaní
pcsiete:
Práve takú funkciu používam. No a keďže po exite sa session zapíše automaticky, tak je zbytočné meditovať nad nejakými explicitnými zápismi.
//autoeditácia príspevku (25 Júl 2013, 15:15)
audiotrack:
Prečo mám dojem, že si na začiatku nemal na mysli adresy s www a bez www. Však mohol si to napísať rovno, aj keď v tej dobe som to už vedel aj ja. Či sa mýlim
?
Práve takú funkciu používam. No a keďže po exite sa session zapíše automaticky, tak je zbytočné meditovať nad nejakými explicitnými zápismi.
//autoeditácia príspevku (25 Júl 2013, 15:15)
audiotrack:
Prečo mám dojem, že si na začiatku nemal na mysli adresy s www a bez www. Však mohol si to napísať rovno, aj keď v tej dobe som to už vedel aj ja. Či sa mýlim