PHP:这个网页有一个重定向循环

时间:2015-06-24 02:49:35

标签: php

我知道这个错误很常见,并且提到了很多解决方案,但由于某些原因我无法使其正常工作。

这是我的index.php文件,它是用户的登录页面

    <?php    
    session_start();    
    if (!(isset($_SESSION['username']) && $_SESSION['username'] != '')) {
      header ("Location: index.php");
    }    
    ?>
    ...
    ...
    <form  name='log' action='loginproc.php' method='POST'>  
    <input type="text" placeholder="Username" name="username">
    <input type="password" placeholder="Password" name="password">
    <input type='submit'  value='Login' onclick="return check()">
    </form>

这是loginproc.php文件

<?php
    require 'config.php';

    require 'core.inc.php'; 

    if(isset($_POST['username'])&&isset($_POST['password'])) {

        $username = $_POST['username'];
        $password = $_POST['password'];

        if(!empty($username) && !empty($password)) {
            // $md5pwd = md5($password);
            $query = "SELECT username FROM `login` WHERE `username` = '$username' and `password` = '$password';";
            //echo $query;
            //$query_run = mysqli_query($query);

            //echo $query_run;
            if($query_run = mysqli_query($conn,$query)) {
                //echo $query_run;
                $query_num_rows = mysqli_num_rows($query_run);

                if($query_num_rows==0) {
                    phpAlert(   "Invalid USERNAME or PASSWORD combination"   );
                    echo '<script type="text/javascript">window.location = "index.php"</script>';
                    exit();
                    //echo '<p>&nbsp;&nbsp;&nbsp;Invalid USERNAME or PASSWORD combination <br /><br />&nbsp;&nbsp;<a href="index.php"> Click here to Login </a> ';
                }
                else if($query_num_rows==1) {
                    //echo 'Hello';
                    $_SESSION['username']=$username;
                    header('Location: main.php');
                }
            }
        }
        else {
            echo 'You Must supply a username and password';
        }
    }
    function phpAlert($msg) {
        echo '<script type="text/javascript">alert("' . $msg . '")</script>';
    }
?>

core.inc.php文件

<?php

    ob_start();
    session_start();

    function loggedin() {
        if(isset($_SESSION['username'])&& !empty($_SESSION['username'])) {
            return true;
        }
        else {
            return false;
        }
    }
?>

2 个答案:

答案 0 :(得分:1)

重定向到index.php时需要添加额外的参数。

<?php    
    session_start();    
    if (!(isset($_SESSION['username']) && $_SESSION['username'] != '')) {
      if($_REQUEST['ftime']!=1)
     {
        header ("Location: index.php?ftime=1");
     }
    }    
    ?>

答案 1 :(得分:1)

您需要将重定向转到已登录用户的其他地方,并在未登录时绕过:

<?php    
session_start();
// if session username is set and valid, go to somewhere else
if(isset($_SESSION['username']) && !empty($_SESSION['username'])) {
    // elswhere could be a profile page, or similar
    header("Location: elsewhere.php");
    // It is more accepted to exit after a header
    exit;
}
?>

<!-- All other instances beside valid login will allow this to form to show-->
<form  name='log' action='loginproc.php' method='POST'>  
    <input type="text" placeholder="Username" name="username">
    <input type="password" placeholder="Password" name="password">
    <input type='submit'  value='Login' onclick="return check()">
</form>