`

cookie和会话(二)

    博客分类:
  • php
 
阅读更多

会话

    除了能够在客户机和服务器之间发送少量信息外,还允许跟踪用户在WEB应用程序中操作的进程这就是其特性。

会话要使用会话cookie(过期时间设置为0的cookie),并且将一个称谓会话ID的唯一标示符与用户关联起来。

1:基本用法

在想要激活会员的脚本在接近开头的地方调用session_start函数来启动会话。

 session_start();
if(isset($_SESSION['counter'])){
  $_SESSION['counter']++;
}else{
  $_SESSION['counter'] = 1;
}
var_dump($_SESSION);echo '<br />';
var_dump(session_id());echo '<br />';
var_dump(session_name());echo '<br />';
var_dump(session_get_cookie_params());

输出如下:

array(1) { ["counter"]=> int(3) }
string(26) "vb2clv0n6m9cghj36rv1kfuti5"
string(9) "PHPSESSID"
array(5) { ["lifetime"]=> int(0) ["path"]=> string(1) "/" ["domain"]=> string(0) "" ["secure"]=> bool(false) ["httponly"]=> bool(false) }

可以使用session_id()来访问会话ID。session_name()函数显示会话的名称,也就是php返回给客户机保存会话ID的cookie名称。这个可以再php.ini中设置。也可以使用这个函数来设置一个新的名字。最后session_get_cookie_params显示与这个会话相关联的cookie细节。

会话携带了与它相关的所有数据。

example:

1.php

session_name('jcyzone');
session_start();
$_SESSION['name'] = 'jcy';
$_SESSION['pwd']  = '123456';
print_r($_SESSION);echo '<br />';
var_dump(session_id());echo '<br />';
var_dump(session_name());echo '<br />';
var_dump(session_get_cookie_params());

2.php

session_name('jcyzone');
session_start();
print_r($_SESSION);echo '<br />';
var_dump(session_id());echo '<br />';
var_dump(session_name());echo '<br />';
var_dump(session_get_cookie_params());

运行1.php再运行2.php两者内容一样

2:配置php的会话

php.ini里面有许多配置选项可以控制php的会话的操作方式

1>session.auto_start默认是0如果改为1,那么每次在php中请求新页面都会起动一个会话。

2>session.name这个是发送到客户机的保存会话ID的cookie名称。所有连接到页面的用户使用同一个会话名称PHPSESSIONID,但是会话ID不一样。

3>session_save_handler这控制如何控制存储会话的数据。默认files,php内部机制将数据存在本地服务器系统的一个文件中,可以使用这个选项编写自己定制会话数据存储机制。

4>session_save_path如果是用默认机制files这个选项指定要存储的目录Unix默认/tmp,在Window上默认为c:\php\sessiondata

5>session_gc_probability,session_gc_divisor这两个是控制会话垃圾收集(garbage collection)。当收到新的 页面请求时。php有时候会遍历所有会话文件并清理那些已经过期的会话对于任何请求发生如下概率的(session_gc_probability / session_gc_divisor)* 100%默认是1和100,你可以修改这些值来反应Web流量,流量很高1%是不够的,如果流量低可以考虑7%-10%。

6>session.cookie_lifetime,session.cookie_path,session.cookie_domain,session.cookie_secure。这些额外参数相应于setcookie来控制或限制cookie的可用性。默认情况下过期时间为0,而且会话跨这个域有效。

7>session.use_cookies 这个选项控制php是否可以使用cookie传输,默认是True(1)。

8>session.use_only_cookies默认是0,因为将会话ID作为GET参数传输可能产生安全问题,所以可能希望现实低禁用php使用cookie之后的机制,可以设置1来实现。

这些可以在php.ini里面设置,如果为一个虚拟服务器无法访问php.ini可以使用php的ini_set 函数

eg:ini_set('session.save_path','/home/webapps/sess_data');

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics