【发布时间】:2015-05-10 12:26:35
【问题描述】:
我正在尝试使用记住我功能和注销选项为登录页面编写 php 代码。由于我是 php 新手,因此我尝试使用静态用户名和密码,而无需访问 ant 数据库。但我的问题是 php 会话,我不完全理解,所以当我尝试登录时,它会带我进入欢迎页面,但显示你没有登录。 这是login.php
<?php
@$id=$_POST['username'];
@$pass = $_POST['password'];
$loginErr="";
if(isset($_POST['login']))
{
if($id=="sajan" && $_POST['password']="sajan123")
{
if($_POST['remember_me']=='on' || $_POST['remember_me']== 1)
{
setcookie("user", $_POST['username'] , time()+(86400 * 30),'/');
setcookie("password", $pass = $_POST['password'] , time()+(86400 * 30));
header('location: welcome.php');
exit;
}
else {
setcookie("user", "" , time()-3600,'/');
setcookie("password", "" , time()-3600);
header('location: welcome.php');
exit;
}
}
else $loginErr="invalid username or password";
}
?>
<html>
<head>
<link rel="stylesheet" href="./style.css" type="text/css">
</head>
<body>
<div id="main">
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']?>" name="login">
<h2 style="margin:0 0 15px 0;">LOGIN</h2>
<label>Username</label>
<input type="text" name="username" value="<?php echo @$_COOKIE['user'];?>">
<label>Password</label>
<input type="password" name="password" value="<?php echo @$_COOKIE['password'];?>"/>
<input type="checkbox" name="remember_me" class="check" <?php if(isset($_COOKIE['user']))
{
echo 'checked="checked"';
}
else {
echo '';
}
?>/>
<label style="width:200px;">Remember me</label>
<input class="submit" type="submit" name="login" value="Login" />
<div style="float:left; color:red;"><?php echo $loginErr;?></div>
</form>
</div>
</body>
</html>
这是我的welcome.php页面
<?php
if (!isset($_SESSION['user']))
{
echo "you are not logged in ";
echo isset($_SESSION);
exit;
}
else {
echo "Welcome ".$_COOKIE['user']." .<br>";
echo "Your login is successful. ";
}
?>
还有我的 logout.php 页面
<?php
session_start();
unset($_SESSION);
session_destroy();
session_write_close();
header('Location: login.php');
exit;
?>
【问题讨论】:
-
在所有页面的开头提及
session_start();。 -
另外,您的登录页面没有在 $_SESSION 中设置任何内容,因此欢迎页面将没有任何要检查的内容,尤其是您没有在登录脚本中执行 `session_start()'
-
试过了,还是一样的问题
-
我认为您将此代码复制到某处,因此并没有真正理解它的作用,如果您想从头开始学习 PHP,并查看每个命令的作用。如果你没有复制它仍然适用:)。