为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
素胚勾勒不出你 2023-03-04 14:17:16
我将我的框架设置为 MVC 类型,其中核心库重定向 url。这很有用,如果链接是:Some_class/some_method,它将从Some_class加载some_method。此外,我已将所有内容配置为使用.htaccess文件通过index.php。index.php 中的代码<?phpsession_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重定向
查看完整描述

4 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

它正在发生,因为你有一个重定向循环。这就是正在发生的事情。

  1. 用户注销并且会话未设置

  2. 然后将用户重定向到 index.php,您在其中调用“config.php”

  3. 在 config.php 中,您检查用户是否未登录。他没有登录,所以它告诉它重定向到 index.php(然后您又回到了第 2 点,然后一圈又一圈地走)

如果用户已登录,请将您的 config.php 更改为重定向,例如

// Redirect to the dashboard signed in

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

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

}


查看完整回答
反对 回复 2023-03-04
?
隔江千里

TA贡献1906条经验 获得超10个赞

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



查看完整回答
反对 回复 2023-03-04
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

你的 config.php 中没有会话......所以这样做......


<?php

session_start();

require_once 'config.php';

所以你的会话也将在 config.php 中。或者将 session_start() 行带到 config.php,那可能会更好。


查看完整回答
反对 回复 2023-03-04
?
阿晨1998

TA贡献2037条经验 获得超6个赞

您已经创建了无需用户登录即可工作的网址白名单。例如,$whitelist = ['Users/login', 'Users/register', '/'];并在重定向条件下检查当前网址


if(!isset($_SESSION['user']) && !in_array($current_url, $whitelist)){

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

}

并session_start()从其他答案中发出。


查看完整回答
反对 回复 2023-03-04
  • 4 回答
  • 0 关注
  • 324 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信