道歉我知道這將是一個很簡單的答案,但尋找答案我認爲它讓我感到困惑的不僅僅是問這個問題,因爲有太多這樣的問題,令人困惑或者有時候相互矛盾的答案。PHP/MySQLi /登錄腳本
我的登錄腳本正在連接到數據庫,提交$ POST usr/pass得到正確的響應。
我現在需要使用這些結果來驗證用戶。所以..以前我會用mysql_num_rows來計算數據庫響應,如果是1則認證。但是我很欣賞mysql_num_rows被貶損,我發現另一篇文章說這也是一種現在做事情的弱方法,應該避免。
那我該用什麼呢?
<form id='login' action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method='post' accept-charset='UTF-8'>
<fieldset >
<legend>Login</legend>
<input type='hidden' name='submitted' id='submitted' value='1'/>
<label for='username' >UserName*:</label>
<input type='text' name='username' id='username' value="" maxlength="50" />
<BR />
<label for='password' >Password*:</label>
<input type='password' name='password' id='password' value="" maxlength="50" />
<BR />
<input type='submit' name='Submit' value='Submit' />
</fieldset>
</form>
<?php
if(isset($_POST['submitted']))
{
$postname = $_POST['username'];
$postpass = $_POST['password'];
$postpassMD5 = md5 ($postpass);
$query = $dbcnx->query("SELECT uid, username, password, ulevel FROM members WHERE username = '$postname' AND password = '$postpassMD5' ");
$result = $query->fetch_object();
$dbcnx->close();
}
?>
哦,即時通訊也知道,MD5是弱,將改變這一點。 – ablueman
@aneesh http://security.stackexchange.com/questions/19906/is-md5-considered-insecure –
嗨使用mysql真正的轉義字符串來執行查詢之前檢查用戶的用戶名和密碼。 –