如何多个用户共享一个session 先注册一个session,每个用户登陆都赋这个相同的session值 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼上的,这样子就是用同一个session吗??感觉不对哦。 我想这样:session_id("SHARESESSIONID");session_start();这样每个用户登录都连接到共享SHARESESSIONID,在这个共享id中保存共用变量,是否就可达到? session是保存在本地的,别人能共享吗? 保存本地的是id而已,可通过session_id函数设置使用的id 也就是让php中的session具有类似 asp application对象中全局变量的功能 干脆给个题目好了:用session来实现网站访问计数,只能用session保存该计数变量,不能用文件或数据库方式,是否可通过设置共享session实现? 通过session_id函数设置session的id相同。不过这样做以后,用户私有的的session就没有了。就是说:进程中只能有一个sessionidphp 没有与 asp application 等价的东西,但可以自行编程实现。可以利用改变session处理方式为user,用自己的程序来处理session,这样就可加入你所需要的内容了 xuzuning(唠叨) 说的是,但是不是可以同时使用共享和私有session呢?比如是否可以先通过session_id设置共享id,进行一些处理,然后释放,然后在打开session,简单流程如下:$privateID=session_id("SHARESESSIONID");//设置共享session,并保存私有idsession_start();............//进行一些处理$_SESSION = array();session_destroy();//释放session_id($privateID);设置私有sessionsession_start();...... 如果你session_destroy();了。那么相应的session缓存就被清除了,又如何共享呢? 那就用 session_write_close函数代替好了 session本质上属于每一个session独有的,无法共享,所谓共享是通过其他方式纪录用户访问状态而已 大家看看这段代码,"独立"打开两个浏览器,输入同样的的url,显示-share counter:xxxprivate counter:yyy观察到share counter计数值在两个浏览器窗口的计数是共享关系(即一个窗口刷新会影响到另外一个窗口的计数),而private counter的计数是独立的(私有的),两个窗口独立计数.<?php///////////share session and private session test,test.phpob_start();session_start();$privateID=session_id();session_write_close();session_id("SHARESESSIONID");session_start();if(isset($_SESSION['counter'])){ $_SESSION['counter']++; echo "share counter:".$_SESSION['counter'];}else{ $_SESSION['counter']=0; echo "share counter:".$_SESSION['counter'];}echo "<br>";session_write_close();session_id($privateID);session_start();if(isset($_SESSION['aaa'])){ $_SESSION['aaa']++; $_SESSION['aaa']++; echo "private counter:".$_SESSION['aaa'];}else{ $_SESSION['aaa']=0; echo "private counter:".$_SESSION['aaa'];}?> 从以上的例子看,应该是可以共享session的,可同时使用私有session只是共享的session也会有个过期的问题,不知怎么解决才好? 认真看过你的程序后,基本明白了不过还是有点疑问session在我的印象中就是私有的,每个正常登陆的用户均有自己的session怎么可以共享呢??session_write_close改写后,session不是变了么? 实际上session不也就是一个文件吗,何不改变一下你的想法,自己写个类不就可以了吗?class Count{ var $file = 'count.txt'; var $count; function getTotal(){ $this->count = file_get_contents($this->file); $this->count++; file_pub_contents($this->file,$this->count); $_SESSION['totle'] = $this->count; }}session_start();Count::getTotal(); 感觉上hahawen(变态的大龄青年, 越来越变态,咋办啊)的方法比较好~~~不过可能还要处理文件读写冲突问题~~ 简单,把session的handle指定为数据库,自己看看ipb的论坛数据库结构就明白了。session存入数据库就随便你怎么用了。 个人认为,用读写文件的方法的话,应该就没有必要用session了吧?我认为用session来保存公有变量,由服务器来处理,主要为了达到避免读写文件的目的,因为用文件来保存公有变量,如果访问量大了会容易丢失数据. php启用图形函数库 鼠标一点 文字消失 的问题 如何用PHP中的curl获取百度地图上的数据? POSIX扩展匹配半角空格的正则表达式? 能不能把PHP网页改下? 时间的判断 生成zip/rar文件一问 载linux下安装PHP,请问如何配置PHP的扩展 关于array_diff函数的问题 【转】写给PHP新手的学习心得 用php语言怎样控制一个办公软件的使用期限和使用次数 PHP在win2000下的问题
感觉不对哦。
session_id("SHARESESSIONID");
session_start();
这样每个用户登录都连接到共享SHARESESSIONID,在这个共享id中
保存共用变量,是否就可达到?
用session来实现网站访问计数,只能用session保存该计数变量,
不能用文件或数据库方式,是否可通过设置共享session实现?
不过这样做以后,用户私有的的session就没有了。就是说:进程中只能有一个sessionidphp 没有与 asp application 等价的东西,但可以自行编程实现。可以利用改变session处理方式为user,用自己的程序来处理session,这样就可加入你所需要的内容了
先通过session_id设置共享id,进行一些处理,然后释放,然后在打开session,简单流程如下:
$privateID=session_id("SHARESESSIONID");//设置共享session,并保存私有id
session_start();
......
......//进行一些处理$_SESSION = array();
session_destroy();//释放
session_id($privateID);设置私有session
session_start();
......
share counter:xxx
private counter:yyy
观察到share counter计数值在两个浏览器窗口的计数是共享关系(即一个窗口刷新会影响
到另外一个窗口的计数),而private counter的计数是独立的(私有的),两个窗口独立计数.
<?php
///////////share session and private session test,test.php
ob_start();
session_start();
$privateID=session_id();
session_write_close();session_id("SHARESESSIONID");
session_start();
if(isset($_SESSION['counter']))
{
$_SESSION['counter']++;
echo "share counter:".$_SESSION['counter'];
}
else
{
$_SESSION['counter']=0;
echo "share counter:".$_SESSION['counter'];
}
echo "<br>";
session_write_close();session_id($privateID);
session_start();
if(isset($_SESSION['aaa']))
{
$_SESSION['aaa']++;
$_SESSION['aaa']++;
echo "private counter:".$_SESSION['aaa'];
}
else
{
$_SESSION['aaa']=0;
echo "private counter:".$_SESSION['aaa'];
}
?>
只是共享的session也会有个过期的问题,不知怎么解决才好?
不过还是有点疑问session在我的印象中就是私有的,每个正常登陆的用户均有自己的session
怎么可以共享呢??
session_write_close改写后,session不是变了么?
class Count{
var $file = 'count.txt';
var $count;
function getTotal(){
$this->count = file_get_contents($this->file);
$this->count++;
file_pub_contents($this->file,$this->count);
$_SESSION['totle'] = $this->count;
}
}
session_start();
Count::getTotal();
我认为用session来保存公有变量,由服务器来处理,主要为了达到
避免读写文件的目的,因为用文件来保存公有变量,如果访问量大了
会容易丢失数据.