> php教程 > PHP源码 > 본문

PHP 客户端禁用cookie后session解决方案

WBOY
풀어 주다: 2016-06-08 17:21:35
원래의
996명이 탐색했습니다.

cookie本身就是写在客户端的了,但是如果客户浏览器把cookie给禁用了,那么cookie就无法正常使用了,碰到此问题我们可以使用session来代替了哦,希望对各位有帮助。

<script>ec(2);</script>

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

第一种方式:在每个超链接上添加一个PHPSESSID=$sid

 代码如下 复制代码
//防止返回初始页产生新的session
if(isset($_GET["PHPSESSID"])){
session_id($_GET["PHPSESSID"]);
}
//启动一个session
session_start();
//获取当前session的session_id()
$sid=session_id();
//在每个链接上添加参数PHPSESSID=$sid
其他页面的获取方式为:
if(isset($_GET["PHPSESSID"])){
//设置当前的session为初始的session,session_id()一致即可
session_id($_GET["PHPSESSID"])
}
session_start();

第二种方式:使用 SID 常量替换链接上的 PHPSESSID=$sid (SID的值类似:PHPSESSID=sddg34r593dfdlksrewr)

 代码如下 复制代码

if(isset($_GET["PHPSESSID"])){
session_id($_GET["PHPSESSID"]);
}
//启动一个session
session_start();

其他页面的获取方式为:
if(isset($_GET["PHPSESSID"])){
//设置当前的session为初始的session,session_id()一致即可
session_id($_GET["PHPSESSID"])
}
session_start();

第三种方式:使用session.use_trans_sid=1,php.ini中配置


1、设置php.ini中的session.use_trans_sid = 1或者编译时打开打开了--enable-trans-sid选项,让PHP自动跨页传递session id。
2、手动通过URL传值、隐藏表单传递session id。
3、用文件、数据库等形式保存session_id,在跨页过程中手动调用。

 代码如下 复制代码

index.php


session_start();
  $_SESSION['name']="Aseoe";
  $sn = session_id();
  $url=".""index2.php?s=".$sn."">下一页";
  echo $url;
?>
 
index2.php
  $_GET[’s’]);   
  session_start();   
  echo "传递的session变量name的值为:".$_SESSION['name']; 
?>

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!