<script>
function checkform(){
if(...){
alert('Error.');
return false;
}
return true;
}
</script>
<form ... onsubmit="return checkform();">
...
</form>
function checkform(){
if(...){
alert('Error.');
return false;
}
return true;
}
</script>
<form ... onsubmit="return checkform();">
...
</form>
history.back()
用户输入内容基本保留或者session
<input type=text name=username value=<?= $_POST["username"] ?> />
代码可以这样写(用session)
输入表单页面:
<? session_start();
$errors=$_SESSION["errors"];//错误提示
$formvar=$_SESSION["formVars"];//输入内容function fieldError($fieldName, $errors)//用来显示错误提示
{
if (isset($errors[$fieldName]))
echo
"<font color=RED>$errors[$fieldName]</font><br>";
}
?>
<form action="reg2.php" method="post">
<table>
<tr bgcolor="#FFD7CE">
<td width="134" height="20" align="right">* 用户名</td>
<td width="380" height="20" align="left"><?
echo fieldError("username", $errors);
?><input name="uname" type="text" value="<? echo $formvar["uname"];?>"></td>
</tr>
<tr bgcolor="#FFD7CE">
<td height="20" align="right">* 真实姓名</td>
<td height="20" align="left">
<?
echo fieldError("rname", $errors);
?> <input name="realname" type="text" value="<? echo $formvar["realname"];?>"></td>
</tr>
.........
<tr>
<td align="center"><input type="submit" name="Submit3" value="下一步"></td>
</tr>
</table>
</form>
检测输入页面
<?function clean($s,$len)//过滤一些危险字符
{
$s=substr($s,0,$len);
//$s=escapeshellcmd($input);
$a=array("'",";","#");
$s=str_replace($a,"",$s);
$s=htmlspecialchars($s);
return $s;
} session_start();
if (!session_is_registered("errors"))
session_register("errors");
$_SESSION["errors"] = array();
if (!session_is_registered("formVars"))
session_register("formVars");
$_SESSION["formVars"]= array();foreach($_POST as $varname => $value)
{
$_SESSION['formVars'][$varname]= trim(clean($value,250));
//echo $formVars[$varname];
}
//开始检测。
if ....
检测的同时将报错信息存入$_SESSION['errors']最后如果发现有错,返回输入页面,同时session的数据也会在上一页面显示
有三个解决办法:方法1:
在session_start();前面加一句话就可以了:
session_cache_limiter('private_no_expire');
session_start();方法2:
用cookie。在web的onload事件中,用javascript读取cookie ,在onsubmit的时候用javascript设置cookie。方法3:用php读取和设置cookie/session,这个比较麻烦,代码不好管理。还受页面缓存的影响。强烈建议不要用。