PHP重定向循环

时间:2011-09-02 09:10:27

标签: php

在我的索引页面上,我有一个指向我的login.php页面的链接,其中包含以下代码:

      <?php     
    if(isset($_SESSION['username'])) { 
    echo "<div id='logout'><a href='logout.php'>Logout (".$_SESSION['username'].")</a></div>";
    } else { 
    echo "<div id='login'><a href='login.php'>Login (Regular)</a></div>";
    }      
    ?>

在login.php页面上我有

<?php
include('check.php');

$ref = getenv('HTTP_REFERER');

if (isset($ref)) {
  header("Location: " . $ref);
  exit;
} else {
  header("Location: index.php");
  exit;
}
?>

check.php是登录表单的代码,它会检查用户级别以确保他们可以访问该页面。有人告诉我,我需要添加一个检查,看看引用是否是login.php,否则它将进入无限循环,我当然得到“这个网页有一个重定向循环”。但是,我不知道如何做到这一点,我找不到任何有关如何解决它的信息。有人知道快速解决方案吗?

1 个答案:

答案 0 :(得分:0)

你应该能够做到

if (isset($_SERVER['HTTP_REFERER']) && end(explode('/',$_SERVER['HTTP_REFERER'])) != 'login.php') {
  header("Location: " . $_SERVER['HTTP_REFERER']);
  exit;
} else {
  header("Location: index.php");
  exit;
}

请注意,这是一个简化的代码 - 您可能需要比这更聪明。