繁体   English   中英

谁能帮我解决登录会话不起作用的问题

[英]Can anyone help me around for login session not working

我是php新手。

我需要在项目中以其他用户身份登录,但无法正常工作。

我注销并返回浏览器后,将打开前一个用户的窗口。

index.php代码

<?php

      if (isset($_POST['submit'])) {
         $username = $_POST['username'];
         $password = $_POST['password'];

            if (empty($username) or empty($password)) {
               $message = "You can't leave empty fields";
            }
            else {

               $sql = mysql_query("SELECT * FROM `department` WHERE username='".$username."' AND password='".$password."'");

               $login_check = mysql_num_rows($sql);
               if($login_check > 0){ 
                  while($row = mysql_fetch_array($sql)){ 
                     // Get member ID into a session variable
                     $id = $row["ID"];   

                     $_SESSION['ID'] = $id;
                     // Get member username into a session variable
                     $username = $row["username"];   

                     $_SESSION['username'] = $username;
                     // Update last_log_date field for this member now
                     //mysql_query("UPDATE members SET lastlogin=now() WHERE id='$id'"); 
                     // Print success message here if all went well then exit the script
                     header("location: division.php?ID=$id"); 
                     exit();
                  } // close while
               } 
                           }
                     }

   ?>

division.php代码

<?php
session_start();
$_SESSION["ID"];
$_SESSION["username"];


if (isset($_SESSION['ID'])) {
   // Put stored session variables into local php variable
    $userid = $_SESSION['ID'];
    $username = $_SESSION['username'];
   $id=$_GET['ID'];
}
?>
<?php

$id = $_GET['ID'];
if ($id == "") {
   echo "Missing Data to Run";
   exit();
}

include_once "php/connect.php";

$sql = mysql_query("SELECT * FROM department WHERE ID='$id' LIMIT 1");
$count = mysql_num_rows($sql);
if ($count > 1) {
   echo "There is no user with that id here.";
   exit();   
}
while($row = mysql_fetch_array($sql)){
   $id=$row['ID'];
$department = $row["Department"];
$name= $row["name"];
}
?>

会话ID和用户名正在更新,但是问题是当我单击顶部的注销按钮时,它将重定向到主index.html。 但是,每当我单击浏览器的后退按钮时,它就会打开已登录的上一个用户页面

它不应该这样做吗?

logout.php code


session_destroy();
header('location:../index.php') ;

session_start(); 在index.php文件中丢失。

确保您将添加session_start(); 在每个文件的顶部。

乍一看,该代码看起来不错。 您是否尝试过刷新页面? 我的猜测是,您看到的是浏览器的缓存副本,一旦您重新加载,副本将按预期退出。

首先,我将$_SESSION变量在注销时设置为空白。

$_SESSION = Array();

然后,我将在session_start()之后的每个页面的顶部进行检查,以检查是否设置了会话ID。 如果不是,请重定向到登录页面或其他页面。

if (!isset($_SESSION['id']) { // redirect to another page else show content

另一方面,您应该认真考虑密码加密方法,而不是以人类可读的格式将其存储在数据库中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM