0

当我从 apache 运行 index.php 时,我抓取了一段代码登录和注册脚本,它在地址选项卡中给出了这个错误

http://localhost/johnlogin/?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login?msg=login

浏览器页面上出现以下错误

页面未正确重定向

Firefox 检测到服务器正在以永远不会完成的方式重定向对该地址的请求。

此问题有时可能是由禁用或拒绝接受 cookie 引起的。

我挖出代码但无法解决问题这里是 index.php 的代码

require_once('load.php');
$logged = $j->checkLogin();

if ( $logged == false ) {
    //Build our redirect
    $url = "http" . ((!empty($_SERVER['HTTPS'])) ? "s" : "") . "://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
    $redirect = str_replace('index.php', 'login.php', $url);

    //Redirect to the home page
    header("Location: $redirect?msg=login");
    exit;
} else {
    //Grab our authorization cookie array
    $cookie = $_COOKIE['joombologauth'];

    //Set our user and authID variables
    $user = $cookie['user'];
    $authID = $cookie['authID'];

    //Query the database for the selected user
    $table = 'j_users';
    $sql = "SELECT * FROM $table WHERE user_login = '" . $user . "'";
    $results = $jdb->select($sql);

    //Kill the script if the submitted username doesn't exit
    if (!$results) {
        die('Sorry, that username does not exist!');
    }

    //Fetch our results into an associative array
    $results = mysql_fetch_assoc( $results );

?>

load.php 基本上包含一个加载 db 的 require_once 语句和一个类文件,这是 id 被调用的类代码

$logged = $j->checkLogin();

---------class.php 代码------

        function checkLogin() {
        global $jdb;

        //Grab our authorization cookie array
        $cookie = $_COOKIE['joombologauth'];

        //Set our user and authID variables
        $user = $cookie['user'];
        $authID = $cookie['authID'];

        /*
         * If the cookie values are empty, we redirect to login right away;
         * otherwise, we run the login check.
         */
        if ( !empty ( $cookie ) ) {

            //Query the database for the selected user
            $table = 'login';
            $sql = "SELECT * FROM $table WHERE uName = '" . $user . "'";
            $results = $jdb->select($sql);

            //Kill the script if the submitted username doesn't exit
            if (!$results) {
                die('Sorry, that username does not exist!');
            }

            //Fetch our results into an associative array
            $results = mysql_fetch_assoc( $results );

            //The registration date of the stored matching user
            $storeg = $results['user_registered'];

            //The hashed password of the stored matching user
            $stopass = $results['user_pass'];

            //Rehash password to see if it matches the value stored in the cookie
            $authnonce = md5('cookie-' . $user . $storeg . AUTH_SALT);
            $stopass = $jdb->hash_password($stopass, $authnonce);

            if ( $stopass == $authID ) {
                $results = true;
            } else {
                $results = false;
            }
        } else {
            //Build our redirect
            $url = "http" . ((!empty($_SERVER['HTTPS'])) ? "s" : "") . "://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
            $redirect = str_replace('index.php', 'login.php', $url);

            //Redirect to the home page
            header("Location: $redirect?msg=login");
            exit;
        }

        return $results;
    }
}

所有的错误都在这里发生

问候

4

1 回答 1

0

问题是您的脚本递归地重定向到自身。

问题是当您第一次尝试访问该页面时,脚本会确定您未登录:if ( $logged == false )

它会将您重定向到带有参数的 login.php,这些参数会进一步将其重定向到同一页面,因此您的脚本会继续循环。当您的 Web 服务器 (apache) 将其循环一定时间时,它会将请求标记为无法服务,因此会出现错误。

于 2013-08-30T06:02:14.440 回答