
应该是你代码里面有类似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
<phpsession_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
<phpsession_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论坛等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)