我有一个php文件:
<?php
$username = $_POST["username"];
if((!$username) || (!$_POST["password"])){
header("Location:http://localhost/login.html");
exit;
}
$db_name = "muzak";
$tblname = "auth_users";
$connection = mysqli_connect("localhost", "***username***", "***password***", $db_name) or die("Couldn't connect to database");
$sql = "SELECT * FROM $tblname WHERE username = '$username' AND password= password('$_POST[password]')";
$result = mysqli_query($connection, $sql) or die(mysqli_error($connection));
$numHits = mysqli_num_rows($result);
var_dump($numHits);//equal to one
if($numHits > 0){
$cookie_name = "auth";
$cookie_value = "ok";
$cookie_expire = "0";
$cookie_domain = "127.0.0.1";
setcookie($cookie_name, $cookie_value, $cookie_expire, "/" , $cookie_domain, 0);
$display = "<li><a href=\"secret_areaA.php\">Secret Area A</a></li>
<li><a href=\"secret_areaB.php\">Secret Area B</a> </li>";
}else{
header("Location:http://localhost/login.html");
}
?>
<html>
<head>
<title>Secret Menu</title>
</head>
<body>
<?php echo $display;?>
</body>
</html>
从html文件中获取输入并要求数据库进行确认。 HTML部分工作正常,但是当我尝试检查secret_areaA.php文件中是否存在cookie时。 。
<?php
if($_COOKIE["auth"] == "ok"){
$msg = "<p><Welcome to the first secret area!<p>";
}else{
die("Cookie wasn't valid");
}
?>
<html>
<head>
<title>
Secret Area A
</title>
</head>
<body>
<?php echo $msg;?>
</body>
</html>
我收到此错误:注意:未定义的索引:第2行的C:\ xampp \ htdocs \ secret_areaA.php中的auth。
我做错了什么?
答案 0 :(得分:3)
设置为expire
的Cookie 0
可让Cookie在设置后立即过期。所以它永远不会存在。
您设置的时间必须为time() + $seconds
,而不仅仅是$seconds
。
答案 1 :(得分:0)
在尝试比较值之前,您需要使用isset()
检查Cookie是否已设置(存在)。这样,如果没有设置Cookie,我们就不会尝试访问不存在的$_COOKIE
数组的一部分(['auth']
)。
if ( isset( $_COOKIE['auth'] ) && $_COOKIE['auth'] == 'ok' ){
} else {
}