请问,PHP提交表单,如果验证提交的数据?不让别有用心的人作为攻击对象。
我的验证代码如下:
//自定义报错函数,出现错误返回并终止程序执行
function error($msg){
                     echo "<script>alert('".$msg."');history.go(-1);</script>";
                     exit();
}
//邮箱地址注入换行漏洞
function spamcheck($field){
  $field=filter_var($field, FILTER_SANITIZE_EMAIL);
  if(filter_var($field, FILTER_VALIDATE_EMAIL)){
         return TRUE;
    }
       else{
         return FALSE;
    }
}
//提交数据
$username=trim($_POST["username"]);
$pose=trim($_POST["pose"]);
$company=trim($_POST["company"]);
$address=trim($_POST["address"]);
$telephone=trim($_POST["telephone"]);
$email=trim($_POST["email"]);
$content=trim($_POST["content"]);
if($username!="" && $content!="" && $company!="" && $telephone!="" && $email!=""){
          //验证用户名的长度
           if(strlen($username)>10) {
                     error("用户名长度应小于10!");
              }
              
              //验证邮箱名称的有效性
              if (isset($email)){
                $mailcheck = spamcheck($email);
                if ($mailcheck==FALSE){
                error("邮箱地址输入错误");
          }
              }
}
else{
         echo "<script>alert('您留下的信息不完整!');history.go(-1);</script>";
         exit();
}请大家帮忙看看,还有什么要补充的地方,或者有新的建议吗?谢谢了。

解决方案 »

  1.   

    填写的框框可以用 htmlspecialchars 处理一下还有特殊字符 如 ' 等  用addcslashes处理一下
      

  2.   

    谢谢楼上兄弟。
    $username=htmlspecialchars(trim($_POST["username"]));
    $pose=htmlspecialchars(trim($_POST["pose"]));
    $company=htmlspecialchars(trim($_POST["company"]));
    $address=htmlspecialchars(trim($_POST["address"]));
    $telephone=htmlspecialchars(trim($_POST["telephone"]));
    $email=trim($_POST["email"]);
    $content=htmlspecialchars(stripslashes(trim($_POST["content"])));
    这样可以了吗?电子邮件那个已加了验证的办法。
      

  3.   

    htmlspecialchars只在页面显示内容的时候用就行了
    数值型的强制转成数字
    非数值型的过来单引号
      

  4.   

    那请问楼上兄弟,具体如何做呢,我才学PHP,谢谢了。
      

  5.   

    $username=addslashes(htmlspecialchars(trim($_POST["username"])));
    $pose=addslashes(htmlspecialchars(trim($_POST["pose"])));
    $company=addslashes(htmlspecialchars(trim($_POST["company"])));
    $address=addslashes(htmlspecialchars(trim($_POST["address"])));
    $telephone=addslashes(htmlspecialchars(trim($_POST["telephone"])));
    $email=trim($_POST["email"]);
    $content=addslashes(htmlspecialchars(stripslashes(trim($_POST["content"]))));
    这样可以吗?