php中session时间设置详解

伊谢尔伦
Lepaskan: 2023-03-07 16:58:01
asal
2653 orang telah melayarinya

在大多数论坛中都可在登录时对失效的时间进行选择,如保存一个星期、保存一个月等等。这时就可以通过 Cookie 设置登录的失效时间。 Session失效时间设置主要有以下的几种方法:

1. 客户端没有禁止Cookie

(1)使用session_set_cookie_params()设置  Session失效时间,此函数是  Session 结合 Cookie设置失效时间。如果要让  Session 在一分钟后失效,其代码示例如下所示:

<?php
 $time = 1*60;                   //设置session失效时间
 session_set_cookie_params($time);      // 使用函数
 session_start();                 //初始化  session
 $_SESSION["username"] = &#39;tom&#39;;
?>
Salin selepas log masuk

注意: session_set_cookie_params() 必须要在 session_start()之前调用。

说明:不推荐使用此函数,此函数在一些浏览器上会出现问题。 所以一般会用手动设置失效时间。

(2)使用 setcookie()函数可对 Session 设置失效时间,要让 Session 在一分钟后失效,其代码示例如下所示:

<?php
 session_start();
 // session失效时间
 $time = 1*60;                    
 // 使用 setcookie 手动设置 session失效时间      
 setcookie(session_name(),session_id(),time()+$time.&#39;/&#39;);    
 $_SESSION["username"] = &#39;tom&#39;;
?>
Salin selepas log masuk

说明: 在上例代码 setcookie()函数中,session_name 是 Session的名称, session_id 是判断客户端用户的标识,因为 session_id 是随机产生的唯一名称, 所以Session 是相对安全的。失效时间和 Cookie 的失效时间一样,最后一个参数为可选参数,是放置 Cookie 的路径。

2. 客户端禁止Cookie

当客户端禁用 Cookie 时, Session页面间传递会失效,可以将客户端禁止 Cookie 想象成一家大型连锁超市,如果在其中一家超市内办理了会员卡, 但是超市之间没有联网,那么会员卡就只能在办理的那家超市使用。 怎么解决这个问题有以下的几种方法可供选择:

(1)在登陆之前提醒用户必须打开 Cookie,这是很多论坛的做法。

(2)设置php.ini 文件中的 session.use_trans_sid =1,或者编译时打开 -enable-trans-sid 选项,让PHP自动跨页面传递 session_id。

(3)通过 GET方法,隐藏表单传递 session_id。

(4)使用文件或者数据库存储 session_id,在页面间传递中手动调用。

以上第2种方法不做详细的介绍,因为用户不能修改服务器中的php.ini文件。第3中方法我们就不可以使用 Cookie 设置失效时间,但是登录情况没有变化。 第4种也是最为重要的一种,在开发企业级网站时,如果遇到

session文件 使服务器速度变慢,就可以使用。这里我们介绍一下第3种方法使用 GET 方法传输,其示例代码如下所示,接收页面头部的代码:

<?php
  $session_name = session_name();        //取得 session 名称
  $session_id = $_GET[$session_name];    // 取得 session_id GET方式
  session_id($session_id);               // 关键步骤
  session_start();
  $_SESSION[&#39;admin&#39;] = &#39;soft&#39;;
?>
Salin selepas log masuk

说明:  Session 为请求该页面之后会产生一个 session_id ,如果这时禁止了  Cookie 就无法传递 session_id,在请求下一个页面是将会重新产生一个 session_id ,这样就造成了 session 在页面间传递失效。

Atas ialah kandungan terperinci php中session时间设置详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!