-
2021-03-26 12:34:34
在php编程中,往往因为表单出错而返回页面的时候填写的信息都不见了,为了支持页面回跳,可以通过两种方法实现。
第一,使用Header方法设置消息头Cache-control
复制代码 代码示例:
header('Cache-control: private, must-revalidate'); //支持页面回跳
第二,使用session_cache_limiter方法
复制代码 代码示例:
//注意要写在session_start方法之前
session_cache_limiter('private, must-revalidate');
补充:
Cache-Control消息头域说明
Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if- cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must- revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下:
Public指示响应可被任何缓存区缓存。
Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
no-cache指示请求或响应消息不能缓存
no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
关于表单刷新
问:为什么在点击浏览器的后退按钮后,所有字段的信息都被清空了?
答:这是由于你在你的表单提交页面中使用了 session_start 函数。该函数会强制当前页面不被缓存。解决办法为,在你的 Session_start 函数后加入 header("Cache-control: private"); 注意在本行之前你的PHP程序不能有任何输出。
补充:还有基于session的解决方法,在session_start前加上
复制代码 代码示例:
session_cache_limiter('nocache');// 清空表单
session_cache_limiter('private'); //不清空表单,只在session生效期间
session_cache_limiter('public'); //不清空表单,如同没使用session一般
可以在session_start();前加上 session_cache_limiter("private,max-age=10800");
更多相关内容 -
php前进后退等功能实现代码
2021-04-08 11:15:07(实现操作的前进后退)和discuz论坛登录后查看帖子(可以前进后退查看过的帖子,还有帖子查看历史记录)和windows资源管理器地址栏前进后退功能一样。根据这种需要,实现了一个数据结构。写了一个通用的类,暂叫历史...和撤销,反撤销功能类似的一个功能。(实现操作的前进后退)
和discuz论坛登录后查看帖子(可以前进后退查看过的帖子,还有帖子查看历史记录)
和windows资源管理器地址栏前进后退功能一样。
根据这种需要,实现了一个数据结构。写了一个通用的类,暂叫历史记录类吧。
【原理和时钟类似。实例化对象时可以构造长度为N(可以根据需要定长度)个节点的环】
然后整合各种操作。前进、后退、插入、修改插入。
类可以构造一个数组。或者传入数组参数构造一个对象。 每次操作之后可以取得操作后的数组。 操作完的 数据可以根据自己的需要以合适的方式保存。 放在cookie,session里面,或者序列化,或转为json数据保存在数据库里,或者放在文件里面都可以。 方便下一次使用。
为了便于扩展,存放更多的数据。具体每一条数据也是一条数组记录。
比如根据需要进行扩展:array('path'=>'D:/www/','sss'=>value)
include 'debug.php';
/**
* 历史记录操作类
* 传入或者构造一个数组。形如:
array(
'history_num'=>20, //队列节点总共个数
'first'=>0, //起始位置,从0开始。数组索引值
'last'=>0, //终点位置,从0开始。
'back'=>0, //从first位置倒退了多少步,差值。
'history'=>array( //数组,存放操作队列。
array('path'=>'D:/'),
array('path'=>'D:/www/'),
array('path'=>'E:/'),
array('path'=>'/home/')
……
)
)
*/
class history{
var $history_num;
var $first;
var $last;
var $back;
var $history=array();
function __construct($array=array(),$num=12){
if (!$array) {//数组为空.构造一个循环队列。
$history=array();
for ($i=0; $i < $num; $i++) {
array_push($history,array('path'=>''));
}
$array=array(
'history_num'=>$num,
'first'=>0,//起始位置
'last'=>0,//终点位置
'back'=>0,
'history'=>$history
);
}
$this->history_num=$array['history_num'];
$this->first=$array['first'];
$this->last=$array['last'];
$this->back=$array['back'];
$this->history=$array['history'];
}
function nextNum($i,$n=1){//环路下n一个值。和时钟环路类似。
return ($i+$n)history_num ? ($i+$n):($i+$n-$this->history_num);
}
function prevNum($i,$n=1){//环路上一个值i。回退N个位置。
return ($i-$n)>=0 ? ($i-$n) : ($i-$n+$this->history_num);
}
function minus($i,$j){//顺时针两点只差,i-j
return ($i > $j) ? ($i - $j):($i-$j+$this->history_num);
}
function getHistory(){//返回数组,用于保存或者序列化操作。
return array(
'history_num'=> $this->history_num,
'first' => $this->first,
'last' => $this->last,
'back' => $this->back,
'history' => $this->history
);
}
function add($path){
if ($this->back!=0) {//有后退操作记录的情况下,进行插入。
$this->goedit($path);
return;
}
if ($this->history[0]['path']=='') {//刚构造,不用加一.首位不前移
$this->history[$this->first]['path']=$path;
return;
}else{
$this->first=$this->nextNum($this->first);//首位前移
$this->history[$this->first]['path']=$path;
}
if ($this->first==$this->last) {//起始位置与终止位置相遇
$this->last=$this->nextNum($this->last);//末尾位置前移。
}
}
function goback(){//返回从first后退N步的地址。
$this->back+=1;
//最大后退步数为起点到终点之差(顺时针之差)
$mins=$this->minus($this->first,$this->last);
if ($this->back >= $mins) {//退到最后点
$this->back=$mins;
}
$pos=$this->prevNum($this->first,$this->back);
return $this->history[$pos]['path'];
}
function gonext(){//从first后退N步的地方前进一步。
$this->back-=1;
if ($this->back<0) {//退到最后点
$this->back=0;
}
return $this->history[$this->prevNum($this->first,$this->back)]['path'];
}
function goedit($path){//后退到某个点,没有前进而是修改。则firs值为最后的值。
$pos=$this->minus($this->first,$this->back);
$pos=$this->nextNum($pos);//下一个
$this->history[$pos]['path']=$path;
$this->first=$pos;
$this->back=0;
}
-
php实现禁止浏览器后退的方法
2021-04-18 11:09:37php实现禁止浏览器后退的方法发布时间:2020-08-29 09:26:05来源:亿速云阅读:70作者:小新这篇文章将为大家详细讲解有关php实现禁止浏览器后退的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完...php实现禁止浏览器后退的方法
发布时间:2020-08-29 09:26:05
来源:亿速云
阅读:70
作者:小新
这篇文章将为大家详细讲解有关php实现禁止浏览器后退的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php实现禁止浏览器后退的方法:1、混合运用客户端脚本和服务器端脚本;2、在头部加【】标签,代码为【】。
php实现禁止浏览器后退的方法:
流程
1.php<?php
header("Cache-control:no-cache,no-store,must-revalidate");
header("Pragma:no-cache");
header("Expires:0");
if($_COOKIE['resetpw_success_v']){
//echo '密码已更改';exit();
header("Location: ****");
}
.........
?>
2.php 例:密码修改最后一步修改成功时,如果点击浏览器后退到1.php<?php
setcookie('resetpw_success_v','true',time()+600);
..........
?>
曾经有许多人问起,“怎样才能‘禁用’浏览器的后退按钮?使后退页面失效”,或者“怎样才能防止用户点击后退按钮返回以前浏览过的页面?”在找到的许多方案中,其中有一种建议禁止页面缓存。但都说得很片面,只能禁止IE,像Chrome浏览器就无能为力了,下面是一篇比较全面禁用所有浏览器缓存的文章,对提交表单后不让客户返回提交页面,防止重复提交表单,防止用户后退非常有用
由于不存在能够完全禁用后退按钮的方法,所以最好的方案应该是:混合运用客户端脚本和服务器端脚本。
最简单的方法是在头部加标签
如果使用上面的方法强制浏览器不再缓存web页面,必须注意以下几点:
只有在使用安全连接时“pragma: no-cache”才防止浏览器缓存页面。
对于不受安全保护的页面,“pragma: no-cache”被视为与“expires: -1”相同,此时浏览器仍旧缓存页面,但把页面标记为立即过期。
在ie 4或5中,cache-control”meta http-equiv标记将被忽略,不起作用。在实际应用中我们可以加上所有这些代码。
然而,由于这种方法不能适用于所有的浏览器,所以是不推荐使用的。但如果是在intranet环境下,管理员可以控制用户使用哪种浏览器,我想还是有人会使用这种方法。
关于php实现禁止浏览器后退的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
-
php如何实现禁止浏览器后退
2020-12-30 21:19:50php实现禁止浏览器后退的方法:1、混合运用客户端脚本和服务器端脚本;2、在头部加【】标签,代码为【】。【相关学习推荐:php图文教程】php实现禁止浏览器后退的方法:流程1.php...php实现禁止浏览器后退的方法:1、混合运用客户端脚本和服务器端脚本;2、在头部加【】标签,代码为【】。
【相关学习推荐:php图文教程】
php实现禁止浏览器后退的方法:
流程
1.php<?php
header("Cache-control:no-cache,no-store,must-revalidate");
header("Pragma:no-cache");
header("Expires:0");
if($_COOKIE['resetpw_success_v']){
//echo '密码已更改';exit();
header("Location: ****");
}
.........
?>
2.php 例:密码修改最后一步修改成功时,如果点击浏览器后退到1.php<?php
setcookie('resetpw_success_v','true',time()+600);
..........
?>
曾经有许多人问起,“怎样才能‘禁用’浏览器的后退按钮?使后退页面失效”,或者“怎样才能防止用户点击后退按钮返回以前浏览过的页面?”在找到的许多方案中,其中有一种建议禁止页面缓存。但都说得很片面,只能禁止IE,像Chrome浏览器就无能为力了,下面是一篇比较全面禁用所有浏览器缓存的文章,对提交表单后不让客户返回提交页面,防止重复提交表单,防止用户后退非常有用
由于不存在能够完全禁用后退按钮的方法,所以最好的方案应该是:混合运用客户端脚本和服务器端脚本。
最简单的方法是在头部加标签
如果使用上面的方法强制浏览器不再缓存web页面,必须注意以下几点:
只有在使用安全连接时“pragma: no-cache”才防止浏览器缓存页面。
对于不受安全保护的页面,“pragma: no-cache”被视为与“expires: -1”相同,此时浏览器仍旧缓存页面,但把页面标记为立即过期。
在ie 4或5中,cache-control”meta http-equiv标记将被忽略,不起作用。在实际应用中我们可以加上所有这些代码。
然而,由于这种方法不能适用于所有的浏览器,所以是不推荐使用的。但如果是在intranet环境下,管理员可以控制用户使用哪种浏览器,我想还是有人会使用这种方法。相关学习推荐:php编程(视频)
-
利用栈实现浏览器的前进后退功能
2021-04-24 21:27:51实现浏览器的前进后退功能 使用两个栈 X 和 Y,把首次浏览的页面依次压入栈 X,当点击后退按钮时,再依次从栈 X 中出栈,并将出栈的数据依次放入栈 Y。当点击前进按钮时,依次从栈 Y 中取出数据,放入栈 X 中。当栈... -
PHP阻止页面后退 如何用PHP实现禁用浏览器的后退,使后退的页面失效或链接到别的地方?
2020-12-21 20:31:32PHP阻止页面后退如何用PHP实现禁用浏览器的后退,使后退的页面失效或链接到别的地方?使用php禁止浏览器缓存?流程1.php --> 2.php1.phpheader("Cache-control:no-cache,no-store,must-revalidate");header(... -
PHP阻止页面后退如何用PHP实现禁用浏览器的后退,使后退的页面失效或链接到别的地方?使用php禁止浏览器...
2020-12-21 20:31:37流程1.php-->2.php1.phpheader("Cache-control:no-cache,no-store,must-revalidate");header("Pragma:no-cache");header("Expires:0");if($_COOKIE['resetpw_success_v']){//echo'密码已更改';exit();header(... -
用javascript实现禁止页面后退返回上一页的代码
2020-12-30 21:19:46用javascript实现禁止页面后退返回上一页的代码:有时候我们需要用户在点击了如下一步的按钮时,页面跳转到了下一个页面,这时想不允许用户返回后退到上一页,可以采用下面的方法:在需要跳转的页面(上一个页面),添加如下... -
用PHP实现弹出消息提示框的两种方法
2021-04-24 15:14:26用PHP实现弹出消息提示框的两种方法方法一:复制代码 代码如下:echo "alert('提示内容')";方法二:复制代码 代码如下:echo ';alert("这是";location.href="index.htm";;';里面的location.href="index.htm"表示你点击... -
PHP,HTML,js弹窗返回上一页
2021-03-20 13:36:55PHP,HTML,js弹窗返回上一页 PHP弹窗返回上一页 <?php echo "<script>alert('暂无数据');window.history.back(-1);...返回上一步</a> <a href="<%=Request.ServerVariables -
php如何更好更有效的实现-----用户注册页面
2021-05-08 15:53:16论坛上用户注册的步骤分为几部: 第一步 \ 协议页面, 只有同意这个协议才可以进入下一步注册第二步 \ 表单输入页面, 输入用户的注册信息第三步 \ 注册结果页面,提示注册成功在实际工作中,如果我们要开发实现这种注册... -
phpStorm中Ctrl点击方法之后如何返回
2020-09-04 10:38:52Ctrl+E Ctrl+E可以调用出最近访问的文件列表,第一个就是你跳转过来的页面。...同时按这三个键,就能一步一步的退回到之前的地方。 这个是个快捷键。 也可以使用编辑器导航栏中的:Navigate > Back ... -
PHP如何更好更有效的实现---用户注册页面
2021-04-22 08:47:26论坛上用户注册的步骤分为几部:第一步 协议页面, 只有同意这个协议才可以进入下一步注册第二步 表单输入页面, 输入用户的注册信息第三步 注册结果页面,提示注册成功在实际工作中,假如我们要开发实现这种注册页面,要... -
PHP XML Expat 解析器
2021-04-13 13:56:17PHPXML Expat 解析器内建的 Expat 解析器使在 PHP 中处理 XML 文档成为可能。XML 是什么?XML 用于描述数据,其焦点是数据是什么。XML 文件描述了数据的结构。在 XML 中,没有预定义的标签。您必须定义自己的标签。... -
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口
2021-01-13 01:04:06当在错误页面的时候,点击返回或者Android物理按键上一步的时候,将关闭页面。在微信、支付宝、百度钱包中,他们对页面关闭进行了封装,传统的window.close()是无效的,必须要使用它们的js代码才能关闭。下面是三种... -
关于后退后提交数据,COOKIE会延迟一步,求解决方案。
2013-03-22 23:02:29当在a.php勾选是,然后点击下一步,将数据提交给b.php,显示“1”。 这时候点击上一步,返回将是的勾选去掉,然后再点下一步,还是会显示“1”。 再点上一步,然后再点下一步,这是才会显示“0”。 这种不同步... -
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
2021-04-12 19:15:54例如,我们当前位置处于以下页面: //www.jb51.net/articles/6?author=eagle 如果我们在该页面点击了某个操作,那么在我们的控制器中,我们输出 echo url()->previous(); 会发现输出的结果与我们之前操作的页面的... -
2013-01-28 09:46 PHP阻止页面后退如何用PHP实现禁用浏览器的后退,使后退的页面失效或链接到别的地方?...
2013-06-27 11:36:42流程1.php --> 2.php 1.php header("Cache-control:no-cache,no-store,must-revalidate"); header("Pragma:no-cache"); header("Expires:0"); if($_COOKIE['resetpw_success_v']){ //echo '密码已更改'... -
php笔记
2019-06-28 10:06:41php简要札记 了解php基本使用,是方便后期理解node的使用,而不是主要技能,前端开发不写这个 了解php基本使用,是方便后期理解node的使用,而不是主要技能,前端开发不写这个 了解php基本使用,是方便后期理解... -
浏览器希望用户在第二页上按后退按钮时重新提交/刷新第一页
2015-10-14 20:06:51<p>Update: I figured out that it has something to do with the PHP Session, however I dont know why its working correctly now: <p>This is the PHP code I had at the beginning of page: <pre><code>`<... -
PHP 面试总结(持续更新) --小丑
2019-03-18 21:15:02cookie数据存放在客户的浏览器上,session数据放在服务器上,以文件的形式存放,可以从php.ini里面的session.save_path找到存放位置 cookie不是很安全 ,cookie可以进行cookie欺骗,别人可以获取cookie中的session ... -
PHP面试题总结
2021-03-28 15:12:44$router.push(‘url’) 跳转到指定的URL,在history栈中添加一个记录,点击后退会返回上一个页面 router-link 【实现跳转最简单的方法】 ,浏览器在解析时,将它解析成一个类似于a标签。 this. r o u t e r . r e p... -
PHP开发者的JavaScript快速教程(phper简明js教程)
2019-05-16 18:32:00每一位PHP开发者或多或少的都掌握一些JavaScript知识,本文写在《云客Drupal8源码分析》前端相关章节发布前,意在帮助沉浸在后端世界的phper快速进入前端js世界(推荐phper关注学习Drupal,那是php世界的珠峰... -
Windows系统下安装Apache+tomcat+MySQL+PHP服务器环境
2021-02-05 00:57:152.0.63-win32-x86-no_ssl.msi 或apache_2.0.63-win32-x86-no_ssl.exemysql-5.0.81a-win32jdk-1_5_0_15-windows-i586-p.exeapache-tomcat-5.5.26.exeapache-tomcat-5.5.26-admin.zipphp-4.4.8-win32... -
(转)移动端自定义返回上一页的方法:history
2021-04-10 14:10:10在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回、后退、上一页等按钮实现自己的关闭页面、调整到指定页面或执行一些其它操作的需求。那在代码中怎样监听当点击微信、支付宝、百度糯米、百度钱包等app... -
写给PHP初学者:开发环境搭建之完全篇(PHP+MySQL+Apache+NetBeans)
2016-09-13 22:34:50另外,说明一下,我使用的是64位的操作系统,所以我选择安装的软件基本都是64位版本。如果你使用的是32位的操作系统,请勿使用64位软件进行安装。当然如果你使用的是操作系统是64位的,你可以安装64位或者32位的软件...