发现个奇怪的问题,有关session的,有兴趣的来瞅瞅

jinliangonline 2009-03-16 06:27:57
环境:php5,register_globals 为 off
1.php:
session_start();

$_SESSION['from_url'] = null;

$from_url = 'test2';
复制代码执行后会报这个错误:
Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

用另一个文件去查看session,发现$_SESSION['from_url']的值居然是'test2';
session_start();

echo $_SESSION['from_url'];
复制代码有人遇到过这种现象吗?
PS:1.php刷新一下,错误就没了,需要session_destroy()后就可以重现。
...全文
227 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
phpboy 2009-03-17
  • 打赏
  • 举报
回复
test.php


<?php
session_start();

$_SESSION['from_url'] = null;

$from_url = 'test2';
?>
<a href="test2.php">test</a>



test2.php



session_start();

echo $_SESSION['from_url'];
echo $from_url;


phpboy 2009-03-17
  • 打赏
  • 举报
回复
register_globals 为on时,会出现楼主的情况的,关闭的话,应该不会的!

本地测试了一下
关闭后


( ! ) Notice: Undefined variable: from_url in D:\iis\test2.php on line 5
Call Stack
# Time Memory Function Location
1 0.0024 130128 {main}( ) ..\test2.php:0


程序猿之殇 2009-03-17
  • 打赏
  • 举报
回复
果然是null的问题,呵呵,
syu 2009-03-17
  • 打赏
  • 举报
回复
贴出phpinfo()的信息来看看吧.
yctin 2009-03-17
  • 打赏
  • 举报
回复
by ref只是比喻,真实情况要看php session部份的源码
yctin 2009-03-17
  • 打赏
  • 举报
回复
register_globals ... 什么都 globals了当然没错 =.=

pass by value , ref 搜一下就有了

session的自动注册机制google搜不到, 也没有连接 ._.
xinglu1983 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 yctin 的回复:]
因为你用了 null,他会在该页被当成 globals 处理

$_SESSION['from_url'] = false;
$_SESSION['from_url'] = "";
用都可以,你要给他一个实值
给null他会当成是参考

效果等同
$varname = "from_url";
@$_SESSION['from_url'] = &$$$varname;

这是他的自动注册机制问题
[/Quote]

这位朋友说的应该是对的,
有两个地方不明白,麻烦再请教下,
给null他会当成是参考,这个“参考”是指什么?
session的自动注册机制是怎么回事?这个是针对php5的吗?
以前没听说过,google也没有搜到,能否给个连接。
谢谢~
xinglu1983 2009-03-17
  • 打赏
  • 举报
回复
刚刚又做了下测试,register_globals如果是on的状态下,反而不会出现这个错误提示的。但是$from_url = 'test2'同样也赋到session里了。

error_reporting(2047);
session_start();
$_SESSION['from_url'] = null;
$from_url = 'test2';
echo 111;
echo $a;
flush();
sleep(5);
echo 222;

加入sleep发现,是在脚本执行结束的时候才会出现错误提示,我只知道session在脚本执行结束时会将内存中$_SESSION变量的值写入到sesion文件里,是不是还进行了其他的操作?导致出现这个错误提示,希望能得到确定的答案。
PS:php版本5.2.0
yctin 2009-03-17
  • 打赏
  • 举报
回复
@$_SESSION['from_url'] = &$$varname;
yctin 2009-03-17
  • 打赏
  • 举报
回复
因为你用了 null,他会在该页被当成 globals 处理

$_SESSION['from_url'] = false;
$_SESSION['from_url'] = "";
用都可以,你要给他一个实值
给null他会当成是参考

效果等同
$varname = "from_url";
@$_SESSION['from_url'] = &$$$varname;

这是他的自动注册机制问题
jinliangonline 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jakey9826 的回复:]
就错误而言,很大原因还是因为register_globals没有关闭.
正常环境下是没有这个问题的.

建议还是从PHP的环境配置上下功夫.
phpinfo();查看一下,register_globals有没有被关闭.有时候你可能修改的不是正确的php.ini,或者没有重启web服务器.
[/Quote]
最开始我也是怀疑是配置问题,但是我同事也出现这个问题。我回家后又测试了一遍,还是这个问题,没出问题的朋友把配置贴出来看看吧。郁闷……
程序猿之殇 2009-03-17
  • 打赏
  • 举报
回复
就错误而言,很大原因还是因为register_globals没有关闭.
正常环境下是没有这个问题的.

建议还是从PHP的环境配置上下功夫.
phpinfo();查看一下,register_globals有没有被关闭.有时候你可能修改的不是正确的php.ini,或者没有重启web服务器.
davidtao0819 2009-03-17
  • 打赏
  • 举报
回复
学习~
xinglu1983 2009-03-17
  • 打赏
  • 举报
回复
7楼你的php版本是多少啊?还有register_globals设置的是on还是off?
phpboy 2009-03-17
  • 打赏
  • 举报
回复
关闭之后
echo $_SESSION['from_url'];
为空!
我用的是PHP5.2.6
jinliangonline 2009-03-16
  • 打赏
  • 举报
回复
瓦哦,不少人回复呢,呵呵首先谢谢大家的热心哈。
[Quote=引用 7 楼 fxs_2008 的回复:]
我测了下,没有有你说的问题

结果

Array ( [from_url] => )
[/Quote]
这个……我正因为不知道为什么会出现这个问题,我才会在这里发帖。



很郁闷,按常识来讲,要能按常识我就不发帖了呵呵
fxs_2008 2009-03-16
  • 打赏
  • 举报
回复
我测了下,没有有你说的问题
a.php
<?php
session_start();

$_SESSION['from_url'] = null;

$from_url = 'test2';

?>
<a href="b.php">b.php</a>


b.php

<?php
session_start();
echo $_SESSION['from_url'];
print_r($_SESSION);


?>

结果

Array ( [from_url] => )


jackydrl 2009-03-16
  • 打赏
  • 举报
回复
大家肯定都看清楚了,但你也得试一下我们提供的方法啊!
xinglu1983 2009-03-16
  • 打赏
  • 举报
回复
楼上几位麻烦看清帖子再回复,写得很清楚,环境:php5,register_globals 为 off
jackydrl 2009-03-16
  • 打赏
  • 举报
回复
你的PHP是4.4.X版本的吧,这个应该是它的一个bug

首先register_global=off保留

你的这个问题在一个网页上有描述
http://www.spiration.co.uk/post/1231/Your%20script%20possibly%20relies%20on%20a%20session%20side-effect

解决方法是,先给出$from_url的值
然后$_SESSION[from_url]=$from_url

然后在http://blog.csdn.net/spidertiger/archive/2006/07/24/969571.aspx上面给出了更详细的解释,如下

In PHP 4.2.3, they made a change to the way that the session code works that results in PHP generating a warning when a session is created. In order to resolve this, we have to update some code in Gallery. This warning has no effect, except that it shows upon screen. You can make it go away by editing your php.ini and setting
session.bug_compat_warn to off

and restart Apache.


意思就是更改session.bug_compat_warn的值为off,重新启动apache
并且这个是警告信息,没有说明什么错误。


加载更多回复(2)
本系统提出了一套面向MRI全心脏分割任务的端到端深度学习解决方案,其核心创新在于将Swin Transformer作为编码器骨干网络,充分挖掘心脏MRI图像中的全局上下文信息与局部细节特征,同时引入4通道输入机制,在传统RGB三通道图像基础上额外拼接一个点提示编码通道,支持用户通过鼠标交互在图像上自由标注前景(心脏区域)与背景点,从而将先验空间信息显式地融入网络前向传播过程,实现基于稀疏标注引导的精准分割。在解码阶段,系统采用U型对称结构,通过逐步上采样与跳跃连接逐级恢复特征图分辨率,最终输出二值分割掩膜(前景/背景),有效区分心脏区域与其他组织。训练过程中,系统选用交叉熵损失函数,配合AdamW优化器与余弦退火学习率调度策略,确保模型在训练集和验证集上稳定收敛,并在每个epoch结束后自动计算全局像素准确率、平均交并比(mIoU)、平均Dice系数、平均精确率、平均召回率及平均F1分数等多项评估指标,全方位监控模型性能。系统内置了完整的训练日志保存、损失曲线与性能曲线绘制、学习率衰减可视化等功能模块,便于用户直观分析训练过程并调优超参数。在推理应用层面,系统封装了基于Tkinter框架的图形化交互界面,用户可上传任意MRI切片图像,通过鼠标左键/右键分别添加前景/背景点,点击“执行分割”按钮后即可实时生成叠加了红色半透明掩膜的分割结果图像,支持点集的增删与重置操作,交互响应灵敏,操作逻辑直观清晰。整体而言,本系统不仅实现了从多模态数据加载、交互式标注编码、基于Transformer的分割建模到图形化推理部署的全链路覆盖,更在算法层面通过点提示引导机制与Swin Transformer结构的高效结合,显著降低了对大规模标注数据的依赖,同时提升了模型对心脏边界模糊、形态变异及邻近组织干扰的鲁棒性,为心血管疾病的计算机辅助诊断、术前规划及定量分析提供了一种兼具精度与灵活性的智能
针对心脏MRI图像中边界模糊、器官形变复杂以及标注成本高昂等痛点,本研究构建了一套以Swin Transformer为编码基座、融合人机交互机制的轻量化分割系统。该方案跳出传统全自动分割的思维定式,转而采纳“模型推理+专家微调”的协同策略,在模型输入层开辟了一条额外的点提示通道,允许操作者通过鼠标标记少量前景或背景点,将这些位置信息与图像特征并行馈入网络,从而将抽象的空间先验转化为可微分的学习信号,使得分割结果能够灵活响应个体差异与局部歧义。编码端采用基于移位窗口注意力的Transformer结构,以分层递降的分辨率捕获全局感受野下的解剖结构关联,解码端则通过逐步上采样与跨层特征拼接恢复空间细节,最终输出逐像素的二分类概率图。训练数据来自心脏MRI多切片序列,每张样本不仅包含原始影像与对应金标准掩膜,还通过随机采样前景点的方式模拟真实交互场景,迫使模型学会如何从稀疏的点监督中推断完整器官轮廓。损失函数选用标准交叉熵,用以衡量预测概率与真实标签之间的分布差异,同时引入混淆矩阵模块对训练与验证阶段的像素精度、召回率、F1分数、Dice系数及平均交并比进行逐轮次追踪,所有评估曲线均自动落盘保存,便于横向对比不同超参数配置下的性能演变规律。在工具链末端,系统配套开发了一个基于Tkinter的事件驱动型图形界面,将模型推理、点标注、结果渲染与图像交互四个环节无缝串联。用户上传图像后,可通过左键与右键分别部署正负样本点,随后系统自动完成坐标缩放、通道拼接、前向传播与掩膜重采样,最终在原始影像上叠加半透明彩色蒙层,清晰勾勒出模型判定的心脏区域。整套代码逻辑紧密、模块边界清晰,既可作为医学影像分割领域的教学范例,亦可经过少量适配迁移至其他器官或模态的交互式标注任务中,具备良好的扩展潜力与实用价值。

21,889

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧