session(array('id'=>$_GET["PHPSESSID"]));
使用 tp 做的后台需要使用swfupload 插件上传图片的时候,需要注意文件上传的安全性,就必须在上传接口检验用户的登录状态。但是由于flash 与 浏览器不是在同一个进程,所以flash上传图片请求PHP接口的时候不会带上session_id,此时需要自己使用参数把session_id带上。
但是我遇到这样的问题。 已经使用了
session(array('id'=>$_GET["PHPSESSID"]));
设置session_id。但是还是读取不到session。几经调试后发现 session_id() 这个函数必须要在 session_start()之前使用。如是想使用THINKPHP 的配制config.php 文件来处理这个 session_id。查找文档发现可以使用如下配制
'SESSION_OPTIONS' => array(), // session 配置数组 支持type name id path expire domain 等参数
但是这个配制在那里修改好呢? 考虑后我想使用thinkphp 的行为扩展,在程序开始的时候修改配制。
发现thinkphp的流程应用开始(app_begin)标签位侦听并执行绑定行为 调用SESSION_OPTIONS配置参数进行Session初始化(如果不是命令行模式) 根据请求执行控制器方法 如果控制器不存在则检测空控制器是否存在 控制器开始(action_begin)标签位侦听并执行绑定行为 默认调用系统的ReadHtmlCache行为读取静态缓存(HTML_CACHE_ON参数开启)
所以我要在 app_begin 之前 设置 session_id, 在action_begin 检验 session。