错误:本地主机重定向您的次数太多。ERR_TOO_MANY_REDIRECTS

我将我的框架设置为 MVC 类型,其中核心库重定向 url。这很有用,如果链接是:Some_class/some_method,它将从Some_class加载some_method。此外,我已将所有内容配置为使用.htaccess文件通过index.php。index.php 中的代码


<?php

session_start();

require_once 'config.php';

if (!isset($_SESSION['username']) && empty($_GET['url'])) { ?>

    <a href="Users/login">Login</a><br>

    <a href="Users/register">Register</a>

<?php } ?>

config.php中的代码


// Redirect to the homepage if not signed in

    if(!isset($_SESSION['user'])){

     header('location: http://localhost/index.php');

 }

用户控制器中的代码


public function login(){

    // Code to verify the entered credentials

    // If entered data is valid

    $_session['user'] = $_POST['user'];

}

public function log_out(){

    session_unset();

}

如果有人从用户控制器使用log_out方法注销,则执行该方法。如果代码在理想情况下是正确的,它应该重定向到index.php ,因为config.php中的代码说如果没有设置,它应该重定向到index.php。但是,每当有人注销时,我都会收到标题中提到的错误。我在做什么错误?$_SESSION['user']


PHPhttp重定向


素胚勾勒不出你
浏览 325回答 4
4回答

斯蒂芬大帝

它正在发生,因为你有一个重定向循环。这就是正在发生的事情。用户注销并且会话未设置然后将用户重定向到 index.php,您在其中调用“config.php”在 config.php 中,您检查用户是否未登录。他没有登录,所以它告诉它重定向到 index.php(然后您又回到了第 2 点,然后一圈又一圈地走)如果用户已登录,请将您的 config.php 更改为重定向,例如// Redirect to the dashboard signed inif(isset($_SESSION['user'])){&nbsp;header('location: http://localhost/dashboard.php');}

隔江千里

加载 config.php 后开始会话。否则 if 语句下的条件将始终为真,并且它将作为无限循环工作。首先启动会话,然后加载 config.php 文件。如果您的 index.php 文件是为未登录的用户准备的,则在加载 index.php 时不要包含 if 块来检查用户是否已登录。因为对于来宾用户,这将创建相同的无限循环。该部分应仅添加到登录用户的页面。

开心每一天1111

你的 config.php 中没有会话......所以这样做......<?phpsession_start();require_once 'config.php';所以你的会话也将在 config.php 中。或者将 session_start() 行带到 config.php,那可能会更好。

阿晨1998

您已经创建了无需用户登录即可工作的网址白名单。例如,$whitelist = ['Users/login', 'Users/register', '/'];并在重定向条件下检查当前网址if(!isset($_SESSION['user']) && !in_array($current_url, $whitelist)){&nbsp; &nbsp; &nbsp;header('location: http://localhost/index.php');}并session_start()从其他答案中发出。
打开App,查看更多内容
随时随地看视频慕课网APP