php在客户端禁用cookie时让session不失效的解决方法_PHP教程
cookie固然好,不过有些客户端浏览器会禁用cookie,这就会导致你所依赖cookies的程序会失效或出错,那么若真出现用户关闭cookies的情况,PHP应该如何再次使用session?方法还是有的。
1、设置php.ini的session.use_trans_sid = 1或者打开enable-trans-sid选项,让PHP自动跨页传递session id。
2、手动通过URL传值、隐藏表单传递session id。
3、用文件、数据库等形式保存session_id,在跨页过程中手动调用。
途径1举例说明:
s1.php
1
2session_start();
3$_SESSION[’var1’]="源码爱好者";
4$url="下一页";
5echo $url;
6?>
s2.php
1
2session_start();
3echo "传递的session变量var1的值为:".$_SESSION[’var1’];
4?>
运行以上代码,在客户端cookie正常的情况下,应该可以在得到结果“源码爱好者”。
若此时关闭了客户端的cookie,估计就得不到结果了,这时可设置php.ini中的session.use_trans_sid = 1或者编译时打开--enable-trans-sid选项”,此时又可重新得到结果“源码爱好者”
途径2举例说明:
s1.php
1
2session_start();
3$_SESSION[’var1’]="源码爱好者";
4$sn = session_id();
5$url="下一页";
6echo $url;
7?>
s2.php
1
2session_id($_GET[’s’]);
3session_start();
4echo "传递的session变量var1的值为:".$_SESSION[’var1’];
5?>
隐藏表单的方法基本原理同上。
途径3举例说明:login.html
mylogin1.php
01
02$name=$_POST[’name’];
03$pass=$_POST[’pass’];
04if(!$name || !$pass) {
05echo "用户名或密码为空,请重新登录";
06die();
07}
08if (!($name=="youngong" && $pass=="123") {
09echo "用户名或密码不正确,请重新登录";
10die();
11}
12//注册用户
13ob_start();
14session_start();
15$_SESSION[’user’]= $name;
16$psid=session_id();
17$fp=fopen("e:\tmp\phpsid.txt","w+";
18fwrite($fp,$psid);
19fclose($fp);
20//身份验证成功,进行相关操作
21echo "已登录
";
22echo "下一页";
23?>
mylogin2.php
01
02$fp=fopen("e:\tmp\phpsid.txt","r";
03$sid=fread($fp,1024);
04fclose($fp);
05session_id($sid);
06session_start();
07if(isset($_SESSION[’user’]) && $_SESSION[’user’]="laogong" {
08echo "已登录!";
09}
10else {
11//成功登录进行相关操作
12echo "未登录,无权访问";
13echo "请登录后浏览";
14die();
15}
16?>
请关闭cookie再测试,用户名:youngong 密码:123 这是通过文件保存session id的,文件是:e:\tmp\phpsid.txt。至于用数据库的方法,就不举例子了,与文件的操作方法类似。以上方法有一个共同点,就是在前一页取得session id,想办法传递到下一页,在下一页的session_start();之前加代码session_id(传过来的session id);希望能为您提供一些参考。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

登录 CakePHP 是一项非常简单的任务。您只需使用一项功能即可。您可以记录任何后台进程(如 cronjob)的错误、异常、用户活动、用户采取的操作。在 CakePHP 中记录数据很容易。提供了 log() 函数

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

CakePHP 是一个开源MVC 框架。它使开发、部署和维护应用程序变得更加容易。 CakePHP 有许多库可以减少大多数常见任务的过载。
