0

いくつかの解決策がありますが、私の場合の解決策としてそれらを取得できませんでした。

ログイン後、ユーザーを 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>

この問題を解決する方法を教えていただければ幸いです。

4

3 に答える 3

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 サーバーが面倒を見てくれるので、追加のフォーム入力は必要ありません。

于 2013-10-18T11:23:47.097 に答える
0

login.php に送信するときに、元のページを追加します。

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

次に、 login.php で

header("Location: " . $_POST["redirect"]);
于 2013-10-18T11:18:14.340 に答える
0

私がこれを行う方法の 1 つは、現在のページの URL またはページ ID を格納するセッション変数「lastpage」を保持することです。ログインすると、最後にロードされたページをセッションから取得し、ヘッダー リダイレクトを実行できます。

于 2013-10-18T11:18:27.483 に答える