Walczyłem z tym przez wiele godzin, ale nie mogę go uruchomić. Kiedy wykonuję przekierowanie na inną stronę PHP, wszystkie zmienne sesji są zerowe. Jestem na serwerze xampp.Indeks sesji PHP nieokreślony po przekierowaniu nagłówka?
session.php
<?php
session_start();
if(isset($_POST['submitted']))
{
$_SESSION['first_name'] = "MAX";
var_dump($_SESSION);
header("Location: http://localhost:8080/secure login/session2.php");
die();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859- 1" />
<title>You Logged In</title>
</head>
<body>
<form action="session.php" method="post">
<div align="center"><input type="submit" name="submit" value="Login" /></div>
<input type="hidden" name="submitted" value="TRUE" />
</form>
</body>
</html>
session2.php
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>You Logged In</title>
</head>
<body>
<div id="main">
<?php
echo '<pre>' . print_r($_SESSION, TRUE) . '</pre>';
echo 'You are welcome to session2.php <br></br>';
if (isset($_SESSION['first_name']))
{
echo $_SESSION['first_name'] . "<br></br>";
}
else
{
echo "Your session doesn't exist. I hate php <br></br>";
echo $_SESSION['first_name'];
}
?>
</div>
</body>
</html>
Sesja nie zapisać, a wyjście jest;
Array
(
)
You are welcome to session2.php
Your session doesn't exist. I hate php
Notice: Undefined index: first_name in C:\xampp\htdocs\secure login\session2.php on line 28
Próbowałem innych rzeczy, takich jak zmiany, gdzie zmienne sesji są zapisywane z xampp/tmp do innego katalogu, ale to nie rozwiązało problemu. Mam program, którego potrzebuję do zalogowania się użytkownika podczas przekierowania, ale zablokowało to mnie na więcej niż jeden dzień.
UPDATE:
Przestrzeń między katalogów nie był problem, to tymczasowo rozwiązać ten problem, ale to dlatego, że nie było w pamięci podręcznej dla nowego katalogu jeszcze. W każdym razie, przez kilka kolejnych dni debugowałem i zdałem sobie sprawę, że uruchomiłem dwa programy na moim lokalnym hoście. Obie używały sesji, więc jeśli jedna zakończy sesję, to również kończy sesję dla drugiej, ponieważ localhost jest jak nazwa domeny i istnieje tylko jedna sesja. W szczególności, logout.php z mojego innego programu nie niszczy sesji, ale raczej pomieszał ją, bo musisz usunąć pamięć podręczną przeglądarki, aby je anulować. Opróżniam tablicę sesji, niszczę sesję i niszczę ciasteczko, to był problem, więc nie mogłem się ponownie zalogować. Jedyne, co musiałem zrobić, to zniszczyć tylko sesję;
Patrz ->Killing off Global Session Variable as a logout button
Ten kod działa dla mnie tak, jak jest (cóż, nie jestem na lokalnym hoście, więc musiałem to zmienić, ale poza tym wszystko działa) – Rasclatt
Zobacz [link] (http://www.tutorialspoint.com/php/php_sessions.htm) – Bugfixer
@Matt dathew, jaki jest twój URL "http: // localhost: 8080/secure login/session2.php" co oznacza ? to "bezpieczne logowanie" to tylko przykładowe słowo - jaki jest twój absolutny URL "session.php"? –