登录后重定向上一页

时间:2013-10-18 11:12:35

标签: php redirect login

虽然有一些解决方案,但我无法将它们作为我案例的解决方案。

我需要在用户登录后将用户重定向到同一页面而不是myaccount页面。

来自login.php;

if (isset($_POST['action']) && $_POST['action'] == "login")
{
    $username   = mysql_real_escape_string(getPostParameter('username'));
    $pwd        = mysql_real_escape_string(getPostParameter('password'));
    $ip         = getenv("REMOTE_ADDR");

    if (!($username && $pwd))
    {
        $errormsg = "Please enter username and password";
    }
    else
    {
        $sql = "SELECT * FROM prcb_users WHERE username='$username' AND password='".PasswordEncryption($pwd)."' LIMIT 1";
        $result = smart_mysql_query($sql);

        if (mysql_num_rows($result) != 0)
        {
                $row = mysql_fetch_array($result);

                if ($row['status'] == 'inactive')
                {
                    header("Location: /login?msg=2");
                    exit();
                }

                smart_mysql_query("UPDATE prcb_users SET last_ip='$ip', login_count=login_count+1, last_login=NOW() WHERE user_id='".(int)$row['user_id']."' LIMIT 1"); 

                if (!session_id()) session_start();
                $_SESSION['userid'] = $row['user_id'];
                $_SESSION['FirstName'] = $row['fname'];

                if ($_SESSION['goRetailerID'])
                {
                    $redirect_url = RetailerSEOurl($_SESSION['goRetailerID']);
                    unset($_SESSION['goRetailerID']);
                }
                else
                {
                    $redirect_url = "/myacount";
                }

                header("Location: ".$redirect_url);
                exit();

        }
        else
        {
                header("Location: /login?msg=1");
                exit();
        }
    }
}

登录表单;

<form action="" method="post">
E-mail <input type="text" class="input2" name="username" value="<?php echo getPostParameter('username'); ?>" />

Password <input type="password" class="input2" name="password" value="" />

<input type="hidden" name="action" value="login" />
<input type="submit" class="butt" name="login" id="login" value="Login" />
</form>

如果有人能帮助我解决这个问题,我感激不尽。

3 个答案:

答案 0 :(得分:0)

当您提交login.php时,请添加您来自的页面:

<input type="hidden" name="redirect" value="<?php echo htmlspecialchars($full_url);?>" />

然后在你的login.php

header("Location: " . $_POST["redirect"]);

答案 1 :(得分:0)

我喜欢这样做的一种方法是保持会话变量'lastpage',其中我存储当前页面的URL或pageID。然后,当您进入登录时,您可以从会话中检索最后加载的页面并执行标题重定向。

答案 2 :(得分:0)

当用户点击登录链接或提交表单进入登录页面时,会设置HTTP_REFERER。要返回呼叫页面,请尝试:

$redirect_url = isset($_SERVER["HTTP_REFERER"]) ?
  $_SERVER["HTTP_REFERER"] : "/myacount";
//
// avoid an infinite loop: not redirect to the login page:
//
if(empty($redirect_url) || preg_match("/\/login/", $redirect_url))
{
  $redirect_url = "/myacount";
}
header("Location: " . $redirect_url);
exit;

此解决方案符合您的愿望“登录后重定向上一页”。和更多 这是诱惑,因为访客将在您的网站上接受他打断的游览。此外,不需要额外的表单输入,因为apache服务器会照顾你。