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初始化设置
如果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获取问题的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP中Session用法详解

ThinkPHP中Session用法详解

ThinkPHP框架之验证码

ThInkPHP中的常量

ThinkPHP6:验证码

ThinkPHP之TP5 Request请求类