这是一个使用cookie作为密码的脚本.....在localhost上运行它显示通知
未定义的索引:用户
未定义的索引:通过
代码如下:
<html>
<body>
<form action="<?php echo ($self); ?>" method="post">
Please enter your details for access :<br>
Name:<input type="text" name="user" size="10">
Password:<input type="text" name="pass" size="10"><br><br>
<input type="submit" value="Log in">
</form>
</body>
</html>
<?php
$user=$_POST['user'];
$pass=$_POST['pass'];
$self=$_SERVER['PHP_SELF'];
if(($user!=null)and ($pass!=null))
{
if($pass=="mypassword")
{
setcookie("checkpass","okkay");
header("Location:loggedin.php");
exit();
}
else
{
setcookie("checkpass");
}
}
?>
答案 0 :(得分:0)
这种情况正在发生,因为您需要使用isset
并在PHP周围包装该条件语句。
另外,您将收到错误消息,例如:
警告:无法修改标头信息 - 已经发送的标头(输出从.....
开始)
所以,将PHP放在HTML之上。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
if(isset($_POST['user']) && isset($_POST['pass'])){
$user=$_POST['user'];
$pass=$_POST['pass'];
$self=$_SERVER['PHP_SELF'];
if(($user!=null) and ($pass!=null))
{
if($pass=="mypassword")
{
setcookie("checkpass","okkay");
// echo "OK";
header("Location:loggedin.php");
exit();
}
else
{
setcookie("checkpass");
// echo "SORRY";
}
}
} // brace for if(isset($_POST['user']) ...
?>
<html>
<body>
<form action="<?php echo ($self); ?>" method="post">
Please enter your details for access :<br>
Name:<input type="text" name="user" size="10">
Password:<input type="text" name="pass" size="10"><br><br>
<input type="submit" value="Log in">
</form>
</body>
</html>
<强>密码强>
我还注意到您可能以纯文本格式存储密码。不建议这样做。
使用以下其中一项:
crypt()
bcrypt()
scrypt()
password_hash()
功能。其他链接: