注意:未定义的索引:user&通过

时间:2014-05-05 16:56:24

标签: php forms cookies

这是一个使用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");
 } 
}
?>

1 个答案:

答案 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>

<强>密码

我还注意到您可能以纯文本格式存储密码。不建议这样做。

使用以下其中一项:

其他链接: