服务器端验证

时间:2009-07-22 14:50:16

标签: php validation

您好我已经创建了一个reg.php。我需要使用php包含服务器验证。我编写了代码并在浏览器中解压缩了java脚本。但它显示“即使我没有给任何字段你已成功注册。这是我的代码

<?php
$hostname   =   "xxxx";
$username   =   "xxx";
$password   =   "xxx";
$dbName     =   "xxx";
$conn       =   mysql_connect($hostname,$username,$password) or die(mysql_error());
mysql_select_db($dbName);
if(isset($_POST["submit"]))
{
$username=$_POST['usr'];
$address1=$_POST['addr1']; 
$address2=$_POST['addr2'];
$password=$_POST['pswd'];
$email=$_POST['email'];
$errormsg;
if($_POST['usr']=="")
 {
   $errormsg='enter the name S';
echo $errormsg;
 }
elseif(trim($address1)=="")
 {
   $errormsg="entre the address1 S";
  } 
elseif(trim($address2)=="")
 {
   $errormsg="entre the address2 S";
  } 
elseif(trim($password)=="")
 {
   $errormsg="entre the password S";
  } 
elseif(trim($email)=="")
{
   $errormessage="enter the email S";
}

mysql_query("INSERT INTO `xxx` ( `id` , `Name` , `Address1` , `Address2` , `password` , `email` )
VALUES (
'', '$username', '$address1', '$address2', '$password', '$email'
)")or die(mysql_error()); ;
echo "you have successfully registered ";
}
?>

<html>

<head>

<script type="text/javascript">

function fun()
  {
        valid=true;

        if(document.reg1.usr.value =="")
          {

              alert("fill the name");
               valid=false;
          }
       if(document.reg1.addr1.value =="")
          {

              alert("fill the address");
               valid=false;
          }
      if(document.reg1.addr2.value =="")
          {

              alert("fill the address2");
               valid=false;
          }
     if(document.reg1.pswd.value =="")
          {

              alert("fill the password");
               valid=false;
          }
     if(document.reg1.email.value =="")
          {

              alert("fill the email id");
               valid=false;
          }
     return valid;
   }



</script>
</head>
<body>
    <form name="reg1" action="try.php"  method="post">
        <table border="0" cellpadding="2" cellspacing="2" width="1000" align="centre">
        <tr>
        <th>Registration form</th></tr>

        <tr><TD align="left">username<TD/>
        <TD><input type="text" name= "usr"></TD></tr>
        <tr>

        <td align="left">address1<td/>
        <td><input type="text" name="addr1"></td>
        </tr>
        <td align="left" width="15%">address2<td/>
        <td><input type="text" name=addr2></td></tr>
        <tr>
        <td align="left">password<td/>
        <td><input type="password" name="pswd"></td>
        </tr>
        <tr>
        <td align="left">emailaddress<td/>
        <td><input type="text" name="email"></td>
        </tr>
        <tr>
        <tr><TD></TD>
        <td><input type="submit" name="submit" value="submit" onclick="return fun();"></td></tr>
        </table>
    </form>


</body>
</html>

任何人都可以帮助PLZ ?????

5 个答案:

答案 0 :(得分:1)

首先 - 与你的变量保持一致。您似乎无法在$errormsg$errormessage之间下定决心。

第二 - 应用一点思考。 if您已设置错误消息,然后显示else进行SQL查询。

第三 - 为了上帝的缘故,fix your huge SQL injection vulnerability

答案 1 :(得分:0)

如果结束了脚本的不同部分,则需要在验证后将所有内容分开。

if (empty($errormsg)) 
{
    mysql_query("INSERT INTO `xxx` ( `id` , `Name` , `Address1` , `Address2` , `password` , `email` )
    VALUES (
    '', '$username', '$address1', '$address2', '$password', '$email'
    )")or die(mysql_error()); ;
    echo "you have successfully registered ";
}

其他提示:

  • 您应该在数组中保留错误消息,并将其显示在列表中
  • 您可以使用不同的脚本来获取成功消息

答案 2 :(得分:0)

如果任何if条件失败,则需要结束脚本。

现在的方式将显示错误,但继续查询部分。

你可以在查询部分周围添加一个else {}来解决这个问题。

答案 3 :(得分:0)

无论是否设置了错误消息,您的插入代码都会运行。你可以添加

if (empty($errormessage)) {


mysql_query...


}

答案 4 :(得分:0)

好吧,你必须把你的

mysql_query("INSERT INTO `xxx` ( `id` , `Name` , `Address1` , `Address2` , `password`     ,`email` )
VALUES (
'', '$username', '$address1', '$address2', '$password', '$email'
)")or die(mysql_error()); ;

在最后一个elseif之后的else语句中:

[...]
elseif(trim($email)=="")
{
   $errormessage="enter the email S";
}
else
{
    mysql_query("INSERT INTO `xxx` ( `id` , `Name` , `Address1` , `Address2` , `password` , `email` )
    VALUES (
    '', '$username', '$address1', '$address2', '$password', '$email'
    )")or die(mysql_error()); ;
    echo "you have successfully registered ";
}