javascript - 关于登录界面session问题

查看:89
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆