记得面试的时候遇到一个刷新的问题,不过当时居然一下子蒙了。。囧啊。。。

其实本来大可以用验证码或者session什么的,这里先说一下吧,关于用session的。

 

  1. <?php  
  2. /*  
  3. *preventreload.php  
  4. */ 
  5. session_start();  
  6. $_SESSION['preventreload'] = rand(1,999);  
  7. ?>  
  8. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  9. <html>  
  10. <head>  
  11. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  12. <title>防刷新</title>  
  13. </head>  
  14. <body>  
  15.     <form action="post.php" method="post">  
  16.     <input type="hidden" name='reload' value="<?php echo $_SESSION['preventreload']; ?>" />  
  17.     <input type="submit" value="sub" />  
  18.     </form>  
  19. </body>  
  20. </html> 

提交到post.php后,可以判断post值与session值是否一样,一样就执行,并unset这个session,然后,如果刷新这个页面就是不行的。

 

  1. <?php  
  2. /*  
  3. *post.php  
  4. *author:qtvb-star  
  5. */ 
  6. session_start();  
  7. if($_POST['reload'] === $$_SESSION['preventreload']){  
  8. //code you want  
  9. }else{  
  10. //error you want to show  
  11. }  
  12. unset($_SESSION['preventreload']);  
  13. ?> 

这个只是简易的防刷新。