<?php include("conn.php");
$a=$_POST['bt'];
$b=$_POST['lynr'];
$c=$_POST['yzm1'];
if($a=="" and $_POST['submit1']=="提交"){
?>
<script type="text/javascript">alert("文章标题不能为空!")</script>
<?php
}else{
?>
<?php
$insert=mysql_query("insert into lynr(bt,lynr) values('$a','$b')");
?>
<?php
}
?>
上面代码想实现当“提交”操作的时候,判断$a的值为空则弹出提示,但是实现不了,请问该怎么解决啊?
判断$_POST['submit1']=="提交"的目的主要是避免网页刷新的时候弹出提示,因为表单的action 值为$PHP_SELF,这样验证只是我个人的想法,不知道是不是太累赘了?

解决方案 »

  1.   

    类似这样的验证应该加在前端用js验证:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    </head>
    <body>
    <script type='text/javascript'>
    function check_sub(){
    var btns = document.getElementsByTagName("input");
    for(var i=0; i < btns.length; i++){
    if(btns[i].value == ""){
    alert("输入内容不允许为空!");
    btns[i].focus();
    return false;
    }
    }
    }
    function checkFrom(){
      if(check_sub()){
        document.test.submit();
      }else{
        return;
      }
    }
    </script>
    <form name="test" method="post">
      <input type="text" name="testname" value="" />
      <input type="button" name="submit" value="submit" onclick="checkFrom()" />
    </form>
    </body>
    </html>
      

  2.   

    if(empty($_POST['test']))
        exit('<script type="text/javascript">alert("文章标题不能为空!")</script>');
      

  3.   

    当然最好是前端 js 和后端 php一起都做验证.
      

  4.   

    但是原则上说条件$a=="" and $_POST['submit1']=="提交"都满足才会向下执行,但是为什么实际不是这样的呢?
      

  5.   

    if($a=="" and $_POST['submit1']=="提交") 当$a有值或者 $_POST['submit1'] 不等于 “提交”(即表单不提交)就会进入else 的插入分支。
      

  6.   


    $_POST['submit1'] 也是可以判断的 但是你的代码写错了,关键不在于 有没有 submit1if(empty($_POST['test'])&&($_POST['submit1']=='提交')){
    exit('xxxx');
    }注意 中文 "提交"是否传递过来后仍然是提交.最好是先确认一下.
      

  7.   

    如果仅仅是判断所填内容是否为空,长度是否符合要求的话,在前端用JavaScript,如果避免页面刷新进行用户名密码等验证的话可以考虑Ajax.
      

  8.   

    <?php
    $a=$_POST['bt'];
    if($a=="" and $_POST['submit1']=="提交"){
    ?>
    <script type="text/javascript">alert("文章标题不能为空!")</script>
    <?php
    }else{
    ?>
    <?php
    echo 1111;
    ?>
    <?php
    }
    ?>
    <form method="POST" action="test.php">
    <input type="text" name="bt" value="" />
    <input type="submit" name="submit1" value="提交" />
    </form>
    怎么我测试就正常弹出了..
      

  9.   

    咋还整些中文表单名呢,太不专业了。。对用户提交上来的post或者get参数,要做严格的检查, isset是第一步,第二部是根据需要trim以后再emtpy判断是否空,再判断值是否合法,可以用In_array,先过滤干净了再开始程序逻辑。
      

  10.   

    在留言板中留言的内容没有见过处理就存储了,结果输出显示的时候留言内容中出现了HTNL的表单元素,例如按钮了什么的,在存储的时候这样的问题该怎么处理?(留言内容中有HTML元素的代码)
      

  11.   

    htmlspecialchars之后显示到页面上,入库只要addslashes,出库用stripslashes。
      

  12.   

    这个最好在js里做。当然,php也要检测。在js里做好检测,可以减少服务器的负担的。就是转来转去的负担。
      

  13.   

    if里面两个条件是用and吗,不是应该是&&吗
      

  14.   

    我喜欢用ajax配合json验证方便得很,ajax提交表单,然后返回json数据{'success':1;'message':'成功'}