【发布时间】:2011-11-21 21:18:21
【问题描述】:
我正在编写一个用于登录数据库的脚本(主要用于学习目的),使用两个不同的 mySQL DB。一切正常,除了一些错误捕获。我有以下情况(粗体不起作用):
- 空白用户名和密码
- 空白用户名
- 空白密码
- 用户名和密码都包含数据,但用户名有误。
- 用户名和密码都包含数据,但密码有误。
- 用户名和密码都包含数据,并且都是正确的。
问题:我是否有效地解决了这个问题,为什么 (4) 和 (5) 返回空白。
<?php
$loginstatus;
if(!$_POST["username"] && !$_POST["password"]){ //FROM HERE
$loginstatus = "You must enter a username & password!";
}elseif(!$_POST["username"]){
$loginstatus = "You must enter a username!";
}elseif(!$_POST["password"]){
$loginstatus = "You must enter a password!";//TO HERE WORKS
}elseif($_POST["username"] && $_POST["password"]){
require_once('config.php'); //contains db info
$db1 = mysql_connect($dbserver, $dbuser, $dbpass);
$db2 = mysql_connect($dbserver, $dbuser2, $dbpass2, true);
if ($db1 && $db2) { //both connections must have worked at the same time
mysql_select_db("nitrousc_tclydb", $db1); //connect using $db1 link
$userid = $_POST["username"]; //assign $userid to POST username
$userid = mysql_query("SELECT id FROM users WHERE username='$userid'", $db1)or die("Invalid Password!"); //THIS RETUNRS BLANK!
$userid = mysql_fetch_array($userid); //reuse $userid again, assigning the returned array.
$userid = $userid['id']; //reuse $userid again - at this point we lose the returned array.
mysql_select_db("nitrousc_tclyprv", $db2); //switch databases, using $db2
$password = mysql_query("SELECT * FROM users WHERE id='$userid'", $db2) or die("Invalid Password!"); //THIS RETUNRS BLANK!
$password = mysql_fetch_array($password); //resuse $password
$password = $password['hashed_password']; //resuse, store final hashed in $password
if (crypt($_POST["password"], $password) == $password){ //check the returned POST password against the hash
$loginstatus = "Login for".$_POST['username']."succesful!"; //THIS WORKS
};
}
}
echo $loginstatus;
?>
【问题讨论】:
标签: php mysql error-handling