(三)注册与登录背后的故事——注册与登录检测
1.输入检测
test_input()函数
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data,ENT_QUOTES);
return $data;
}
该函数主要用来过滤用户输入,trim() 函数移除字符串两侧的空白字符或其他预定义字符,stripslashes()函数删除反斜 杠,htmlspecialchars()函数把预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体。
这个函数主要针对xss攻击作了防御。
2.密码安全
为了用户信息安全性考虑,用户的密码绝对不可以以明文的形式储存在数据库中,该网站采取MD5加密的方式进行用户密码的存储。
3.注册检测(以下代码均为部分关键代码)
$user = test_input($_POST["username"]);
$psw = md5(test_input($_POST["password"]));
$psw_confirm = md5(test_input($_POST["confirm"]));
if($user == "" || $psw == "" || $psw_confirm == "")
{
echo "<script>alert('信息有误,请重新注册!'); history.go(-1);</script>";
}
else if (!preg_match("/^[a-zA-Z0-9_]*$/",$user)) {
echo "<script>alert('信息有误,请重新注册!'); history.go(-1);</script>";
}
else if(strlen(test_input($_POST["password"]))<8)
{
echo "<script>alert('信息有误,请重新注册!'); history.go(-1);</script>";
}
4.注册过程实现
if($psw == $psw_confirm)
{
@mysql_connect("localhost","root","tiancy"); //连接数据库
mysql_select_db("tiancyDb"); //选择数据库
mysql_query("set names 'utf-8'"); //设定字符集
$sql = "select username from memberlist where username = '$_POST[username]'"; //SQL语句
$result = mysql_query($sql); //执行SQL语句
$num = mysql_num_rows($result); //统计执行结果影响的行数
if($num) //如果已经存在该用户
{
echo "<script>alert('用户名已存在'); history.go(-1);</script>";
}
else //不存在当前注册用户名称
{
$sql_insert = "insert into memberlist(username,password) values('$user','$psw')";
$res_insert = mysql_query($sql_insert);
//$num_insert = mysql_num_rows($res_insert);
if($res_insert)
{
echo"<script>alert('注册成功');location.href='login.php';</script>";
echo $pswd;
}
else
{
echo "<script>alert('系统繁忙,请稍候!'); history.go(-1);</script>";
}
}
}
else
{
echo "<script>alert('密码不一致!'); history.go(-1);</script>";
}
在检测过程中注意要对每一种可能出现的情况进行分别处理。
以上就是一个普通用户注册过程的检测。