PHP构建不依赖于cookie的手机端用户登录配置,url_rewriter.tags设置

FPGA 核脉冲梯形成型 Verilog 实现:从 MATLAB 到 50MHz 采样率部署 本文详细解析了FPGA实现核脉冲梯形成型的完整流程,从MATLAB仿真到50MHz采样率的Verilog硬件部署。重点探讨了梯形成型算法对负指数信号的优化处理,包括定点数量化、流水线架构设计及资源优化技巧,为核辐射探测与高能物理实验提供高效解决方案。 阅读详情
手机端登录 网站的问题是一个困扰我很久的问题。总是会有那么一些 用户告诉我,他的手机不能登录网站了。要想能有效地解决手机登录的问题,一种方案就 是尽可 能多地模拟出用户的手机端环境出来,针对这些具体的环境对代码进行测试和调整。另一种方案就是尽可能地让网站摆脱对于 客户端cookie环境的依赖,创建 更加健壮的代码。

  随着信息技术的发展,手机本身的硬件设备越来越先进,功能也越来越全面,对于cookie的支持显然不成问题。不过,总还是有一部分人群在使用着比 较低端 的手机。做为开发者来说,要能最大范围地满足不同手机用户的需求,就不得不考虑对于不支持cookie的手机的支持。否则,你可能不得不一遍又一遍地对用 户说,我们的网站支持带有cookie功能的手机,甚至还得对着用户解释半天什么是cookie。

  那么,现在就来看看我们需要为创建不依赖于cookie的手机端用户登录机制需要做哪些准备。

  一、了解php对于session机制的支持

  php.ini中关于session的几个有用的字段:

  session.use_trans_sid 通过开启这个参数,即可启用通过url参数传递sessionId的支持。默认值为0,不开启。

  url_rewriter.tags 哪些地方需要用来传递sessionId。默认值 为”a=href,area=href,frame=src,input=src,form=fakeentry”,表示在标签a=href表示对于标签 a的href属性,要将sessionId附加上去。

  session.use_cookies 默认的值是“1”,代表sessionId使用Cookie来传递,反之就是使用url参数来传递。如果 session.use_trans_sid=1,那么启用该选项,在客户端支持cookie的情况下,仍然使用cookie传递sessionId,在 检测到客户端不支持cookie的情况下,则会使用url参数传递sessionId。

  session.name 这个就是SessionID储存的变量名称,默认为PHPSESSID

  session.cookie_lifetime 这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭sessionId就作废。

  session.gc_maxlifetime 这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除。

  session.save_path session的保存路径。默认为/tmp。如果在路径前加2;则表示cookie的存储深度为2。比如如果session.sava_path=2; /tmp/session,那么sess_005c685e3ec4e0cf6b667245225299c8这个session就会保存在/tmp /session/0/0/这个目录下。

  二、基本使用方法

  新建一个session.php文件,代码为:

  <a href="http://m.cnblogs.com/147739/”hello.php”>hello</a>

  最后输出来的时候链接地址无疑还是hello.php,那么,我们来增加几行代码,让它变得能支持传递sessionId。

<?phpini_set('session.use_trans_sid',1);?><a href="http://m.cnblogs.com/147739/”hello.php”>hello</a>

  在浏览器中看的时候,链接还是没有变化。怎么回事呢?原来服务器端在检测到浏览器端支持cookie的情况下,是不会开启url传递sessionId的。

  不妨试试禁用浏览器的cookie。会发现效果依旧。这是怎么回事呢?

  实际情况是,要让服务器支持替换链接地址,首先要让服务器能获取到sessionId。那么我们就要开启session才行。这时就要用到session_start函数了。再修改一下代码如下:

<?phpini_set('session.use_trans_sid',1);session_start();?><a href="http://m.cnblogs.com/hello.php" target="_blank" rel="nofollow">

<a href="http://m.cnblogs.com/hello.php?PHPSESSID=f10962d83fdfb27b501b53e099916a90" target="_blank" rel="nofollow">

  那么恭喜,我们的目标已经基本完成了。

  在前面的代码中,我们都是直接在代码中使用ini_set函数对php.ini的字段进行设置,这样做有什么好处呢?因为在实际的服务器环境中,可 能会运行多个网站,修改php.ini中的配置会直接影响到其他网站的运行,而是用在代码中设置则能在最大程度上削弱这种影响。

  三、如何确保各种标签传递sessionId

  在前面的例子中,我们已经能让a标签的href属性正确地附加上sessionId了。不过,在实际的开发中,可能会有更加复杂的情况。比如,你可能会用到form,也有可能用到iframe,甚至即使在使用图片的时候也需要传递sessionId。那么来看下面的代码:

<?phpini_set('session.use_trans_sid',1);session_start();?><a href="http://m.cnblogs.com/hello.php" target="_blank" rel="nofollow">

  刷新界面后,输出的代码为:

<a href="http://m.cnblogs.com/hello.php?PHPSESSID=a1ff38e07c28474b80766ef96ad88013" target="_blank" rel="nofollow">

  也就是说,对form,已经能很好地传递sessionId了,但是对于iframe和img,却还是不能传递sessionId。怎么办呢?难道需要我们手动来赋值?

  其实不然,在第一部分,我们已经提到一个有用的字段了——url_rewriter.tags。我们尝试增加它对于iframe和img的支持。代码如下:

<?phpini_set('session.use_trans_sid',1);$tags = ini_get('url_rewriter.tags');ini_set('url_rewriter.tags',$tags.',iframe=src,img=src');session_start();?><a href="http://m.cnblogs.com/hello.php" target="_blank" rel="nofollow">

  输出来的结果如下:

<a href="http://m.cnblogs.com/hello.php?PHPSESSID=a1ff38e07c28474b80766ef96ad88013" target="_blank" rel="nofollow">

  很显然,iframe和img也能顺利地传递sessionId了。

  到此为止,我们已经能解决大部分的问题了。

  四、重定向情况下的传递

  通过第二部分,我们已经能把页面输出的sessionId传递解决掉了,但这还不是全部。比如,我们经常会通过设置header来进行页面的重定向。

header(‘Location: /hello.php’);

  在这种情况下,很显然,php并不会去处理。那么,我们还是需要自己手动来进行调整了。代码如下:

<?phpini_set('session.use_trans_sid',1);$tags = ini_get('url_rewriter.tags');ini_set('url_rewriter.tags',$tags.',iframe=src,img=src');session_start();function get_redirect_url($url) {$sessionkey = ini_get('session.name');$sessionId = session_id();if (strpos($url,'?') !== false) {$tag = '&';} else {$tag = '?';}$url .= $tag.$sessionKey.'='.$sessionId;return $url;}$rurl = get_redirect_url('/hello.php');header('Location: '.$rurl);?>

  通过get_redirect_url函数,我们就能将重定向的网址也支持传递sessionId了。

  太好了,又解决了一种情况。

  五、wap1.x的特殊情况

  不过,在wap1.x下使用wml开发的时候,还有一些特殊的情况。比如,url中的&需要转化为&amp;,否则浏览器解释的时候就会报错。因此,对于页面标签和重定向的情况,我们都需要针对wap1.x的页面做特殊处理。

  重定向的情况很好处理,将第四部分的get_redirect_url函数中的$tag=’&’,在wap1.x的环境中替换 为$tag=’&amp;’即可。不过对于界面标签的处理,则需要我们引入一条新的配置项——arg_separator.output。这个配 置项用来指定当在url中加入sessionId参数时,使用什么样的连字符,默认值是&。那么,在已知处于wap1.x环境时,加入如下的语句 即可逢凶化吉了:

ini_set('arg_separator.output','&amp;');

  好了,到此为止,我们已经基本上能解决掉wap开发中使用url传递sessionId的大部分情况了。看似内容比较多,实际上就介绍了html标 签中url如何传递sessionId和使用重定向时如何传递sessionId两种情况,并对wap1.x环境下的情况做了一些特殊处理,最终确保不依 赖于cookie的用户登录机制得以实现的过程。

 

【ROS】Nav2源码之nav2_collision_monitor(碰撞监测)详解 nav2_collision_monitor碰撞监视器是一个节点,为机器人提供了一个额外的安全级别。它使用来自传感器的数据,执行若干与避免碰撞相关的任务,绕过成本图和轨迹规划器,监测是否需要紧急停止或者减速。 阅读详情

相关推荐

sentaurus学习笔记(HFET_pGate_GaN仿真)(五)

`(sdedr:define-constant-profile`和`(sdedr:define-constant-profile-region`命令用于定义并应用一个恒定的活性硼掺杂浓度剖面`"ndop_GaN_gate_const"`到氮化镓栅极层上,其值为`NpGaN_gate`。- `"Oxide"`指定了这一层的材料名称(在这里代表氧化层),而`"nucleation"`是这一层在仿真中的标识名称。- `"GaN"`指定了这一层的材料名称,而`"GaN_gate"`是这一层在仿真中的标识名称。

qq_52640792的博客 940

php教程之配置文件详解(七)

[PHP-Core-OutputControl] ;输出控制函数很有用,特别是在已经输出了信息之后再发送 HTTP 头的情况下。 ;输出控制函数不会作用于 header()或 setcookie()等函数发送的 HTTP 头, ; 而只会影响类似于 echo()函数输出的信息和嵌入...

271

从桨叶设计到电机匹配:手把手教你调出无人机最佳动力组合

本文系统介绍了无人机动力系统的核心匹配原则,重点解析了如何通过测试与数据分析,优化螺旋桨与电机的组合,从而显著提升系统力效与续航。文章提供了从参数解读、实战测试到深度调优的完整指南,帮助开发者解决电机过热、推力不足等常见问题,实现无人机性能最大化。

weixin_29305313的博客 241

php.ini配置文件详解

[PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的 ;;;;;;;;;;;;;;;;;;; ; 关于这个文件 ; ;;;;;;;;;;;;;;;;;;; ; 这个文件控制了PHP许多方面的观点。为了让PHP读取这个文件,它必须被命名为 ; 'php.ini'。PHP 将在这些地方依次查找该文件:当前工作目录;环境变量PHPRC ; 指明的路径;编译时指定的路径...

fighting_tl的博客 1067

从零构建生产级K8s-v1.35.0集群:基于Containerd与Cilium的kubeadm实战指南

本文详细介绍了从零构建生产级K8s-v1.35.0集群的全过程,涵盖环境准备、Containerd配置、Kubernetes组件安装、集群初始化及Cilium网络部署等关键步骤。通过实战经验分享系统调优技巧和常见问题解决方案,帮助读者快速搭建稳定高效的Kubernetes集群。

weixin_28725553的博客 219

用Matlab系统辨识工具箱搞定温控系统建模:从阶跃响应到传递函数(附完整代码)

本文详细介绍了如何使用Matlab系统辨识工具箱进行温控系统建模,从阶跃响应数据采集到传递函数参数辨识的全过程。通过实际案例和完整代码,帮助工程师快速掌握PID控制参数整定技巧,提升温控系统设计效率。特别适合单片机开发者和自动化控制工程师参考。

weixin_30736301的博客 310

urlrewriter首页设置

当前配置的是j2ee 下的web.xml

hejias的专栏 646

别再手动算了!用Excel函数一键搞定AQI和首要污染物分析(附完整公式模板)

本文介绍如何利用Excel函数自动化计算AQI和首要污染物分析,大幅提升数据处理效率。通过构建标准化输入模板、智能计算IAQI、自动判定AQI与首要污染物,并生成可视化仪表盘,帮助环保工作者快速完成每日监测报告。

weixin_30443075的博客 345

PHP配置文件

从开始使用PHP到现在已经快2年多了,但是从来没有仔细看过php.ini。利用周末这两天断断续续将里面的注释翻译成了中文,感觉看到了很多以前从来没有关注过的配置,但是却曾经使用过与这些配置相关的功能或扩展模块,大脑因此也装进了一些新的东西。或许现在有些配置看不懂或者用不到,但是想想自己对这份配置文件有了一些印象,以后遇到了跟配置PHP相关的问题应该会有一点点思路吧?!同时看英文文档的水平也提高了些

Jerry_Dui的专栏 4537

【LVGL】学习笔记--(3)界面切换以及显示优化

界面切换和帧率优化

sinat_33408502的博客 1万+

基于改进Unet的多场景水果图像分割与分类研究

本文针对复杂场景下的水果图像分割问题,提出了一种改进Unet模型。通过构建包含8类水果、3种成熟度及多种干扰场景的数据集,采用ResNet50与MobileNetV3作为骨干网络,并在跳跃连接层集成CBAM注意力机制。实验表明,改进模型在测试集上达到91.6%的mIoU,推理速度提升23%,特别在重叠水果和低光照场景表现突出。研究为农业视觉检测提供了有效解决方案。

AI的内部世界的博客 304

官方URLRewriter Module实现URL重写

由于需要我们经常会想将动态的页面做成伪静态的,或者在get传值的时候使其简洁明了(实现“可删节”的URL),这时我们需要用到URL重写,微软的MSDN上有详细的原理和使用介绍。我这里就将一种简单的使用方法和步骤写下来。  MSDN文章:http://msdn.microsoft.com/zh-cn/library/ms972974.aspx  具体实现步骤(其中的一种实现方法):  一、下载相关的D

锄禾日当午 922

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

DokuWiki的URL重写

默认情况下,DokuWiki不做任何的URL重写,它的原始URL是这样的:http://example.com/doku.php?id=page  这样的URL是比较难看的,更重要的是有些搜索引擎不收录。  通过设置DokuWiki的userwrite配置选项它可以支持两种URL重写方法:一个是利用服务器的mod_rewrite,另一个是在DokuWiki内部自己处理URL重写。  下面是user

magento网站建设,magento模板开发,magento支付模块 5676

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

使用PHP实现Url Rewriter(URL重写)

项目主页:http://www.thyphp.com/friendly-url-is-it-really-needed.html下载地址:http://cesars.users.phpclasses.org/browse/package/4231.htmlURL Rewriter Cesar D. Rodas  This class provides an easy mechanism to 

曹振华 2422

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

PHP 使用cookie实现记住登录状态

php使用cookie实现记住登录状态,本文用最原始的方法讲解如何实现记住登录状态,给出3个步骤和具体实现代码,需要的朋友可以参考下。要实现记住密码自动登录的功能,我们大多数据都是利用了客户端的cookies来实现。php制作记住密码自动登录的解决思路,其实也就是对session,cookies的操作一、检查用户是否登录[php] view plain copy&lt;?php  // 检查用户是...

zhao_teng的博客 1万+

php.ini apache.conf

[PHP] ;;;;;;;;;;;;;;;;;;; ; About php.ini ; ;;;;;;;;;;;;;;;;;;; ; PHP's initialization file, generally called php.ini, is responsible for ; configuring many of the aspects of PHP's beh...

weixin_30278311的博客 382

php让手机浏览器记住密码,php 利用cookie实现网页记住用户名和密码的功能

这篇文章介绍的内容是关于php 利用cookie实现网页记住用户名和密码的功能,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下1.html部分记住账号密码记住用户名和密码用 户 名: 密码: 记住用户名和密码是否是否 2.php部分function actionRemember(){$this->name=$_COOKIE['name'];$this->passwo...

weixin_30616309的博客 350

记一次iphone 微信内置浏览器跨域无法获取cookie问题的解决方法

记录了针对微信IOS客户端无法进行jsonp跨域写cookie值问题的一次解决方法。但未真正解决该问题,只是比较取巧的解决了由该问题引起的一个无法获取登录态的Bug。

技术小白猿的博客 3万+

PHP COOKIE的几种设置方式

设置cookie的方式 setcookie(string name,string value,int expire,string path,string domain,int secure) setrawcookie(string name,string value,int expire,string path,string domain,int secure) header( name=val

ytawu的专栏 1209

使用PHP模拟 URL Rewrite

<br />项目中有许多的服务器不支持Rewrite,或者配置起来太麻烦,看到许多网站也采用了下面方式的Rewrite方法,于是想到可以用PHP模拟一个这样URL。 复制内容到剪贴板代码:?a/haha/b/hehe/d/hoho.html<br />通过实例化类后,也可以通过$_GET及$_SERVER["QUERY_STRING"]正常获取到页面GET参数的传递,并附加了$_SERVER["R_QUERY_STRING"]预定义变量。这样许多的项目就可以通过不用太大的改变就可以实现Rewrite了。<b

刘阳龙Herman的专栏 3651

php禁用cookie,php禁用cookie后session设置方法分析

本文实例讲述了php禁用cookie后session设置方法。分享给大家供大家参考,具体如下:我们都知道当在session 会话有基于cookie和基于url两种传递SESSIONID的方法。为了实现客户端禁止cookie发送的情况也不影响客户登陆网站,可以设置 php.ini中 session.use_trans_sid=1 ,表示当客户端浏览器禁止cookie的时候,页面上的链接会基于url传...

weixin_29658641的博客 312

php.ini中文解释

php.ini中文解释 [PHP]; PHP还是一个不断发展的工具,其功能还在不断地删减; 而php.ini的设置更改可以反映出相当的变化,; 在使用新的PHP版本前,研究一下php.ini会有好处的;;;;;;;;;;;;;;;;;;;; 关于这个文件 ;;;;;;;;;;;;;;;;;;;;; 这个文件控制了PHP许多方面的观点.为了让PHP读取这个文件,它必须被命名为; 'php.in...

weixin_34293911的博客 342

PHP配置文件详解php.ini

【转载】: 天真無邪:PHP配置文件详解php.ini [PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的 ;;;;;;;;;;;;;;;;;;; ; 关于这个文件 ; ;;;;;;;;;;;;;;;;;;; ; 这个文件控制了PHP许多方面的...

Yel_Liang的博客 1087
上一篇: Apache主机rewrite地址重写相关的参数
下一篇: Apache 地址重写实例二,RewriteCond 和 RewriteRule 结合使用
xmlife
博客等级 码龄19年 89粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值