我在php中创建了一个简单的登录页面,并且它在我的LAMP上工作得很好。但是今天我不小心把我的/ var目录的权限改成了chmod 777/var之类的东西,虽然我把权限改回了chmod 755/var。但是现在,当我尝试再次访问我的登录页面时,我无法登录。在再次通过代码时,我发现我的SESSION变量在传输到不同页面时没有保留它的数据。我在每个页面(页面顶部)使用session_start(),而且我检查了session_id(),它在每个页面中都是一样的。我在Linux环境中使用Apache和Mysql(Ubuntu 12.04)。我的程序代码:php会话变量不在不同页面之间工作
index2.php:
<?php
session_start();
if(isset($_SESSION['username']))
{
header('Location: securepage.php');
}
?>
<html>
<head>
<title>Secure LOGIN</title>
</head>
<body>
<h2>User Login </h2>
<form method="POST" action="login.php">
<br>UserName : <input type= "text" name="username">
<br>Password : <input type="password" name="password">
<br><input type="submit" value="Login">
</form>
</body>
</html>
的login.php:
<?php
session_start();
include('load.php');
$obj = new load();
$conn = $obj-> connect();
if(!conn)
{
exit('Connection cannot be established');
}
mysqli_select_db($conn,'login') or die('Cannot be established');
$query = "SELECT * FROM users WHERE uname='".$_POST['username']."' and pass = '".md5($_POST['password'])."';";
$login = mysqli_query($conn,$query);
if(mysqli_num_rows($login) == 1)
{
$_SESSION['username'] = $_POST['username'];
header('Location: securepage.php');
}
else
{
header('Location: index2.php');
}
?>
securepage.php:
<?php
session_start();
if (!isset($_SESSION['username'])) {
header('Location: index2.php');
}
?>
<html>
<head>
<title>Secured Page</title>
</head>
<body>
<p>This is secured page with session: <b><?php echo $_SESSION['username']; ?></b>
<br>You can put your restricted information here.</p>
</body>
</html>
在回声$ _SESSION ['用户名'],在login.php中的if(mysqli_num_rows)语句后,它正确显示值用户名,但在print_r($ _ SESSION)在securepage.php中,它显示一个空数组。 这段代码在昨天工作的很好,我不知道为什么它现在不工作。
我甚至创建了两个简单的测试页面来检查我的SESSION变量,但即使这样也行不通。尽管$ _SESSION中的值已设置,但不会转移到第二页。我没有触及我的LAMP的任何配置设置。
My phpinfo() screenshot
Permissions of var direcroty
请告诉我在哪里,我错了。我error.log中的
内容:
PHP Warning: session_start(): open(/var/lib/php5/sess_mm4ja22k9n0r4gv512imc07ur0, O_RDWR) failed: Permission denied (13) in /var/www/public/index2.php on line 2, referer: http://localhost/index2.php
PHP Warning: Unknown: open(/var/lib/php5/sess_mm4ja22k9n0r4gv512imc07ur0, O_RDWR) failed: Permission denied (13) in Unknown on line 0, referer: http://localhost/index2.php
PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php5) in Unknown on line 0, referer: http://localhost/index2.php
你检查你的web服务器(阿帕奇/ nginx的)的error.log中? – smitrp
更新了我的error.log内容。看起来像某种权限问题! – Shivam