Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >带有绝对链接的奇怪的php会话行为

带有绝对链接的奇怪的php会话行为
EN

Stack Overflow用户
提问于 2011-03-18 16:27:11
回答 2查看 509关注 0票数 3

我已经观察到我的php应用程序在运行的服务器上表现得非常奇怪。当用户第一次访问应用程序并单击具有绝对路径的链接时,会话数据将被清除。

我尽可能简单地再现了这个问题。代码可以在下面找到。

我已经通过删除应用程序中的所有绝对链接()来解决这个问题--我只是在寻找对这个行为的解释。

要重新创建该问题:

  1. 点击‘登录’
  2. 单击“相对链接”并观察到会话仍然具有“logged_in”变量集
  3. 单击“绝对链接”并注意到会话数据似乎丢失
  4. 单击浏览器的后退按钮并观察会话数据已返回
  5. 单击“绝对链接”并观察会话数据再次丢失
  6. 单击'home (相对链接)‘并观察到这次会话数据丢失了
  7. 单击“登录”重置会话数据
  8. 再次单击“绝对链接”,并注意到这次会话数据未被清除

一些重要的事情要注意:

  • 在运行php5.3.2的mac上,这不是一个本地问题,而是运行php5.2.14的服务器和运行5.3.2的不同服务器上的问题。
  • 单击绝对链接,然后在没有登录的相对主链接中防止问题一旦登录就不会发生。
  • 一旦问题被刚才提到的方法解决了,它只能通过导航到另一个域、清除浏览器的缓存和导航回来重新创建。在不离开页面的情况下清除缓存将无法工作。
  • 如果在使用头重定向时使用绝对路径(“Location:.”),这也是一个问题。

index.php:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
    session_start();

    print_r($_SESSION);

?>

    <br/><a href="http://www.myserver.org/page.php">Absolute link</a>
    <br/><a href="page.php">Relative link</a>
    <br/><a href="login.php">Log in</a> | <a href="logout.php">Log out (reset session)</a>

page.php:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php

    session_start();
    print_r($_SESSION);

?>
    <br/><a href="index.php">Home (relative link)</a>

login.php:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
    session_start();
    $_SESSION['logged_in'] = true;

    header('Location: index.php');

logout.php:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
    session_start();

    $_SESSION = array();
    session_destroy();

    header('Location: index.php');
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-18 17:49:07

解决问题:感谢Nouveau指出,cookie只能用于一个域,Scrum Meister则问我是否总是使用www访问该站点。

这个问题是通过从http://myserver.com开始并按照指向http://www.myserver.com的链接创建的。

会话是为http://myserver.com初始化的,然后是为http://www.myserver.com初始化的

票数 0
EN

Stack Overflow用户

发布于 2011-03-18 16:58:25

至少在您的示例中,页面在两个域(rhun.ithaca.edu和www.ithacahealth.org)之间切换。您会注意到,如果您在两个域上单击“登录”,那么在所有情况下都会有logged_in=1。不管怎样,这是问题的主要原因--两个不同的领域。

会话cookie与任何其他cookie并没有什么不同(从浏览器的角度来看),因此它们受到相同的限制--相关的限制是您必须在同一个域上。您可以用session_set_cookie_params()更改会话cookie设置(这必须在session_start(),之前完成,但即使这样,也不能允许从不同的域读取相同的cookie,如果需要,只能从子域读取。

此外,我不知道这是否相关,但将网页保留在单个域/子域上可能会对搜索引擎优化有所帮助--特别是在域/子域之间有不同内容的情况下,搜索引擎可能会认为它们是不同的网页,并在它们之间分割它们的pagerank。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5359137

复制
相关文章
delete的奇怪行为
F的实例拥有一个value属性,但不希望在new的时候就初始化属性值(因为这个值不一定用得到,而且计算成本比较高,或者new的时候还不一定能算出来),那么自然想到通过定义getter来实现“按需计算”:
ayqy贾杰
2019/06/12
2.3K0
PHP将相对链接转换为绝对链接
因为一些学习和研究目的,最近在写一些数据抓取的组件,在网页上很常见的是相对链接,有时候因为所在网页和相对链接的关系不太确定,所以就需要转换一下,本来这个功能实在太简单,直接在网上搜索了一下,但是发现绝大部分代码都是错的,或者说不严谨,随便改一个目录深度就会发生错误。 这里贴一下我的解决方案:
雪碧君
2023/02/15
1.5K0
PHP中的会话
2、当执行php xxx.php 时,默认系统会把当前的进程设置为会话首进程(使用strace查看),所以当前会话首进程不能使用posix_setsid 创建为会话首进程,只能使用子进程调用此函数
北溟有鱼QAQ
2021/06/08
1.2K0
一个奇怪的链接问题
链接是代码生成可执行文件中一个非常重要的过程。我们在使用一些库函数时,有时候需要链接库,有时候又不需要,这是为什么呢?了解一些链接的基本过程,能够帮助我们在编译时解决一些疑难问题。比如,下面就有一种奇怪的现象。
编程珠玑
2019/09/02
1.6K0
注意A链接的默认行为
无意间访问一家上市公司网站做的一个活动页,进去后会出现蒙板,让访客登录,右上角有一个关闭按钮。
meteoric
2018/11/16
5840
PHP中的会话控制
了解HTTP(超文本传输协议)可以知道,它采用请求与响应的模式,最大的特点就是无连接无状态。 无连接:每次连接仅处理一个客户端的请求,得到服务器响应后,连接就结束了 无状态:每个请求都是独立的,服务器
小古哥
2018/03/08
1.7K0
PHP中的会话控制
Chrome插件:(NoFollow)自动标出带有nofollow的a链接
声明:本文由w3h5原创,转载请注明出处:《Chrome插件:(NoFollow)自动标出带有nofollow的a链接》 https://www.w3h5.com/post/214.html
德顺
2019/11/13
6690
Chrome插件:(NoFollow)自动标出带有nofollow的a链接
PHP中in_array奇怪的问题
    按正常来说,这个肯定不在数组中,输出应该是false,但是这段代码输出却是true。
XiaoA
2023/05/24
4490
PHP的会话处理函数session
当运行一个应用程序时,你会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP 地址不能维持状态。
于果
2021/08/25
2.5K0
taskscheduler java_java – taskScheduler池的奇怪行为「建议收藏」
我有两个弹簧启动应用程序(1.4.3.RELEASE),它们位于同一台服务器上.应用程序A是一个单一的应用程序,其中包含用于处理警报的部分代码,而应用程序B是一个仅处理警报的新专用应用程序.这里的目标是打破小应用程序中的monolotic应用程序.现在,这两个代码一起运行,因为我有旧系统,总是调用应用程序A.
全栈程序员站长
2022/11/10
1.8K0
PHP链接mongodb的方式
MongoDB的PHP驱动提供了一些核心类来操作MongoDB,总的来说MongoDB命令行中有的功能,它都可以实现,而且参数的格式基本相似。PHP7以前的版本和PHP7之后的版本对MongoDB的操作有所不同,本文主要以PHP7以前版本为例讲解PHP对MongoDB的各种操作,最后再简单说明一下PHP7以后版本对MongoDB的操作。
php007
2019/10/22
2K0
PHP链接mongodb的方式
PHP 传输会话curl函数的实例详解
接手公司项目PC端负责人的重担,责任担当重大;从需求分析,画流程图,建表,编码,测试修bug,上线维护等我一个光杆司令一人完成(当然还有一个技术不错的前端配合,感谢主管的帮助),虽然累点加班多点但感觉还行吧,公司都是一个鸟样。
用户8832503
2021/07/13
5780
ReverseSSH:带有反向Shell功能的静态链接SSH服务器
ReverseSSH是一款功能强大的静态链接SSH服务器,ReverseSSH带有反向Shell功能,可以帮助广大研究人员提供强大的远程访问功能。该工具主要适用于渗透测试、HackTheBox挑战或CTF比赛等场景。
FB客服
2021/10/21
1.5K0
奇怪的知识
而数据中台则是将数据服务化之后提供给业务系统, 目标是将数据能力渗透到各个业务环节
solve
2022/03/30
8240
深入理解PHP的远程多会话调试
本文主要给大家介绍了关于PHP远程多会话调试的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:/【本文中一些PHP版本可能是以前的,如果不是一定要,建议PHP尽量使用7.2以上的版本】/ 解决什么问题:多个项目断点调试,www.mysite.com项目会调用api./【当下浏览的服务器和开发工具是哪些】/mysite.com项目REST接口,在www.mysite.com项目下触发动作时,更方便的直接调试api.mysite.com项目中的接口。
用户2323866
2021/07/08
7650
最全最详细的PHP面试题(带有答案)
这篇文章介绍的内容是关于最全最详细的PHP面试题(带有答案),有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
叫我可儿呀
2019/11/27
1.4K0
最全最详细的PHP面试题(带有答案)
奇怪的电梯
§、奇怪的电梯(lift.cpp) §【问题描述】 §大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0<=Ki<=N)。电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:3 3 1 2 5代表了Ki(K1=3,K2=3,……),从一楼开始。在一楼,按“上”可以到4楼,按“下”是不起作用的,因为没有-2楼。那么,从A楼到B楼至少要按几次按钮呢? §【输入格式】lift.in §输入文件共有二行,第一行为三个用
attack
2018/04/12
1.5K0
php-获得网页的所有链接
浏览量 1 <?php $url="http://www.baidu.com"; // 获取链接的HTML代码 $html=file_get_contents($url); // 创建DOMdoc
kdyonly
2023/03/03
2.3K0
PHP项目:PHP链接数据
conn.php: <?php $conn =mysql_connect("localhost", "root", "") or die("数据库链接错误"); mysql_select_db("
贵哥的编程之路
2021/10/09
5.1K1
点击加载更多

相似问题

奇怪的PHP会话行为

49

php会话的奇怪行为

10

奇怪的Php会话行为

20

Php会话奇怪的行为

12

PHP会话奇怪行为

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文