a.php内容如下
<?php
session_start();
header("Cache-Control:private");//加这一句的目的是为了在b.php中判断a.php提交的内容是否合法,如果不合法的话,返回的时候表单的值不会清空
<form method="post" action="b.php">
...........
...........
</form>?>
b.php内容如下
接收a.php发送的值进行判断,如果正确则返回上一页的时候,清楚上一页的表单里的值,(即,添加新的内容)
如果不正确则返回上一页的时候,保留上一页的表单的值,给用户修改。但是如果在a.php加上了header("Cache-Control:private");//就算b.php中判断正确返回上一页想添加新内容的时候
表单内容还是存在的,自己感觉好矛盾,不知道大家有没有好的解决办法,谢谢了

解决方案 »

  1.   

    这个就不要用php来解决了吧,用js的正则来判断就行了,你可以在form的 onSubmit中添加事件,在这个事件函数中用与此同时对每个文本框进行判断,如果不满足就返回false就行了,这样也是不会取消你填的资料的。第二种方式就是用session第三种,也是最好用的就是用Ajax了,用一个jquery框架做吧,你看现在的注册都是采用这种方式的,在一个文本框填完转到下一个文本框时就会自动提示行不行了,提高了使用感受。
      

  2.   

    谢谢你的回答
    你的第一种方法:只适合在客户端验证,不能防止跨站提交表单
    你的第二种方法:相对来说比较麻烦,不是好的解决方案,不可能为每个用户开户session
    你的第三种方案:不知道如何,对每个表单字段的值进行判断,当然可以用ajax把值发送到服务器端,
    但服务器端怎么知道每个表单的值是什么数据类型才是合法的呢?请指教
      

  3.   

    还是用正则啊,不过这个正则就是用PHP中的正则来完成了,将客户端提交的数据交由PHP的正则表达式来匹配,将匹配的结果返回给客户端,这样就避免了避开客户端验证这块儿了。jquery是个不错的选择!!
      

  4.   


    <?php
    $name = $_POST['name'];
    if($name != "aaa"){
    echo "<script>";
    echo "history.go(-1);";
    echo "</script>";
    }else{
    header("Location:a.php");
    }
    ?>这样好像没有问题吧?
      

  5.   

    一个字"唉!"兄弟,你咋能这么讲呢?
    这么大的几个单词你没有看到吗?to  see it -> session_start(); 
      

  6.   

    我咋没看见呢?我给你的是b.php 文件 又不是a.php文件 即便加上a.php<?php
    session_start();
    header("Cache-Control:private");
    ?>
    <form name=form1 method=post action="b.php">
    <input name=name type=text value=''>
    <input type=submit name=submit value='提交'>
    </form>
    b.php<?php
    session_start();
    $name = $_POST['name'];
    if($name != "aaa"){
    echo "<script>";
    echo "history.go(-1);";
    echo "</script>";
    }else{
    header("Location:a.php");
    }
    ?>
    在我这边如果输入aaa的话则会返回同时输入框为你刚刚输入的,如果输入非aaa 则会返回且输入框为空