thinkajax返回页面session信息(PHP)
程序员文章站
2024-01-24 17:21:10
...
1.在尝试仿写一个登录程序。这个登录表单在首页,要求登录成功后在首页使用ajax无刷新返回用户名信息(保存的session值)以及自动隐藏表单。现在通过js的确能返回用户信息,但是只要刷新,用户信息和表单就会恢复原状了,怎么可以维持长久直到用户点击注销或session消失后?
2.我通过F12的xhr模式能看到返回的用户信息,通过jquery的append方法和remove()也确实可以实现,不过问题是刷新后信息不存在和表单恢复原状。
2.关键代码:
(1)IndexController.class.php:
2.我通过F12的xhr模式能看到返回的用户信息,通过jquery的append方法和remove()也确实可以实现,不过问题是刷新后信息不存在和表单恢复原状。
2.关键代码:
(1)IndexController.class.php:
public function checkUser(){
//接收值
$userName=$_POST['username'];
$userPass=$_POST['userpass'];
//空值检测->function
if(!trim($userName)){
return show(0,'用户名不能为空');
}
if(!trim($userPass)){
return show(0,'密码不能为空');
}
//对用户密码真实性进行检验->Model
$res=D("Stuser")->getUser($userName);
if(!$res['username']){
return show(0,'用户名不存在');
}
//密码处理->function
if($res['userpass']!=getMd5Pass($userPass)){
return show(0,'密码不正确');
}
//echo $res['username'];
//$_SESSION('username',$res); //设置session
$_SESSION['username']=$res;
//dump($username) ;
//var_dump($username);
return show(1,'登录成功',$this->getSessionNames());
}
//判断session情况->index
public function getSessionNames(){
if($_SESSION['username']['username']){
$username = $_SESSION['username']['username'];
//$a=$this->ajaxReturn($username);
//$this->assign('username',$username);
return $username;
}
}请输入代码
(2)function.php
function show($status,$message,$data=array()){
$result=array(
'status' => $status,
'message' => $message,
'data' => $data,
);
//JSON编码数据
exit(json_encode($result));
}请输入代码
(3)login.js
var login = {
checkUser : function() {
//获取登录页面中的用户名、密码
var userName=$('input[name="username"]').val();
var userPass=$('input[name="userpass"]').val();
if(!userName) {
dialog.error("用户名不能为空");
}
if(!userPass) {
dialog.error("密码不能为空");
}
var url="/stfjzd-12/index.php/Home/Index/checkUser";
var data={'username':userName,'userpass':userPass};
//执行异步请求
$.post(url,data,function(result){
if(result.status==0) {
return dialog.error(result.message);
}
if(result.status==1) {
if(data!=""){
//alert(data.username);
$('#index_form2').remove();
$('#test').append(data.username);
}
return dialog.success(result.message,"/stfjzd-12/index.php/Home/Index/checkUser");
//alert(result.data['username']) ;
}
},'JSON');
}
}请输入代码
回复内容:
1.在尝试仿写一个登录程序。这个登录表单在首页,要求登录成功后在首页使用ajax无刷新返回用户名信息(保存的session值)以及自动隐藏表单。现在通过js的确能返回用户信息,但是只要刷新,用户信息和表单就会恢复原状了,怎么可以维持长久直到用户点击注销或session消失后?
2.我通过F12的xhr模式能看到返回的用户信息,通过jquery的append方法和remove()也确实可以实现,不过问题是刷新后信息不存在和表单恢复原状。
2.关键代码:
(1)IndexController.class.php:
public function checkUser(){
//接收值
$userName=$_POST['username'];
$userPass=$_POST['userpass'];
//空值检测->function
if(!trim($userName)){
return show(0,'用户名不能为空');
}
if(!trim($userPass)){
return show(0,'密码不能为空');
}
//对用户密码真实性进行检验->Model
$res=D("Stuser")->getUser($userName);
if(!$res['username']){
return show(0,'用户名不存在');
}
//密码处理->function
if($res['userpass']!=getMd5Pass($userPass)){
return show(0,'密码不正确');
}
//echo $res['username'];
//$_SESSION('username',$res); //设置session
$_SESSION['username']=$res;
//dump($username) ;
//var_dump($username);
return show(1,'登录成功',$this->getSessionNames());
}
//判断session情况->index
public function getSessionNames(){
if($_SESSION['username']['username']){
$username = $_SESSION['username']['username'];
//$a=$this->ajaxReturn($username);
//$this->assign('username',$username);
return $username;
}
}请输入代码
(2)function.php
function show($status,$message,$data=array()){
$result=array(
'status' => $status,
'message' => $message,
'data' => $data,
);
//JSON编码数据
exit(json_encode($result));
}请输入代码
(3)login.js
var login = {
checkUser : function() {
//获取登录页面中的用户名、密码
var userName=$('input[name="username"]').val();
var userPass=$('input[name="userpass"]').val();
if(!userName) {
dialog.error("用户名不能为空");
}
if(!userPass) {
dialog.error("密码不能为空");
}
var url="/stfjzd-12/index.php/Home/Index/checkUser";
var data={'username':userName,'userpass':userPass};
//执行异步请求
$.post(url,data,function(result){
if(result.status==0) {
return dialog.error(result.message);
}
if(result.status==1) {
if(data!=""){
//alert(data.username);
$('#index_form2').remove();
$('#test').append(data.username);
}
return dialog.success(result.message,"/stfjzd-12/index.php/Home/Index/checkUser");
//alert(result.data['username']) ;
}
},'JSON');
}
}请输入代码
如果你用tp写的在模板中用{$Think.session.username}这个赋值,通过js赋值刷新肯定没有了
页面搞个隐藏域放信息就好啦,session信息在页面上只有你登录成功以后会去请求,页面刷新是不会触发请求的
public function index(){ //你显示页面的函数
$user=$this->getSessionNames();
$this->assing('user',$user);
...
}
//index.html
//login.js
楼主这个问题,好像也不是很难嘛!把你存放用户信息的表单弄成动态的就可以了吧,具体如下:
//这个是php的处理代码块
if($this->chen_user()) { //这个是验证是否登陆成功
$_SESSION['username'] = $username; //这里把用户信息存入session
$_SESSION['sex] = $sex;
}
//这个是前端显示的
如果session中有username的值就输出用户信息 没有就不输出
姓名
你看看是不是这样?
下一篇: 二手车保值率分析预测
推荐阅读
-
php之session最优将信息写下memcache中管理
-
thinkajax返回页面session信息(PHP)
-
php环境下利用session防止页面重复刷新的具体实现_PHP
-
昨天写支付接口时遇到支付接口返回数据接收地址,session数据丢失(或者说失效)的问题,session数据丢失_PHP教程
-
PHP截取当前URL并获取当前页面想要的URL信息
-
为什么jQuery的$.get()收不到php的返回信息?
-
javascript - 为什么 php页面 这个链接会返回一个js代码呢?
-
PHP截取当前URL并获取当前页面想要的URL信息
-
php保存信息到当前Session的方法_PHP
-
PHP微信开发之根据用户回复关键词位置返回附近信息_php实例