我有一個PHP文件:PHP setcookie()函數的問題
<?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>
我得到這個錯誤:注意:未定義指數:用C AUTH:\ XAMPP \ htdocs中\ secret_areaA.php第2行
我在做什麼錯?
一個cookiedomain不能是IP。它必須是實際完全合格的域名。所以'localhost'將被允許,但是'127.0.0.1'不會。 – Tularis
我認爲在你的secret_areaA.php文件,你需要添加一個PHP包括對第一個文件,因爲這是你的auth'的'變量聲明。 – TylerH
您不應該直接在cookie中存儲任何種類的認證指示符。這很容易造成您的安全問題。考慮使用這個會話。 –