时间:2021-07-01 10:21:17 帮助过:26人阅读
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的值就
输出用户信息 没有就不输出
你看看是不是这样?