簡體   English   中英

POST方法和PHP登錄驗證

[英]POSTmethod and PHP- login verification

我寫了一個用於登錄驗證的代碼。 但是我需要POST輸出,因為它更安全。請讓我知道我的代碼中是否有錯誤。

JavaScript代碼:

var xml;
function verifyusernamepasswd(pass)
{
//pass is password that will be passed as parameter
xml=new XMLHttpRequest();
var url="http://localhost/loginvalidate.php";
var para="q="+username+"&p="+pass;//username is global
xml.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xml.setRequestHeader("Content-length", para.length);
xml.setRequestHeader("Connection", "close");
xml.open("POST",url,true);
xml.onreadystatechange=statechanged1;
xml.send(para);

}

function statechanged1()
{
if(xml.readyState==4)
alert(xml.responseText);

}


php code:

<?php
$username=$_POST["q"];
$password=$_POST["p"];
$con=mysql_connect("localhost","root","blaze");
if(!$con)
{
die('Could not connect: '.mysql.error());
}
mysql_select_db("BLAZE",$con) or die("No such Db");
$result=mysql_query("SELECT Passwword FROM USERTABLE WHERE Userhandle='$username'");
if($result==null)
echo "false";

else if($result!=null)
{
$row=mysql_fetch_array($result);
if((strcmp($row['Passwword'],$password)==0))
echo "true";
else
echo "false";
}

?>

驗證未返回任何內容,因為我的警報根本沒有顯示...請告訴我出什么問題了...。

您是否嘗試過直接訪問PHP頁面以查看是否有任何錯誤? 您可能還想嘗試使用Firebug(適用於Firefox)或Chrome中的開發人員工具,以確保實際發送了請求,然后檢查結果。

Passwword在數據庫中是這樣拼寫的嗎,還是只是PHP中的錯字?

最后,雖然它現在不會給您造成問題,但它可能會失敗:您的代碼容易受到SQL注入的攻擊-惡意用戶可能會傳遞一些錯誤的參數並對數據庫執行令人討厭的事情。 您需要在SQL查詢中使用$username之前對其進行轉義,例如:

"SELECT ... WHERE userhandle = '" . mysql_real_escape_string($username) . "'"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM