该页面未使用isset正确重定向

时间:2014-03-12 08:00:43

标签: php html mysql redirect

我正在该页面未在mozilla和chrome中正确重定向 此网页具有重定向循环

这就是我想要做的。在我的根目录中有一个 index.php information.php 也是一个文件夹 common

常见的fodler包括: common.php,db.php,header.php

在root的index.php文件中,这是从common文件夹调用header.php的代码。

的index.php

<?php 
include('common/header.php');
?>
<p>this is some content in Index file.</p>

的common.php

<?php
    @session_start();
    // Retrieve username and password from database according to user's input

    if(isset($_POST['l_submit'])){
        $user = $_POST['l_name'];
        $pass = $_POST['l_pass'];
        $stmt = mysql_query("SELECT * FROM users WHERE username = $user and password = $pass");
        $num_rows = mysql_num_rows($stmt);
        // Check username and password match
        if($num_rows > 0) {
        // Set username session variable
        $_SESSION['username'] = $_POST['l_name'];
        // Jump to secured page
        header('Location:information.php');
        }else{
            echo "<p class='message' align='center'>Wrong Username OR Password...!!</p>";
        }
    }
?>

header.php

<?php
include('db.php');
include('common.php');
if (!isset($_SESSION['username'])) {
  header("Location:index.php");
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>..::University of Westminster::..</title>
<link rel="stylesheet" href="css/stylesheet.css"/>

<link rel="stylesheet" href="css/lightbox.css" media="screen"/>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script type="text/javascript" src="js/light.js"></script>

<!--[if IE]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<!--[if lte IE 7]>
    <script src="js/IE8.js" type="text/javascript"></script><![endif]-->
<!--[if lt IE 7]>

    <link rel="stylesheet" type="text/css" media="all" href="css/ie6.css"/><![endif]-->
</head>
<body>

我不明白为什么会出现重定向循环我在 index.php 文件中调用 header.php 文件,如您所见, header.php 文件包含 isset 函数,用于检查用户是否存在,并在 common.php 文件中重定向我设置会话变量。

3 个答案:

答案 0 :(得分:4)

您正在重定向到index.php,但index.php已包含header.php,其中包含重定向登录信息。

尝试重定向到login.php这样没有包含header.php的网页。

您还可以使用index.php使用PHP_SELF,而不是重定向,也可以使用签入标题。

if (!isset($_SESSION['username']) && !strstr($_SERVER['PHP_SELF'], "index.php")) {
  header("Location:index.php");
}

答案 1 :(得分:0)

如果您没有为登录的用户开设会话,那么您将无休止地抛弃它们。

在索引中包含header.php,如果您还没有登录,则会将您发送回index.php,只要没有会话,相同的问题就会适用。 由于你无休止地被抛弃,你没有机会参加这个会议。

答案 2 :(得分:0)

这就是我使用当前逻辑的方法。我只需要改变index.php并保持不变。

index.php

中的

<?php 
include_once('common/db.php');
include_once('common/common.php');
if(isset($_SESSION['username'])) {
  header("Location: information.php");
}
?>
<section>
   <div class="row">
...
.

我在这里检查了会话是否已设置并将其重定向到 information.php 文件。