分享

防止网页在刷新时重复提交处理$_POST变量

 竹林书屋@ 2012-05-02
防止网页在刷新时重复提交的方法记得在哪里看到过,后来忘记了,按大概的意思我今天自己写了个,好像也不难

做法是这样的,首先在SESSION会话中定义一个变量refresh,使它在每次加载网页时自增1.

CODE: [Copy to clipboard]
<?php 

//...省去SESSION类实例化代码...

if(!isset($_SESSION['refresh'])){
$sess->my_session_register("refresh"); 
$_SESSION['refresh'] = 1; 
} else { 
$_SESSION['refresh']++; 
?>

提交表单时,加入参数$_SESSION[’refresh’]:

CODE: [Copy to clipboard]
<form action="?action=blabla&refresh=".$_SESSION['refresh']." method=\"post\" name=\"abc\" />

在处理表单的函数部分,加入一个条件,如果 $_GET[’refresh’]== $_SESSION[’refresh’] - 1,则继续。
比如:

CODE: [Copy to clipboard]
$refresh = isset($_GET['refresh']) ? $_GET['refresh'] : "";
if ( $action = "navtrans" && $_POST['edit'] == "true" && $refresh == $_SESSION['refresh'] - 1 ){
//处理$_POST变量............
}

这样在浏览器地址栏的refresh=后面的值在按刷新按钮的时候是不会变的,而加载一次网页 $_SESSION[’refresh’] 则会加1,在这种条件下,$_GET[’refresh’] 是不会等于 $_SESSION[’refresh’] - 1的,防刷功能成功实现。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多