1

javascript/jquery または ajax を使用せずに純粋なphpを使用しているとします。

Web サイトに多数のページがあります。たとえば、page1、page2、page3、page4 とします。最初の 3 つのページすべてに、ページ 4 に移動してログインするためのリンクがあります。

ページ4にはフォームフィールドがあり、上にはユーザー入力をキャッチしてユーザー名をセッションに入れるphpスクリプトがあり、その後、ユーザーの元のページにリダイレクトしたいのですが、ページがリダイレクトされていません. コードを入れてみましょう。

<?php 
ob_start();
session_start();

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

$username = $_POST['username'];
$_SESSION['username'] = $username;
if(isset($_SERVER['HTTP_REFERER'])){

$referer = $_SERVER['HTTP_REFERER'];
header('location: '.$referer);

}

}



?>

<form action="page4.php" method="POST">
Username: <input type="text" name="username" /><br/>
<input type="submit" value="Submit" />
</form>

すべての page1、page2、page3 をob_start()session_start();で再開しています。

ヘッダー関数に特定のページを使用すると、リダイレクトされます。ヘッダー ( location: page2.php) などの問題はありません。フォーム フィールドと php スクリプトが同じページ (page4) にあるので、動的にリダイレクトするにはどうすればよいのでしょうか? ユーザーは、ページ 1、ページ 2、またはページ 3 からアクセスする可能性があり、ログイン後に元の特定のページに戻りたいと考えています。

4

2 に答える 2

0

page1.php、page2.php、page3.php では:

<?php
session_start();
$_SESSION['page'] = $_SERVER['PHP_SELF'];

page4.php で:

<?php
session_start();
// process form
if ($form_proccessed == true) // or whatever
{
    header("Location: {$_SESSION['page']}\r\n");
    exit;
}

$_SERVER['PHP_SELF']ファイルを新しい名前で新しいファイルとして保存すれば、コードの更新について心配する必要はありません。

于 2012-12-15T14:35:47.960 に答える
0

フォーム内の非表示の入力フィールドを使用して実行できます。

<input type="hidden" name="referer" value="$_SERVER[HTTP_REFERER]">
于 2015-06-08T11:42:55.627 に答える