php中的ERR_TOO_MANY_REDIRECTS

时间:2017-07-04 16:26:49

标签: php

i am new in php i am trying logout and redirect on index page my file is like this 
i am facing that problem when i want to logout i don not why that happen where i do mistake 
in my code.any one tell me where i do mistake in my php code..

我的 logout.php 文件就像是我的代码中有任何错误

logout.php

<?php
session_start();
session_destroy();
header('Location:index.php');
exit;
?>

这是我的 index.php 文件。如果我设置$ _SESSION ['s_activId']而不是它正常工作但是当我试图放置条件如果当时没有设置$ _SESSION ['s_activId']我希望在索引页面上传递标题有时它是工作一些时间不起作用

<?php
include('include/config.inc.php');
if(!isset($_SESSION['s_activId']))
{
  $_SESSION['s_urlRedirectDir'] = $_SERVER['REQUEST_URI'];
    header("Location:index.php");
}
else
{
  $wrong = '';
  if(isset($_POST['submit']))
  {
    $checkLogin = "SELECT userName,password,userType
                     FROM user
                    WHERE BINARY userName = '".$_POST['userName']."'
                      AND BINARY password = '".$_REQUEST['password']."'";
    $checkLoginresult = mysql_query($checkLogin);
    if($userLoginRow = mysql_fetch_array($checkLoginresult))
    {
      $_SESSION['s_activId']   = $userLoginRow['userName'];
      $_SESSION['s_password']  = $userLoginRow['password'];
      $_SESSION['hg_userType'] = $userLoginRow['userType'];

     if(!$_SESSION['s_urlRedirectDir'])
      {
        header("Location:index.php");
      }
      else
      {
        header("Location:reminder.php");
      }
    }
    else
    {
      $wrong = "UserId And Password Is Not Valid";
    }
  }
}
include("bottom.php");
$smarty->assign('wrong',$wrong);
$smarty->display("index.tpl");
?>

2 个答案:

答案 0 :(得分:0)

问题出现在 index.php

中的以下情况中
if(!isset($_SESSION['s_activId']))
{
    $_SESSION['s_urlRedirectDir'] = $_SERVER['REQUEST_URI'];
    header("Location:index.php");
}

当您退出时,您在 logout.php 上调用session_destroy()并在 index.php 上重定向,上面的条件为trues_activId未设置为会话,您再次重定向 index.php (未在会话中设置s_activId)。在会话中设置变量s_activId之前,上述情况将成立,因此您会收到ERR_TOO_MANY_REDIRECTS错误。

解决方案是,在 index.php 上,在调用s_activId方法之前在会话中设置变量header。请参考以下代码:

if(!isset($_SESSION['s_activId']))
{
    $_SESSION['s_urlRedirectDir'] = $_SERVER['REQUEST_URI'];
    $_SESSION['s_activId'] = true;
    header("Location:index.php");
}

答案 1 :(得分:0)

  

不要将index.php重定向到index.php。你有重定向循环。也   如果你有下面的代码,也可以开火添加骰子,因为之后   下面的重定向代码仍然执行。我也许没有看过你的代码   

之后没有问题
header("Location: lalala"); always add die(); or exit();