即時通訊仍處於早期學習階段,我的頭撞牆尋找線索。我一直在閱讀手冊無濟於事。簡單的登錄功能使用PDO
IM建設基礎上,phpAcadamy教程「註冊&登錄」用戶登錄系統。他們在教程中使用mysql_connect,但是我正在使用到mysql的PDO連接。
1)功能user_id_from_username應返回張貼的$用戶名user_id
條目。我沒有,我不知道如何簡單地返回條目,我只需要一點點的指導和解釋。
2)登錄功能的工作原理,但我需要的,如果真它返回$ USER_ID,這樣我可以設置會話。
這裏是我的代碼:「死($:
<?php
function user_id_from_username(PDO $db, $username) {
$stmt = $db->prepare('SELECT `user_id` FROM `users` WHERE `username` = 1');
$stmt->bindParam(1, $username);
$stmt->execute();
return ($stmt->fetchColumn());
} //??? I NEED THIS FUNCTION TO RETURN THE `user_id` ENTRY FOR $username
function login(PDO $db, $username, $password) {
$user_id = user_id_from_username($db, $username);
$password = md5($password);
$stmt = $db->prepare('SELECT COUNT(`user_id`) FROM `users` WHERE `username` = ? AND `password` = ?');
$stmt->bindParam(1, $username);
$stmt->bindParam(2, $password);
$stmt->execute();
return (bool) $stmt->fetchColumn();
} //??? I NEED THIS FUNCTION TO RETURN $user_id IF TRUE (to set session)
//---------------------login.php-----------------------
if (empty($_POST) === false) {
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username) === true || empty($password) === true) {
$errors[] = 'You need to enter a username and password.';
} else if (user_exists($db, $username) === false) {
$errors[] = 'We can\'t find that username. Have you registered?';
} else if (user_active($db, $username) === false) {
$errors[] = 'You haven\'t activated your account!';
} else {
$login = login($db, $username, $password);
if ($login === false) {
$errors[] = 'That username/password combination is incorrect.';
} else {
die($login);
}
}
print_r($errors);
}
因此,根據該登錄腳本,登錄成功(良好的用戶名和密碼,並主動交代)應該輸出$ USER_ID整數後登錄)」。
(我沒有包括其他兩個函數:user_exists和user_active,因爲我讓他們正常工作)
它正確打印錯誤陣列,它會在ok了,除了這一步。
在此先感謝您的幫助!
好,謝謝,錯過了1 IM仍然有回線的麻煩。當我登錄時,它顯示'1'而不是user_id,因爲我缺少重要的東西。即時通訊只是試圖學習的初學者。 – mholberger 2013-05-03 05:20:45
@mholberger查看編輯答案。 – 2013-05-03 05:27:04
它的工作原理!謝謝! – mholberger 2013-05-03 05:32:41