1
我使用具有令牌的cookie創建了腳本。它的工作是讓我知道用戶是否登錄,但我不知道爲什麼它總是返回false。我檢查了我的數據庫,每次登錄時都會創建一條新記錄,但我的PHP文件始終返回false
。我使用本地服務器easy php。第一個標記在7天內死亡。第二個在3天內死亡。從Cookie中讀取錯誤的錯誤
<?php
include('./classes/DB.php');
function isloggedIn(){
if(isset($_cookie['SNID'])){
if(DB::query('SELECT user_id FROM login_tokens WHERE token:=token', array(':token'=>sha1($_cookie['SNID'])))){
$userid = DB::query('SELECT user_id FROM login_tokens WHERE token:=token', array(':token'=>sha1($_cookie['SNID'])))[0]['user_id'];
if(isset($_cookie['SNID_2'])){
return $userid;
}else{
$cstrong = True;
$token = bin2hex(openssl_random_pseudo_bytes(64, $cstrong));
DB::query('INSERT INTO login_tokens VALUES(null, :token, :user_id)', array(':token'=>sha1($token), ':user_id'=>$userid));
DB:query('DELETE FROM login_tokens WHERE token:=token', array(':token'=>sha1($_cookie['SNID'])));
setcookie("SNID", $token, time()+60*60*24*7, '/', NULL, NULL, TRUE);
setcookie("SNID_2", $token, time()+60*60*24*3, '/', NULL, NULL, TRUE);
return $userid;
}
}
}
return false;
}
if (isloggedIn()){
echo 'logged in ';
echo isloggedIn();
}else{
echo 'not logged in ';
}
?>
我收到了一個新錯誤;致命錯誤:帶有消息'SQLSTATE [42000]的未捕獲異常'PDOException':語法錯誤或訪問衝突:1064 SQL中有錯誤句法;檢查與您的MySQL服務器版本相對應的手冊,以便在C:\ Users \ Desktop \ socialnetwork \ classes \ DB.php:11堆棧跟蹤:#0 C \ socialietwork \ classes \ DB.php(11):PDOStatement-> execute(Array)#1 C:\ socialnetwork \ index.php(7):DB :: query('SELECT user_id ...',Array)#2 C :\ socialnetwork \ index.php(29):isloggedIn()#3 {main}拋出C:\ Desktopclasses \ DB.php在第11行 –
感謝您的時間。 –
你有令牌:=你需要寫令牌的令牌=:令牌 –