[英]PHP Simple login with PDO
這是我的Controller類登錄檢查部分
案例“ checkLogin”:
$username = isset($_REQUEST['username']) ? trim($_REQUEST['username']) : "";
$password = isset($_REQUEST['password']) ? trim($_REQUEST['password']) : "";
try{
$login = $user->login($username,$password);
if ($login === false) {
throw new Exception("username or password is wrong");
}else {
$_SESSION['id'] = $login;
header('Location: index.php');
}
}
catch(Exception $ex){
$errMsg = $ex->getMessage();
$view->render('view/login.php', array('errMsg' => $errMsg ));
}
break;
UserModel函數
這是我的用於檢查用戶名和密碼的用戶模型功能。
public function login($username,$password){
$username = strip_tags(stripslashes(mysql_real_escape_string($username)));
$password = strip_tags(stripslashes(mysql_real_escape_string($password)));
$stmt = $this->db->con->prepare("SELECT `password`, `id` FROM `user` WHERE `username` = ?");
$stmt->bindValue(1, $username);
try{
$stmt->execute();
$data = $stmt->fetch();
$stored_password = $data['password'];
$id = $data['id'];
if($stored_password === md5($password)){
return $id;
}else{
return false;
}
}catch(PDOException $e){
echo $e->getMessage();
}
}
請告訴我這是正確的。此代碼對我有用。 我正在使用它來實現基本的MVC模式登錄。
我從這里獲得了一些代碼http://www.sunnytuts.com/article/login-and-registration-with-object-oriented-php-and-pdo
如果清除所有無用和錯誤的內容,login()將變成這樣
public function login($username, $password)
{
$stmt = $this->db->prepare("SELECT password, id FROM user WHERE username = ?");
$stmt->execute(array($username));
$row = $stmt->fetch();
if(crypt($password, $row['password']) == $row['password'])
{
return $id;
}
}
注意更好的密碼哈希算法
必須對其他代碼部分執行類似的操作:
$login = $user->login($_POST['username'], $_POST['username']);
if ($login)
{
$_SESSION['id'] = $login;
header('Location: index.php');
exit;
}
$view->render('view/login.php', array('errMsg' => "Wrong credentials" ));
break;
是的,它與MVC無關
這是MVC的良好初始框架,但是您的代碼需要工作。 幾個建議。
我之所以沒有發布代碼,是因為我得到了您正在像以前一樣自學的想法。.而我們要尋找的最后一件事是剪切和粘貼解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.