Autor Zpráva
Meldo
Profil
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
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
Máš session_start(); aj na začiatku súboru, v ktorom Session nastavuješ, alebo len v tom druhom súbore?
Meldo
Profil
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
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
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
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
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
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
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();

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: