Autor | Zpráva | ||
---|---|---|---|
joe Profil |
#1 · Zasláno: 5. 7. 2009, 18:51:39
Zdravím,
asi jsem za tu chvíli, co jsem s PHP nedělal zapomněl základy, ale nechtějí mi fungovat sessions. Nastíním situaci: na začátku se úspěšně nastartují a pak, pokud se odešle formulář, tak nastavím do sessions nějakou proměnnou a přesměruju pomocí header(); Ale po přesměrování v proměnné v sessions nic není. Nechápu to. Cookies mám zapnuté, nefunguje mi to ani na localhostu ani na serveru. Neví někdo kde by mohla být zrada? Díky |
||
tiso Profil |
#2 · Zasláno: 5. 7. 2009, 19:06:22
joe - z toho popisu neviem... Pokiaľ máš session_start a každej stránke ktorú si v popise problému spomínal tak by to malo fungovať.
|
||
joe Profil |
#3 · Zasláno: 5. 7. 2009, 19:14:51 · Upravil/a: joe
tiso
Popravdě, taky bych z toho popisu nebyl moudrý... ale, myslim si, že tam nic špatně nemám, tedy aspoň nic špatnýho nevidim, už asi půl hodiny do toho koukám a nechápu to. Takhle to funguje: session_start(); $_SESSION['i']++; var_dump($_SESSION['i']); A když přepíšu podobně jak to mám teď session_start(); if(..post..) { $_SESSION['i'] = 'a'; header(..); exit; } if(isset($_SESSION['i'])) { // a sem se to nedostane... echo '...'; $_SESSION['i'] = null; } Je na tom snad něco logického špatně? (možná že v tom něco nevidím...) |
||
Nox Profil |
#4 · Zasláno: 5. 7. 2009, 19:28:56
joe
cože je v té podmínce? předpokládám, že se to tam nedostane, protože je splněná a redirectne se to |
||
Alphard Profil |
#5 · Zasláno: 5. 7. 2009, 19:30:20
Ten druhý kód máte přesně takhle? Jestli ano, musí zpracování nutně ukončit na 5. řádku (vzhledem k exit) a pokud není splněna první podmínka, tak zase není nastavená $_SESSION['i'].
Jestli jsou to úseky dvou různých kódů, tak u druhé ukázky chybí session_start a bylo by vhodné vkládat do pre samostatně, aby to bylo jasné. |
||
joe Profil |
#6 · Zasláno: 5. 7. 2009, 19:36:13
Nox
Tam je podmínka, jestli byl odeslaný formulář. Když je, tak se má něco uložit do sessions a redirectnout na tu samou stránku (aby nedocházelo k posílání dat znovu po F5). Problém je v tom, že pokud se to přesměruje, tak po přesměrování v té session nic není. Alphard To je všechno v jednom souboru. První podmínka (ř. 2) se vykoná jen pokud je fomulář odeslaný, pak se tedy má uložit session a přesměrovat. Tím pádem po přesměrování na tu samou stránku se podmínka (2) znovu nevykoná a má být splněna i podmínka (8), kde mi to ale pořád píše null. Nechápu. Ale možná v tom je něco logického špatně, je horko :( |
||
Alphard Profil |
#7 · Zasláno: 5. 7. 2009, 22:19:03
Nevím, mně to funguje, upravil jsem to do následující (univerzálnější) podoby:
<?php session_start(); if(isset($_GET['start'])) { $_SESSION['i'] = 'a'; header ("location: http://".$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'], TRUE, 303); exit; } if(isset($_SESSION['i'])) { // a sem se to dostane... echo 'je to ok'; $_SESSION['i'] = null; } ?> Volam localhost/cesta/script.php?start=1 a dostanu výsledek "je to ok". |
||
joe Profil |
#8 · Zasláno: 5. 7. 2009, 22:44:44
Alphard
Když tohle samostatně uložím, tak mi to taky funguje. Nevím v čem je problém, že mi to nejde v tom mém kódu. Oprášil jsem svůj framework a tam to jde normálně, i když se jedná vlastně jen o dvě jednoduché stránky, chtěl jsem to udělat jednoduše. Ale dál mě do toho koukat už nebavilo... však znáte to :) díky za pomoc. |
||
Alphard Profil |
#9 · Zasláno: 5. 7. 2009, 22:50:08
joe:
„Když tohle samostatně uložím, tak mi to taky funguje. Nevím v čem je problém, že mi to nejde v tom mém kódu.“ Změnil jsem jenom dvě věci, napsal jsem adresu pro přesměrování a dopsal první podmínku, tak hledejte tam. |
||
stepanka Profil * |
#10 · Zasláno: 6. 7. 2009, 21:38:17
joe
To už se mi stalo hodněkrát, chybu máš asi v nastavení serveru. Pokud si necháš vypsat phpinfo() a máš v řádku "Session Support" hodnotu "enabled" (pokud ne, může být chyba zde), tak nejspíš nema apache zapisovaci prava v adresari "/var/lib/php/session". Ten adresář se možná může trochu lišit, jeho přesnou cestu najdeš v phpinfo() na řádku session.save_path. Pokud nema Apache/PHP zapisovací práva pro tento adresář, tak si nemůže danou session zapamatovat. |
||
joe Profil |
#11 · Zasláno: 6. 7. 2009, 22:07:32
Alphard
Právě proto jsem psal, že to nechápu, proč takhle primitivní věc nefunguje. Ale už to mám funkční a jinak. stepanka Díky. Tím to nebylo, sessions normálně fungovaly, jen ne v tom případě jak jsem napsal. Když jsem to zkusil jinak, tak to ale šlo. Ale dobrý nápad, aspoň vím jaké další místa mám prozkoumat :) |
||
stepanka Profil * |
#12 · Zasláno: 7. 7. 2009, 08:27:06
joe
a kde byla teda chyba? |
||
peta Profil |
#13 · Zasláno: 7. 7. 2009, 13:25:33
error_reporting jako prvni radek a vypsalo by ti to chybu. Pravdepodobne prepisujes jiz uzavrenou header.
|
||
Časová prodleva: 6 let
|
|||
resident Profil * |
#14 · Zasláno: 15. 5. 2015, 08:12:01
Mám podobný problém
if(isset($_SESSION['nacteno'])) { $nacteno=$_SESSION['nacteno']; echo "<a href=\"#top\">Stránka načtena:$nacteno</a>"; } else echo "<a href=\"#top\">ještě nenavštívil</a>"; $_SESSION['nacteno'] = time(); na prvním řádku mám session_start(); nepíše mi to žádný error ale nefunguje mi to. potřebuji docílit jestli uživaetl už zobrazil nějakou stránku či nikoliv. |
||
Keeehi Profil |
#15 · Zasláno: 15. 5. 2015, 09:02:34
Kde je session_start? Nebo máš nastavené session.autostart na true?
|
||
resident Profil * |
#16 · Zasláno: 15. 5. 2015, 21:44:00
úplně na začátku stránky jako 1 line.
|
||
Davex Profil |
resident:
„úplně na začátku stránky jako 1 line“ Jakto? Na prvním řádku skriptu snad máš <?php , ne? Doporučuji se odpíchnout od kódu [#7] Alpharda.
|
||
Časová prodleva: 9 let
|
0