php判断代码是内容!="",然后被人写进去空值了,请问一下这是如何写进去的 , 如何防范?
            ps:我找了半天原因都没能写进去空值--!

解决方案 »

  1.   

     补充:数据库是mysql 并且该字段设为not null
      

  2.   

    trim了 if (trim($F('msg'))==""){
    alert ("请输入[内容]");
    $Fo('msg');
    return false;
    }
    function $F(id){
    return $(id).value;
    }
      

  3.   

    function validate_email(email)
    {
    if (!validate_ascii_data (email)) {
    return false
    } var invalidChars = "\"|&;<>!*\'\\"   ; for (var i = 0; i < invalidChars.length; i++) {
    if (email.indexOf(invalidChars.charAt(i)) != -1) {
    return false;
    }
    } if (email.indexOf("@")==-1){
    return false;
    } if (email.indexOf(" ") != -1){
    return false;
    }电子邮件的正则 电子邮件栏一样被写入空值。
      

  4.   

    先不说你客户端JS判断有没有问题在服务器程序里面也要加PHP代码来判断,不然我也可以直接模拟POST程序进去如果JS判断和PHP判断都加上的话,是不会有问题的,主要还是PHP判断
      

  5.   

    问题是这个php判断哪里有问题 而且别人是如何写入的呢
      

  6.   

    你用的是JS验证,很有可能因为浏览器兼容,或禁用客户端脚本,或某脚本出错导致JS不执行等原因导致验证不起作用。你可以往数据库里加入客户端浏览器环境一项看看。
      

  7.   

    好像是这样 肯定是人故意写入的 写入不只一条数据 但是禁用javascript后提交按钮什么的都不好使了 他是如何写入的呢 我向明白他是如何写入的 
      

  8.   

    不用提交按钮,直接用curl就可以写入其实不用想那么复杂,你把JS判断的都去掉,然后还是输入空格,回车之类的,看看提交后能不能插入数据库就可以了
      

  9.   

     在里面嵌入html代码会出现这种情况,能够写入空值 比如&nbsp 
      楼上的curl写入是怎么回事呢 能详细说说吗
      

  10.   

    给注入了呗,你有无过滤用户输入的串(比如最基本的要专义单引号或双引号)?你insert语句贴出来看看。
      

  11.   

    mysql_query ("insert into notice_send (ns_email,ns_note,ns_subject) values ('$to','$faxmsg','$subject')") or die (mysql_error());
      

  12.   

    那么你的php.ini的magic_quotes_gpc设置为on了吗?
    也就是$to,$faxmsg,$subject这些数据你都进行过滤了吧?最基本的单引号,双引号都有过滤吧?