<script>
function checkform(){
  if(...){
    alert('Error.');
    return false;
  }
  return true;
}
</script>
<form ... onsubmit="return checkform();">
...
</form>

解决方案 »

  1.   

    history.go(-1)
    history.back()
    用户输入内容基本保留或者session
      

  2.   

    POST到本页,表单:
    <input type=text name=username value=<?= $_POST["username"] ?> />
      

  3.   

    在服务器端检测输入数据后发现有错误可以用session或get方法将输入数据传回
    代码可以这样写(用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的数据也会在上一页面显示
      

  4.   

    呵呵,估计你使用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,这个比较麻烦,代码不好管理。还受页面缓存的影响。强烈建议不要用。