Autor | Zpráva | ||
---|---|---|---|
Meldo Profil |
#1 · Zasláno: 22. 8. 2013, 14:30:45
Zdravím. Už druhý deň riešim problém pri čítaní a zápise SESSION. Ako som po dlhom pátraní zistil, SESSION sa dajú čítať iba súborom, ktorý ich vytvoril.
Ak mám súbor a.php a vytvorím SESSION, v súbore b.php túto SESSION neviem prečítať. Existuje nejaké nastavenie alebo niečo, čo mi to umožní? |
||
Someone Profil |
#2 · Zasláno: 22. 8. 2013, 14:32:05 · Upravil/a: Someone
Meldo:
„po dlhom pátraní zistil“ To jsi zjistil špatně. Session je globální proměnná, kterou můžeš přečíst kdekoliv. Akorát musíš session nastartovat ( session_start() ) v obou souborech.
|
||
Meldo Profil |
************** kod je nizsie *****************
|
||
xROAL Profil |
#4 · Zasláno: 22. 8. 2013, 14:56:03
Máš
session_start(); aj na začiatku súboru, v ktorom Session nastavuješ, alebo len v tom druhom súbore?
|
||
Meldo Profil |
#5 · Zasláno: 22. 8. 2013, 14:58:28 · Upravil/a: Meldo
V oboch. Ved si otvor tie linky. V tej prvej sa mi pekne vypíše. V druhej nie.
Tak este raz. Ukážka: test_wirte.php <?php session_start(); $_SESSION['zapis_session'] = "ANO"; ?> test_read.php <?php session_start(); print_r($_SESSION); ?> |
||
xROAL Profil |
#6 · Zasláno: 22. 8. 2013, 15:06:03
Pýtal som sa len pre istotu, nakoľko keď si v súbore A nastavím
$_SESSION['preco-to-nejde']="ok"; a potom použijem print_r($_SESSION); tak mi to vypíše obsah aj bez toho aby som použil session_start(); . PHP to totiž bude brať ako úplne obyčajné pole. Avšak ak chcem aby sa toto zachovalo naprieč súbormi, musím použiť session_start(); .
Príklad ktorý si teraz pridal, ako sám isto vidíš - funguje. |
||
Joker Profil |
#7 · Zasláno: 22. 8. 2013, 15:06:20
Meldo:
Vypadá to, že session se předá správně mezi adresami, takže bude asi problém v tom, jakým způsobem se tam ukládají ty hodnoty. Jak se nastavuje ta hodnota do session? |
||
Meldo Profil |
#8 · Zasláno: 22. 8. 2013, 15:13:41
xROAL:
ak zavolas subor test_write a potom test_read, nieco ti to vypise? Lebo mne len prazdne pole. Ale malo by vypisat $_SESSION['zapis_session']. Joker: Jak se nastavuje ta hodnota do session? Moc nerozumiem co presne sa pytas. Dal sompresny kod dvoch vzorovych suborov aj s linkom. Nic ine tam nieje. |
||
xROAL Profil |
Meldo:
„ak zavolas subor test_write a potom test_read, nieco ti to vypise? Lebo mne len prazdne pole.“ Áno, vypíše mi Array ( [zapis_session] => ANO ), to isté mi vypisuje aj www.demoshop.monumental.sk/ajax-skuska.php. Úvodná stránka však vypíše len Array ( [preco-to-nejde] => ok ). Avšak tá by rovnako mala vypisovať aj [zapis_session]. Čo sa však nedeje a preto to vyzerá tak, že v úvodnej stránke chýba session_start(); , alebo je tam možno iná chyba, ktorá tomu bráni (?).
Možno by bolo rozumnejšie poslať kód z indexu, ktorý sa stará o Session. Pokiaľ viem, identifikátor sessionu sa ukladá do Cookies. Bez toho server nevie, ktoré hodnoty patria ktorej relácii. Nemáš cookies zakázané v prehliadači? |
||
Meldo Profil |
#10 · Zasláno: 22. 8. 2013, 15:21:29
Hmm no mne vypisuje iba Array ( ). Takze neviem neviem. Cookies mam zapnute. Tie funguju bez problemov. Skusam to na 4 pc ktore tu mam k dispozicii a nikde ani ťuk. :/
|
||
Joker Profil |
#11 · Zasláno: 22. 8. 2013, 15:52:03
Zajímavé, mně se nic nenastavilo dokud jsem měl existující session. Jakmile jsem založil novou (smazal cookie), už to funguje tak jak píše xROAL.
Meldo: „Moc nerozumiem co presne sa pytas.“ Jak vypadá ten kód z úvodní stránky, který ukládá věci do session? |
||
Meldo Profil |
#12 · Zasláno: 22. 8. 2013, 16:12:46
Myslis v tej prvej ukazke demoshop.monumental.sk? Zhruba nejak takto:
ob_start(); header("Content-Type: text/html; charset=utf-8"); session_start(); // mnozstvo mnozstvo kodu... ob_start(); $sablona = include(........); ob_end_flush(); ob_end_clean(); ob_end_flush(); |
||
Časová prodleva: 11 let
|
0