在研究ecshop的init.php脚本页面时,看到@ini_set(‘session.use_trans_sid’, 0);这样一段代码。在此代码中的session.use_trans_sid有什么作用?为什么它的值要设置为0?
基础:
Session会话中传递SESSIONID有两种方式:
- 基于cookie传递(常用方式) 
- 基于URL传递 - 如果用户的客户端(浏览器)禁止了cookie,那么基于cookie的传递就不能成功,跨页面就无法传递session值了,这个时候可以通过php.ini中设置session.use_trans_sid=1达到跨页面专递的效果,具体情况看下面的实例 
实例:cookie专递sessionid这里就不举例子了
一、假设客户端已经禁止了cookie传值,并且php.ini中设置session.use_trans_sid=1(或者php代码中设置set_ini(session.use_trans_sid=1) )
页面a.php代码:
<?php
session_start();
$_SESSION['name']="LIUWEMBIN";
$url="<a href='b.php'>下一页</a>";
    echo $url; 
?>页面b.php代码
<?php
session_start();
echo $_SESSION['name'];
?>二、 假设客户端已经禁止了cookie传值,并且php.ini中设置session.use_trans_sid=0(或者php代码中设置set_ini(session.use_trans_sid=0) )
页面a.php代码:
<?php
session_start();
$_SESSION['name']="LIUWEMBIN";
$sessid = session_id();
$url="<a href='b.php?sessid=$sessid'>下一页</a>";
    echo $url; 
?>页面b.php代码
<?php
session_id($_GET['sessid']);
session_start();
echo $_SESSION['name'];
?>上面两种情况总结:
- a.php页面中要有下一页和下一页这样的超链,通过超链传递SESSIONID给b.php,如果是直接在浏览器中访问的b.php就只有cookie传值才能成功,所以此方法就必须通过URL传递,或者也可以用
echo "<script>location.href='index.php?sid=".$session_id."'</script>";这样就直接带参数转到下一页,而不用手动点击 下一页超链接。
- 如果设置session.use_trans_sid=1,即使在a.php页面中的这个链接中不添加“?sessid= sessid”php会自动添加的,而且在b.php中不需要sessionid( _GET[‘sessid’]);,php也会自动获取到SESSIONID,但是如果session.use_trans_sid=0那么“?sessid= sessid”和sessionid( _GET[‘sessid’]);是必须出现在应该出现的位置,不然无法跨页面获取session值得
补充:
session.use_trans_sid=1 ,表示当客户端浏览器禁止cookie的时候,页面上的链接会基于url传递SESSIONID。但是很多人仅仅设置了这一个选项并没有达到效果,本人也 遇到此问题,后来一番研究发现 
 php.ini 文件中还有两个选项 
 session.use_cookies=1 
 session.use_only_cookies=1
session.use_cookies表示是否开始基于cookies的session会话 
 session.use_only_cookies 表示是否只开启基于cookies的session的会话方式
就是说如果session.use_trans_sid=1并且客户端浏览器禁止cookie的时候,达不到效果,就要注意session.use_only_cookies的值是否为0
还有:隐藏表单传递和数据库传递就不多介绍了,这里重点是session.use_trans_sid情况的介绍
 解析session.use_trans_sid
解析session.use_trans_sid
         
                   
                   
                   
                   本文详细解释了PHP中session.use_trans_sid配置项的作用及其不同设置对会话ID传递的影响,包括基于URL和Cookie的传递方式。
本文详细解释了PHP中session.use_trans_sid配置项的作用及其不同设置对会话ID传递的影响,包括基于URL和Cookie的传递方式。
           
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   5万+
					5万+
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            