【问题标题】:Page Redirection doesnt work页面重定向不起作用
【发布时间】:2013-08-30 14:02:14
【问题描述】:

当我从 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 语句和一个类文件组成,这是由

调用的类代码
$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;
    }
}

所有的错误都在这里发生

问候

【问题讨论】:

    标签: php mysql session cookies


    【解决方案1】:

    问题是你的脚本递归地重定向到它自己。

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

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

    【讨论】:

    • Munjal 有什么办法
    猜你喜欢
    • 2019-02-04
    • 2013-08-16
    • 2015-10-09
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 2019-09-09
    相关资源
    最近更新 更多