为什么php配置文件中设置的 session保存路径不管用

为什么php配置文件中设置的 session保存路径不管用,第1张

应该是你代码里面有类似ini_set('sessionsave_path','C:\Users\dell\'); 这样的语句 你可以在你的代码里搜索下sessionsave_path

phpcms之前使用了v90的版本,凭良心说功能方面是非常强大的,但总感觉细节上不是很人性化,我在使用中就经常出现什么hash值不对提交不了,害的输入的内容要重新输入一次,而且再输也还是同样的结果,使用的人都有些崩溃了,以后也就放弃使用了,另外就是到官方寻答案基本也没有官方的回应。唉!

tphp文件代码:

<php

OB_START();

@Session_start();

$sessionId = session_id();

echo $sessionId;

$_SESSION['abc']=123;

>

<a href=t2phpSESSIONID=<= $sessionId;>>获取session</a>

t2php文件代码:

<php

var_dump(session_id($_GET['SESSIONID']));

>

t2php也需要开启session:

<php

@Session_start();

var_dump(session_id($_GET['SESSIONID']));

> 《session_name() 返回当前session的名称》

CSDN创立于1999年,是中国最大的IT社区和服务平台,为中国的软件开发者和IT从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。拥有超过3000万注册会员(其中活跃会员800万)、50万注册企业及合作伙伴。

你是打算重写session机制呢还是?

$_SESSION['last']['before'] = $_SESSION['before'] ;

unset($_SESSION['before'] );

不就是把原来在before 存储的值放到二维数组中了么?

默认的是已文件方式保存在服务器端的,文件夹位置可以查看phpini中的设置(如果你没有在php代码中使用ini_set方法修改该设置的话)。

你可以尝试echo session_id(); 在session存储目录下会有同名的文件,用文本编辑器打开即可看到内容。内容是被序列化之后的数组。我想你能看明白里面都写了什么。

原生的php获取session,必须开启session_start();如下

<php

session_start();

print_r($_SESSION);

>

当然在php框架中都有自己的获取方式,有的甚至不用php原生的session,比如laravel框架

在PHP中使用过SESSION的朋友可能会碰到这么一个问题,SESSION变量不能跨页传递。这令我苦恼了好些日子,最终通过查资料思考并解决了这个问题。我认为,出现这个问题的原因有以下几点:

1、客户端禁用了cookie

2、浏览器出现问题,暂时无法存取cookie

3、phpini中的sessionuse_trans_sid = 0或者编译时没有打开--enable-trans-sid选项

为什么会这样呢?下面我解释一下:

Session储存于服务器端(默认以文件方式存储session),根据客户端提供的session id来得到用户的文件,取得变量的值,session id可以使用客户端的Cookie或者>

PHP中的session在默认情况下是使用客户端的Cookie来保存session id的,所以当客户端的cookie出现问题的时候就会影响session了。必须注意的是:session不一定必须依赖cookie,这也是session相比cookie的高明之处。当客户端的Cookie被禁用或出现问题时,PHP会自动把session id附着在URL中,这样再通过session id就能跨页使用session变量了。但这种附着也是有一定条件的,即“phpini中的sessionuse_trans_sid = 1或者编译时打开打开了--enable-trans-sid选项”。

明白了以上的道理,现在我们来抛开cookie使用session,主要途径有三条:

1、设置phpini中的sessionuse_trans_sid = 1或者编译时打开打开了--enable-trans-sid选项,让PHP自动跨页传递session id。

2、手动通过URL传值、隐藏表单传递session id。

3、用文件、数据库等形式保存session_id,在跨页过程中手动调用。

通过例子来说明吧:

s1php

<php

session_start();

$_SESSION['var1']="中华人民共和国";

$url="<a href=""\"s2php\">下一页</a>";

echo $url;

>

s2php

<php

session_start();

echo "传递的session变量var1的值为:"$_SESSION['var1'];

>

运行以上代码,在客户端cookie正常的情况下,应该可以在得到结果“中华人民共和国”。

现在你手动关闭客户端的cookie,再运行,可能得不到结果了吧。如果得不到结果,再“设置phpini中的sessionuse_trans_sid = 1或者编译时打开打开了--enable-trans-sid选项”,又得到结果“中华人民共和国”

这也就是上面所说的途径1。

下面再说途径2:

修改的代码如下:

s1php

<php

session_start();

$_SESSION['var1']="中华人民共和国";

$sn = session_id();

$url="<a href=""\"s2phps="$sn"\">下一页</a>";

echo $url;

>

s2php

<php

session_id($_GET['s']);

session_start();

echo "传递的session变量var1的值为:"$_SESSION['var1'];

>

办法3还是通过例子来说明:

loginhtml

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 401 Transitional//EN">

<html>

<head>

<title>Login</title>

<meta ;

同样请关闭cookie测试,用户名:laogong 密码:123 这是通过文件保存session id的,文件是:e:\tmp\phpsidtxt,请根据自己的系统决定文件名或路径。

至于用数据库的方法,我就不举例子了,与文件的方法类似。

总结一下,上面的方法有一个共同点,就是在前一页取得session id,然后想办法传到下一页,在下一页的session_start();代码之前加代码session_id(传过来的session id);

以上就是关于为什么php配置文件中设置的 session保存路径不管用全部的内容,包括:为什么php配置文件中设置的 session保存路径不管用、phpcms什么在WINDOWS下使用PHP4的SESSION功能老是报路径出错、php怎么通过sessionid获取session-CSDN论坛等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9570501.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存