thinkphp session获取问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp session获取问题相关的知识,希望对你有一定的参考价值。
代码如下,表单中用户名name=username 密码 name=password。
public function login()
if(!Session::is_set(C('USER_AUTH_KEY')))
$msg="用户没有登录";
else
$msg=Session::getLocal ('user')."欢迎你回来";
$this->assign('msg',$msg);
$this->display();
logindo是checklogin的作用
public function loginDo()
print_r($_POST);
$name = $_POST['username'];
//$pass = md5($_POST['password']);
$pass = $_POST['password'];
if(!empty($name) && !empty($pass) )
$login = M('user');
$loginFind =$login->where( "username = ".$name." and password = ".$pass )->find();
if(!empty($loginFind))
Session::set($loginFind[username],$loginFind[id]);
$_SESSION[C('USER_AUTH_KEY')] = array('id' => $loginFind['id'],'username' => $loginFind['username']) ;
$info['id']= $loginFind['id'];
$login -> save($info);
//echo "登录成功";
$this->redirect('Public/login');
else
exit('帐号或密码错误[ <A HREF="javascript:history.back()">返 回</A> ]');
else
exit('帐号密码不能为空[ <A HREF="javascript:history.back()">返 回</A> ]');
$msg=Session::getLocal ('user')."欢迎你回来";主要是这句话的问题,如果是这样写就啥也没输出,如果是$msg=Session::get (C('USER_AUTH_KEY'))这样写,就输出一个“array”,我想取得session里的用户名和id,我该如果获取呢?还有个东西可能会影响,就是我在config中设置了这个'USER_AUTH_KEY' => 'aid'。求解
session初始化设置
如果session方法的name参数传入数组则表示进行session初始化设置,例如:session(array('name'=>'session_id','expire'=>3600));
支持传入的session参数包括:
参数名 说明
id session_id值
name session_name 值
path session_save_path 值
prefix session 本地化空间前缀
expire session.gc_maxlifetime 设置值
domain session.cookie_domain 设置值
use_cookies session.use_cookies 设置值
use_trans_sid session.use_trans_sid 设置值
cache_limiter session_cache_limiter设置值
cache_expire session_cache_expire设置值
type session hander类型,可以使用hander驱动扩展
Session初始化设置方法 无需手动调用,在App类的初始化工作结束后会自动调用,通常项目只需要配置SESSION_OPTIONS参数即可,SESSION_OPTIONS参数的设置是一个数组,支持的索引名和前面的session初始化参数相同。 参考技术A 你写的对,
应该这样。
$msg=Session::get (C('USER_AUTH_KEY'));
echo $msg['id']; //这里是 id
echo $msg['username']; //这里是用户名本回答被提问者采纳
关于云主机Thinkphp框架Session跨页失效的问题
在网站部署到云主机之后,前台一直能够正常显示,后台确登录不上去,验证码也无法显示,研究半天,才确定是Session跨页传递失效的问题。找网上各种解决方法,都是关于Php.ini文件的设置,可又解决不了问题,于是狠下心来研究,最后确定是Session路径的问题。由于Thinkphp的Session默认不是保存在网站目录下,导致Session无效的问题,最后更改Session的保存路径,成功解决了问题。
具体解决办法:
1、在index.php中定义session保存路径:
define(‘ROOT_PATH‘, str_replace("\\", ‘/‘, substr(dirname(__FILE__), 0, -9)));
2、在login.php中设置Session保存路径,开启Session
$savePath=ROOT_PATH."/tmp/"; session_save_path($savePath); session_start();
3、验证码不显示的解决办法:在验证码生成方法中加入
ob_clean();
OK,成功搞定!
以上是关于thinkphp session获取问题的主要内容,如果未能解决你的问题,请参考以下文章