好的..我完全是这个PDO的东西..我试图重新创建我的mysql脚本(工作)到一个PDO脚本(不工作)..我测试了我的数据库登录信息是正确编程为PDO ..PDO验证登录数据
这是我的PDO脚本...
<?
session_start();
//connect to DB
require_once("connect.php");
//get the posted values
$email=htmlspecialchars($_POST['email'],ENT_QUOTES);
$pass=md5($_POST['psw']);
//now validating the email and password
$sql - $conn_business->prepare("SELECT email, password FROM members WHERE email='".$email."'");
$sql -> execute();
$count = $sql->rowCount();
$result = $sql -> fetch();
// Now use $result['rowname'];
$stmt = $conn_business->prepare("SELECT * FROM members WHERE email='".$email."'");
$stmt ->execute();
$act = $stmt -> fetch();
//if email exists
if($count > 0)
{
//compare the password
if(strcmp($result["password"],$pass)==0)
{
// check if activated
if($act["activated"] == "0")
{
echo "act"; //account is not activated yet
}
else
{
echo "yes"; //Logging in
//now set the session from here if needed
$_SESSION['email'] = $email;
}
}
else
echo "no"; //Passwords don't match
}
else
echo "no"; //Invalid Login
?>
这是我的旧版本的MySQL脚本...
session_start();
require_once("connect.php");
//get the posted values
$email=htmlspecialchars($_POST['email'],ENT_QUOTES);
$pass=md5($_POST['psw']);
//now validating the username and password
$sql="SELECT email, password members WHERE email='".$email."'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
$sql2="SELECT * FROM members WHERE email='".$email."'";
$result2=mysql_query($sql2);
$row2=mysql_fetch_array($result2);
$act = $row2['activated'];
//if username exists
if(mysql_num_rows($result)>0)
{
//compare the password
if(strcmp($row['password'],$pass)==0)
{
// check if activated
if($act == "0")
{
echo "act";
}
else
{
echo "yes";
//now set the session from here if needed
$_SESSION['email'] = $email;
}
}
else
echo "no";
}
else
echo "no"; //Invalid Login
有谁知道,我做了什么错误?它是一个自动脚本..它通过AJAX调用,并根据'no','yes'和'act'返回数据,告诉AJAX/jQuery脚本要做什么。正如我所说 - mysql脚本正在工作,所以请如果有人能告诉我,我做了什么不对的PDO脚本..
编辑:
时将数据返回到jQuery脚本,发生这种情况: 如果是:启动会话,重定向到page2.php会话开始。 否则如果行为:在字段中写入该帐户未激活。 其他:写电子邮件和密码不匹配。
事情是,当我尝试写出正确的电子邮件和密码 - 它继续写:“电子邮件和密码不匹配”,而不是重定向。当我说它不工作它是因为mysql脚本没有描述,但PDO脚本没有...
而我试图改变'回声'没有“;”回声“是”;“看是否登录无论如何都会开始,但不知何故,继续编写电子邮件和密码不匹配..
SOLUTION:
我ahven't告诉本报,因为我认为这是不必要的,但它不工作的原因是因为我有我的旧mysql代码在页面顶部的注释标记,以便session_start命令不起作用。删除旧代码后,它的工作,但后来我发现其他东西要改变,这是PDO脚本,当它验证它说: $ sql - $ conn_business-> prepare(“SELECT email,password FROM members WHERE email ='”。$ email。“'”); 然后我只是将$ sql后的' - '改为'=',现在,一切都完美无缺......无论如何,谢谢大家......希望此代码可以帮助其他人..
“不工作”是非常宽泛的......看到任何错误信息或其他调试指标? – GDP
有一点引人注目的是你在查询后没有发生任何错误。请参阅http://stackoverflow.com/questions/3726505/how-to-squeeze-error-message-out-of-pdo关于如何做到这一点。 –
@Pekka我已经阅读过它,但我仍然不知道到底是如何,在哪里以及为什么要这样做..:/这是很容易与普通的MySQL,我只是认为它不会是更先进的处理PDO ... – Dimser