Easeful Opublikowano 27 Marca 2013 Udostępnij Opublikowano 27 Marca 2013 W index.php mam takie coś: // [...] session_start(); $_SESSION['lol'] = 1; if (isset($_SESSION['lol'])) { echo " <form action=podstrona.php method=post> <input type='password' name='cokolwiek'> <input type='submit' value='Send'> "; } // [...] Forumularz się wyświetla, więc $_SESSION['lol'] jest ustalone. Wyczytałem, że tablica $_SESSION jest globalna, więc w podstronie podstrona.php do której przechodzi się za pośrednictwem formularza, wpisałem: // [...] if (isset($_SESSION['lol'])) { // [...] } else { echo "fail"; } // [...] Niestety, za każdym razem w podstrona.php wyświetlany jest napis "fail", co oznacza, że po przejściu do niej ta pozycja, cała tablica lub w ogóle cała sesja zostaje wykasowana. Czemu tak jest i jak to naprawić? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ALT Opublikowano 27 Marca 2013 Udostępnij Opublikowano 27 Marca 2013 A dałeś na początku session_start(); ? Edit:Jestę sztanę (666 postów) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 27 Marca 2013 Udostępnij Opublikowano 27 Marca 2013 Globalna o zasięgu jednego pliku. Jak zrobisz require albo include to będzie działało, ale w innym pliku nie będzie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 27 Marca 2013 Udostępnij Opublikowano 27 Marca 2013 $_SESSION jest tzw. superglobalną. Ale przed używaniem jej za każdym razem należy wywołać session_start. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 27 Marca 2013 Udostępnij Opublikowano 27 Marca 2013 Tak, sorry. Zapomniałem. ;) Dawno się nie używało PHP. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Easeful Opublikowano 27 Marca 2013 Autor Udostępnij Opublikowano 27 Marca 2013 Teraz działa, dzięki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 27 Marca 2013 Administratorzy Udostępnij Opublikowano 27 Marca 2013 PHP nie przenosi żadnych zmiennych pomiędzy wywołaniami. Zapamiętaj raz i na zawsze. Nawet to co przechodzi w $_SESSION czy $_POST nie przechodzi PHPem. To pierwsze jest zapisane w katalogu /tmp (poczytaj o kradnięciu sesji z tego samego serwera a innego konta), to drugie wysyła przeglądarka. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Easeful Opublikowano 27 Marca 2013 Autor Udostępnij Opublikowano 27 Marca 2013 A mam jeszcze jedno pytanie, załóżmy, że jest taka sytuacja: <?php session_start(); $_SESSION['lol'] = 7; ?> <html> <body> <table border=1> <tr> <td> <?php echo $_SESSION['lol']; ?> </td> </tr> </table> </body> </html> Czy tutaj nie będzie problemu? Tzn. chodzi mi o to, czy w tym samym pliku ale pomiędzy różnymi sekcjami skryptu PHP dane z $_SESSION będą współdzielone? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 27 Marca 2013 Administratorzy Udostępnij Opublikowano 27 Marca 2013 Tak, bo to jeden request strony www. Każdy zincludowany plik też je przejmie do czasu zakończenia (zwrócenia całości użytkownikowi) - ostatniego tagu PHP w całym tym ciągu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się