好的..我对这个 PDO 的东西完全陌生..我试图将我的 mysql 脚本(工作)重新创建为一个 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 调用,并根据“否”、“是”和“行为”返回数据,告诉 AJAX/jQuery 脚本该做什么。正如我所说 - mysql 脚本正在工作,所以请如果有人能告诉我我在 PDO 脚本上做错了什么..
编辑:
当它将数据返回到 jQuery 脚本时,应该会发生这种情况:如果是:启动会话,重定向到 page2.php 并启动会话。else if act: 填写账户未激活的字段。否则:写那个电子邮件和密码不匹配。
问题是,当我尝试写正确的电子邮件和密码时 - 它继续写:“电子邮件和密码不匹配”而不是重定向。当我说它不起作用时,这是因为 mysql脚本按照描述执行,但 PDO 脚本没有..
我试图改变'回声“不”;' '回应“是”;' 看看登录是否会开始,但不知何故它继续写电子邮件和密码不匹配..
解决方案:
我没有告诉这个,因为我认为这是不必要的,但它不起作用的原因是因为我在页面顶部的注释标记中有我的旧 mysql 代码,所以 session_start 命令不起作用..删除旧代码后它可以工作,但后来我发现还有其他要更改的地方,那就是在 PDO 脚本中验证它时说: $sql - $conn_business->prepare("SELECT email, password FROM members WHERE电子邮件='".$email."'"); 然后我只是将 $sql 之后的 '-' 更改为 '=' 现在,一切正常...无论如何谢谢大家.. 希望这段代码可以帮助其他人..