如果$ u和$ d匹配,會話將註冊。但是,如果我將$ d的字符串更改爲其他任何內容,則即使其他所有內容都通過,會話也不會註冊。我想要在用戶全名下注冊會話,並存儲在表用戶中。有沒有我沒有看到的東西?爲什麼我的會話只以這個唯一的會話變量開始?
<?php
include('conn.php');
$u = $_POST['user'];
$p = md5($_POST['pass']);
$sql = "SELECT first_name, last_name, user, pass FROM users WHERE user = :user AND pass = :pass";
$q = $conn->prepare($sql);
$q->bindParam(":user", $u);
$q->bindParam(":pass", $p);
$q->execute();
$login = $q->fetch();
$d = $login['user'];
if($login['user']){
session_start();
$_SESSION['login_user']=$d;
header('Location: index.php');
}
else{
header('Location: login.php');
}
?>
編輯:我已編輯,以顯示我的意思更好的例子。如果我要將變量$ d更改爲$ login ['first_name'],那麼會話將不會註冊。即使這些信息在數據庫中是正確的,因爲它在成功時會在index.php上顯示名字。
$d = "user01";
,後來它被再次使用(一旦用戶名和密碼驗證)來:
$_SESSION['login_user']=$d;
如果你想
您可以包括其中_The會議不會register_的情況下?還有'var_dump(get_defined_vars());'的輸出。請注意不要在輸出中暴露敏感信息。 – cychoi
它似乎在檢查數據庫中的驗證用戶名和密碼。哪一點不清楚? SQL非常簡單 - 它使用兩個參數 - 用戶名和密碼,它們使用'$ u'和'$ p'綁定。如果用戶被驗證,它將使用'$ _SESSION ['login_user'] = $ d;'將它存儲爲$ d =「user01」;''改變它。 – Fluffeh
備註:是否正確使用md5散列來保護密碼?這是非常不安全的! – arkascha