Skocz do zawartości

session_start()


Easeful

Rekomendowane odpowiedzi

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

  • Administratorzy

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

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

  • Administratorzy

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...