PHP сессия пуста

Я сделал простую функцию входа в PHP.
Моя проблема заключается в том, что при обращении браузера к странице нет атрибутов сеанса login_success.php

После того, как я сохраню данные в сеансе в checklogin.php, я проверил, содержал ли он какие-либо данные, набрав: print_r ($ _ SESSION); Напечатано 2 объекта. Тем не менее, когда я пытаюсь сделать то же самое в login_success.php , оно приходит пустым.

Я использую xampp и сафари.

login.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Login</title>
</head>

<form name="form1" method="post" action="checklogin.php">
<input name="tb_username" type="text"/>
<input name="tb_password" type="password" />
<input type="submit" name="Submit" value="Login">
</form>

<body>
</body>
</html>

checklogin.php

<?php

$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="user"; // Table name

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// username and password sent from form
$myusername=$_POST['tb_username'];
$mypassword=$_POST['tb_password'];

// To protect MySQL injection
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);

// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){

// Register $myusername, $mypassword and redirect to file "login_success.php"$_SESSION['myusername']= "myusername";
$_SESSION['mypassword']= "mypassword";

//print_r($_SESSION);

header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
?>

login_success.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php
session_start();
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>

<?php print_r($_SESSION); ?>
<body>
</body>
</html>

0

Решение

Согласно документации php: session_start

session_start () создает сеанс или возобновляет текущий сеанс на основе идентификатора сеанса, переданного через запрос GET или POST, или переданного через cookie.

Так добавь session_start() в начало вашей страницы checklogin.php.

0

Другие решения

Просто используйте <?php session_start() ?> в верхней части страницы.

0

Настройте свой php.ini как это:

session.auto_start = 1;

Или выполните следующую команду в первой строке:

ini_set('session.auto_start', 1);
0

Помимо использования session_start()также может быть несколько других причин:

  1. На вашем сервере заполнено дисковое пространство. Это когда-то случилось
    дело со мной Попробуйте проверить доступное место на вашем сервере по адресу
    root ‘/’ (df -h).
  2. Каталог сессий на вашем сервере
    (где файлы сессий пишутся) имеет некоторое разрешение
    проблемы.
0
По вопросам рекламы [email protected]