功能仍然从没有活动会话的链接执行

时间:2018-02-02 11:37:09

标签: php session get

我得到了一些在$_GET内执行值的代码和一些检查活动会话的代码。然而,当我在没有活动会话的情况下直接转到链接时,它仍然执行该功能,然后返回到登录页面。

我的代码:

我的登录头:

<?php
session_start();
if (!isset($_SESSION['Username'])|| $_SESSION["Actief"] == 0|| 
    $_SESSION["Actief"] == 2) {
    return header("Location: main_login.php");
    exit();
}

我的网页(仅限所需代码):

require "../loginheader.php";
require "../AdminOnlyHeader.php";
// --some code with sql instructions--
$result = ExecuteQuery($sql);`

AdminOnlyHeader只是检查管理员状态。这似乎也只是通过输入一个链接来绕过。

所以如果你仍然不明白我的意思,这里是我做的简短摘要:

  1. 我创建了一个包含执行它所需的获取数据的链接;
  2. 我退出并返回登录页面;
  3. 我输入之前的链接;
  4. 一些加载后我仍然在登录页面上,但是当我查看我的数据库时,我看到记录已经更新,因此执行了函数(ExecuteQuery)。

1 个答案:

答案 0 :(得分:2)

中删除return
return header("Location: main_login.php");

我们需要两个参考来理解这一点:

  

如果从全局范围调用,则结束当前脚本文件的执行。如果包含或需要当前脚本文件,则将控制权传递回调用文件。

  

如果您重定向但不是die() / exit(),则始终会执行并显示代码。

基本上,既然你回来了,它就不会到达exit()部分,这意味着它会将执行返回到主脚本 - 具有不应该执行的功能的脚本这种情况。