php会话破坏问题

时间:2017-07-01 12:26:46

标签: php session

问题是当你注销时会话没有被破坏,所以你仍然可以访问一些你不应该访问它的页面,我放置了一个包含数组login_user的echo语句{{1}每当你注销并粘贴该页面的链接时,login_user就会成功打印出我的代码出错的地方,我甚至尝试了其他方法,比如未设置,比如将$_SESSION的值更改为“”没有任何更改。

登录页面代码(名称:HomeTest.php)

login_user

session.php:

<?php
  require("./config.php");
  if ($_SERVER["REQUEST_METHOD"] == "POST"){
    session_start();
.... 
  if($count == 1) {
  $_SESSION['login_user'] = $myusername;
  header("location: welcome.php");
  }else {
  $error = "Your username or password is incorrect";
  }
}

logout.php:

<?php
   require_once('./config.php');
   session_start();
   $user_check = $_SESSION['login_user'];
   $ses_sql = mysqli_query($conn,"select username from accounts where username = '$user_check' ");
   $row = mysqli_fetch_array($ses_sql,MYSQLI_ASSOC);
   $login_session = $row['username'];
   if(!isset($_SESSION['login_user'])){
      header("location:HomeTest.php");
   }
?>

除非您已登录,否则不应访问的其他页面:

<?php
   session_start();

   if(session_destroy()) {
      unset($_SESSION['login_user']);
      header("Location: login.php");
   }
?>

3 个答案:

答案 0 :(得分:2)

使用以下代码 logout.php

<?php
session_start();
session_destroy();
header("Location: login.php");
?>

希望这会起作用

答案 1 :(得分:1)

问题是因为

if(session_destroy()) {}

不会返回true

您可以通过

更改该条件
if(isset($_SESSION['login_user']))

答案 2 :(得分:0)

使用以下代码:

<?php
  session_start();
  session_unset();