我正在使用kespersy防病毒软件。我希望将详细信息存储在数据库中。但是测试时不会打印密码和确认密码值。 除密码和确认密码外,所有字段值都被回显。$ pass是密码变量,$ c_pass是确认密码变量。
<form name="profile" method="post">
<p style="margin-left:1cm">Name<a style="margin-left:45px"></a> : <input type="text" name="p_name" size=18 maxlength=50></p>
<p style="margin-left:1cm">Email<a style="margin-left:45px"></a> : <input type="text" name="email" size=18 maxlength=50></p>
<p style="margin-left:1cm">Password<a style="margin-left:25px"></a> : <input type="password" name="pass" size=18 maxlength=50></p>
<p style="margin-left:1cm">Confirm<a style="margin-left:30px"></a> : <input type="password" name="c_pass" size=18 maxlength=50></p>
<p style="margin-left:1cm">Phone<a style="margin-left:45px"></a> : <input type="text" name="phone" size=18 maxlength=50></p>
<p style="margin-left:1cm">Address<a style="margin-left:30px"></a> : <textarea name="address" max=200></textarea></p>
<p style="margin-left:1cm">EIN<a style="margin-left:50px"></a>   : <textarea name="ein" max=200></textarea></p>
<center><input type="submit" name="edit" value="Edit" /> </center>
</form>
<?php
include "config.php";
if(isset($_REQUEST['edit']))
{
echo "hai";
echo $pass=$_REQUEST['Pass'];
echo $c_pass=$REQUEST['c_pass'];
echo $address=$_REQUEST['address'];
echo $p_name=$_REQUEST['p_name'];
echo $phone=$_REQUEST['phone'];
echo $email=$_REQUEST['email'];
echo $ein=$_REQUEST['ein'];
echo $datz=date('m-d-yy h:i:s');
if($pass==$c_pass)
{
echo $c_pass;
echo $pass;
if($p_name!='' && $address!='' && $p_name!='' && $phone!='' && $email!='' && $ein!='' && $pass!='')
{
echo $sql="insert into register(name,address,contact_name,phone,email,password,ein,c_date) values ('$name','$address','$p_name','$phone','$email','$pass','$ein','$datz')";
if(mysql_query($sql))
{
echo ("<SCRIPT LANGUAGE='JavaScript'>
window.alert('registered successfully');
</SCRIPT>");
}
else
{
echo ("<SCRIPT LANGUAGE='JavaScript'>
window.alert('try again');
</SCRIPT>");
}
}
}
}
?>
答案 0 :(得分:2)
首先,为什么要使用$ _REQUEST变量?
如果你改用$ _POST会更安全。
您可以使用HTML表单更新您的问题,以便我们看到您在那里做了什么吗?
另一个建议是使用mysqli函数甚至是prepared statements。
使用预处理语句可以更好地防止像Jack提到的SQL注入。
如果您不使用预准备语句,在将数据保存到数据库之前将其转义为非常重要:
$name = mysqli_real_escape_string($dblink, $name);
您不应该以明文保存密码,至少使用MD5。
$pass = md5($pass);
更好地使用BlackPearl提到的SHA1:
$pass = sha1($pass);
更新:
我在HTML中看到了拼写错误:
<input type="password" name="pass" size=18 maxlength=50></p>
但是在你的PHP代码中你使用:
$_REQUEST['Pass']
这是错误的。
你必须使用与区分大小写相同的名称。