Autor Zpráva
Lameer
Profil *
Dobrý den,
jelikož jsem už vyzkoušel vše možné a nemožné a pořád to nevedlo k cíli, zkusím formu dotazu.
Dělám na svém webu přihlášení uživatelů kde využívám session. Základ webu je jedna hlavní stránka index.php, kde se podle proměnné vkládá (include) soubor php pro oblast hlavního rámce stránky. Pro zpracování dat z různých formulářů atd. používám php skripty které ihned po proběhnutí pomocí Header("Location: .... vracím na některou stránku v index.php.

Na začátku hlavního souboru index.php (i všech pho skriptů pro zpracování odeslaných dat) mám v první řádku session_start();
(v druhém řádku mám pro své testování zatím umístěný výpis session -
 echo $_SESSION['authautor']." / ".$_SESSION['auth']." / ".$_SESSION['authid']; 
)
Zápis session se děje v okamžiku přihlášení uživatele (když úspěšně komparuji jméno a heslo s DB) - přihlášení se děje na téže stránce index.php.

V čem je můj problém. Pokud se pohybuji v oblasti webu, kde používám odkazy přes index.php nemám nejmenší problém a vše funguje skvěle.
V okamžiku kdy dojde k odeslání dat na skriptu "bokem", session jsou aktivní i tam (resp pokud zruším přesměrování - nahradím manuálním odkazem - jsou správné hodnoty session proměnných zobrazené v prvním řádku php skriptu i předposledním řádku php skriptu (poslední řádek je ten odkaz)).
V okamžiku návratu na původní stránku jsou však hodnoty v session nulové... Zkoušel jsem i odkaz na jednoduchý skript:
<?
		    session_start();
 

echo $_SESSION["authautor"]." / ".$_SESSION["auth"]." / ".$_SESSION["authid"];

?>



Někdy mám pocit jakoby existence dvou sad proměnných -> pokud na stránce index.php nenačtu registrovaného uživatele (resp některá ze tří session je prázdná) - automaticky uživatele odhlásím - po novém přihlášení už vše funguje bez problému. Názvy proměnných jsem několikrát kontroloval (ale přesto zastávám názor, že člověk je tvor omylný).

Díky předem za rady, či (lehké) kopance směrem k vyřešení problému.
Alphard
Profil
Nemůže se stát, že se během nějakého přesměrování nebo procházení dostanete na stránku, kde chybí session_start()?
PS: pro testování máte jednodušší print_r($_SESSION);
Lameer
Profil *
to Alphard:
právě že po odeslání (formulářem) skriptu (má start_session), který zpracuje data (+ vypíše mi i ty session v předposledním řádku) a zobrazí odkaz na skript, který je uvedený výše, tak po kliknutí na ten odkaz mi to ty session nevypíše.

session_write_close() se používá předpokládám jen po zápisu hodnoty do session?
Alphard
Profil
Lameer:
session_write_close() se používá předpokládám jen po zápisu hodnoty do session?
Skoro bych řekl, že se nepoužívá. Nikde jsem to neviděl.
Na začátek vždy session_start(), zápis hodnoty $_SESSION['klíč'] = "hodnota"; a výpis třeba echo $_SESSION['klíč']; nic víc.
session_register() už také skončilo s PHP 4.
Lameer
Profil *
s tím register jsem se to dočetl :). Zkusím tedy zrušit i to session_write_close(), ale nemyslím, že by to bylo tímto, neb jsem to tam dodával, až když jsem hledal řešení.
Lameer
Profil *
nepomohlo. Hlavně nechápu to, proč to druhé přihlášení funguje. To bude beztak nějaká kravina, jako obvykle, jen ji najít :-(.
Alphard
Profil
Lameer:
To bude beztak nějaká kravina, jako obvykle, jen ji najít :-(.
Zřejmě. V informacích, které jste poskytl, nevidím chybu. Ale samozřejmě nejsem neomylný, třeba někomu něco padne do oka.
Jesli máte druhý kód podobný a funkční, tak hledejte odlišnosti. Je to pracné, ale jinak to asi nepůjde.
Lameer
Profil *
No mě právě nejvíc zaráží to, že stejný řádek
echo $_SESSION["authautor"]." / ".$_SESSION["auth"]." / ".$_SESSION["authid"]; 
mi jako předposlední řádek prvního skruiptu vypíše správné session, ale pokud kliknu na odkaz, ten samý odkaz jako první řádek vypíše prázdné proměnné. U tohoto mi už dochází fantazie :(. Ale i tak díky. Možná to zkusím dát na pár dní k ledu a pak se k tomu vrátit.
mckay
Profil
Lameer:
Ať hledám, jak hledám, nic nenacházím. Tohle jsou ty nejhorší chyby, zdá se mi. Vždycky, když jsem měl podobný problém, zapomněl jsem někde přidat na začátek session_Start();. Možná by jsi se měl podívat, jestli náhodou v nějakém skriptu nemáš dole session_destroy(); ;-).
Alphard
Profil
Lameer:
Ještě mě napadá, podívejte se, jestli se zachovává cookie, nebo jestli mizí.
Lameer
Profil *
Pánové, moc díky za pomoc. Pomohlo nakouknout do cookie!. Díky. Byla to neuvěřitelná kravina. Ale když se ukázaly po druhém přihlášení dvě cookie bylo jasno. Jedna byla z www.adresa.net, druhá byla jen z adresa.net. takže si jdu upravit volání těch vedlejších skriptů tak, aby to šlo vše přes www a bude premávat (vyzkoušeno na jednom skriptu). Proto to dvojí přihlašování (pak existovaly dvě cookie a vše bylo ok).
Díky moc za pomoc.
Lameer
Profil *
Omlouvám se, neměl to být odkaz.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: