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> 

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

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

Поэтому добавьте session_start() в начало страницы checklogin.php.

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

Настройте свой php.ini следующим образом:

 session.auto_start = 1; 

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

 ini_set('session.auto_start', 1); 

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

  1. Место на диске заполнено на вашем сервере. Когда-то это случилось со мной. Попробуйте проверить доступное пространство на вашем сервере в корневом каталоге / / ( df -h ).
  2. В каталоге сеансов на вашем сервере (где хранятся файлы сеансов) есть некоторые проблемы с разрешением.