javascript - 关于登录界面session问题
本文介绍了javascript - 关于登录界面session问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
做了一个登录页面,未登录时菜单栏显示的是login,点击login,弹出窗口,登录成功之后login->username,每次刷新页面都会变成login的未登录状态,现在在php里加了一个session,
问题是,请问我在home页 是否设置了session的if语句里怎样写才能保证刷新时不退出登录呢?
home:
<?php
session_start();
// include "maroon5/includes/dbh.php";
define ("root",$_SERVER['DOCUMENT_ROOT']);//定义根目录为常量
include root."maroon5/includes/dbh.php";
if(isset($_SESSION['id'])){
//**在这里怎样操作才能让刷新页面时保持登录呢?**
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Maroon5 | Official Site</title>
<link rel="stylesheet" type="text/css" href="styles/style.css">
<!--File Normalize Css-->
<link rel="stylesheet" href="styles/normalize.css">
<link rel="stylesheet" href="styles/font-awesome/css/font-awesome.css">
jquery:
$(document).ready(function(){
$(document).on('click',"#submit",function(){
var email = $("#edit-name").val();
var pass = $("#edit-pass").val();
// alert (email);
$.ajax({
url:"functions/php/login.php",
type:"POST",
data:{ email:email,pass:pass},
beforeSend: function () {
},
success:function(data){
console.log(data);
// alert(data);
$("#edit-name").val(" ");
$("#edit-pass").val(" ");
// $("#user-login-register").hide();
$("#popup-box1").hide();
//login部分变化为用户头像和账户
$(".user-link-login").css({"display":"none"});
$(".user-menu").append(data);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
},
});
return false;
});
});
php:
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors',1);
define ("root",$_SERVER['DOCUMENT_ROOT']);
// echo root;
include root.'/maroon5/includes/dbh.php';
// var_dump($_REQUEST);
$email = $_POST['email'];
$pass = $_POST['pass'];
$conn = mysqli_connect("localhost", "root", "", "maroon5");
$sql = "SELECT * FROM user WHERE email= '$email' AND pass='$pass' ";
$res = mysqli_query($conn, $sql);
$num = mysqli_num_rows($res);
$row = $res ->fetch_assoc();
if(!$email & !$pass){
echo "All fields required";
}elseif(!$email){
echo "Email required";
}elseif (!$pass) {
echo "Password required";
}elseif ($num == 0) {
echo "邮箱或密码不正确";
}else{
// echo "success";
$_SESSION['id'] = $row['id'];
?>
//登录成功时添加用户头像和用户名
<li class="user-profile">
<a class="" >
<img src = "<?php echo $row["pic"] ?>" />
<span class="user-username"><?php echo $row["username"]; ?></span>
</a>
<ul class="menu-dropdown">
<li class="user-pro"><a class="user-parent-profile" href="">VIEW PROFILE</a></li>
<li class="user-verify-account"> <a class="user-parent-account" href=""><i class="fa fa-envelope-o" aria-hidden="true"></i>VERIFY ACCOUNT</a></li>
<li class="user-logout"><a class="user-parent-logout" href=""><i class="fa fa-sign-out" aria-hidden="true"></i>LOGOUT</a></li>
</ul>
</li>
<?php
}
?>
解决方案
前后端判断都能解决
前端方案方式:
$.ajax({
url : 'functions/php/login.php?action=get_login_info',
type : 'get',
success : function(data){
if( '' != data){
//更新导航
$(".user-menu").append(data);
}
}
});
functions/php/login.php 中:
if( isset($_GET['action']) && 'get_login_info' == $_GET['action'] ){
if( isset($_SESSION['id']) ){
//链接数据库
$sql = "SELECT * FROM user WHERE email= '" . $_SESSION['id'] . "'";
//查找用户信息
//你的代码,输出登陆后的导航
}
die();
}
后端判断方式:
导航条代码处,判断是否设置了 session。
<?php
if( isset($_SESSION['id']) ){
require("header_login.php");
} else {
require("header_notlogin.php");
}
?>
header_notlogin.php
就是 你现在的,显示未登录页(包含了ajax代码等)
header_login.php
根据 $_SESSION['id'] 去数据库查询数据,返回用户登陆信息
这篇关于javascript - 关于登录界面session问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文