我想知道如何讓用戶登錄,然後檢查他的Cookie,如果他們可以繼續或不,Cookie有他的用戶ID和加密的密碼。有沒有辦法檢查每個頁面?每次都不使用mysql?檢查用戶登錄和最小化數據庫查詢的最佳方法是什麼?
謝謝。
編輯:會話中使用
我想知道如何讓用戶登錄,然後檢查他的Cookie,如果他們可以繼續或不,Cookie有他的用戶ID和加密的密碼。有沒有辦法檢查每個頁面?每次都不使用mysql?檢查用戶登錄和最小化數據庫查詢的最佳方法是什麼?
謝謝。
編輯:會話中使用
代碼放在這裏......
// start the session //
session_start();
// create one flag //
$_SESSION['logged'] = FALSE;
// username, password from form submit //
$username = $_POST['username'];
$password = sha1($_POST['password']);
// check once in database //
$con = new mysqli('localhost', 'my_username', 'my_password', 'my_database');
$sql = "SELECT * FROM `tbl_users` AS `u` WHERE `u`.`username` = ? AND `u`.`password` = ?";
$result = $con->query($sql, array($username, $password));
// if user existed return one row //
if($result->num_rows() == 1) {
$_SESSION['logged'] = TRUE;
$_SESSION['username'] = $username;
} else {
echo "invalid username or password!!";
}
對於其他所有新頁面選中此項
if(isset($_SESSION['logged']) == TRUE) {
echo 'You are logged' . $_SESSION['username'];
} else {
header('location:login_form.php');
}
您僅檢查會話變量是否已設置。如果變量包含FALSE,它將被接受爲登錄。 – martinstoeckli 2011-06-09 10:59:47
您應該使用會話。 Session對此非常有效。只需將值放在會話中,然後在每個頁面上開始會話並檢查會話。如果用戶有會話,然後繼續,否則將他發送到登錄頁面
實際上使用會話,主要問題是使用mysql檢查值... – 2011-06-09 09:18:45
@Ronan Dejhero。親愛的,我想你在哪裏錯了。當我們談論會話時,在我們驗證用戶的登錄過程中,我們只將會話中的值放入一次。然後,我們只是檢查我們是否有會話。我們不必再次查詢表格。 – 2011-06-09 09:20:57
您不想將密碼存儲在cookie中,是否加密。 – 2011-06-09 09:00:42
您不需要使用MySQL檢查會話值。會話值只能由您的代碼設置。它們存儲在服務器上,並且僅由cookie識別*(會話ID)。用戶無法篡改會話值。 – 2011-06-09 09:37:01