道歉我知道这将是一个很简单的答案,但寻找答案我认为它让我感到困惑的不仅仅是问这个问题,因为有太多这样的问题,令人困惑或者有时候相互矛盾的答案。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真正的转义字符串来执行查询之前检查用户的用户名和密码。 –