好的..我完全是這個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