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中判断正确返回上一页想添加新内容的时候
表单内容还是存在的,自己感觉好矛盾,不知道大家有没有好的解决办法,谢谢了
<?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中判断正确返回上一页想添加新内容的时候
表单内容还是存在的,自己感觉好矛盾,不知道大家有没有好的解决办法,谢谢了
你的第一种方法:只适合在客户端验证,不能防止跨站提交表单
你的第二种方法:相对来说比较麻烦,不是好的解决方案,不可能为每个用户开户session
你的第三种方案:不知道如何,对每个表单字段的值进行判断,当然可以用ajax把值发送到服务器端,
但服务器端怎么知道每个表单的值是什么数据类型才是合法的呢?请指教
<?php
$name = $_POST['name'];
if($name != "aaa"){
echo "<script>";
echo "history.go(-1);";
echo "</script>";
}else{
header("Location:a.php");
}
?>这样好像没有问题吧?
这么大的几个单词你没有看到吗?to see it -> session_start();
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 则会返回且输入框为空