-2

私は単純なログインフォームに取り組んでおり、次のリダイレクトURLを持っています:

<form method="post" action="/incs/login.php?redirect=<?php echo $_SERVER['PHP_SELF'];?>">

しかし、フォームに入力して送信ボタンを押すと、間違ったURLにリダイレクトされます。

http://site/incs/login.php?redirect=/admin/index.php

これは次のようになっているはずです:

http://site/admin/index.php

私は古いガイドに従っていて、インターネットでこの(リダイレクト)機能を探しましたが、何も見つかりませんでした。これは今でも機能しますか、それとももうサポートされていませんか?

4

1 に答える 1

1

URL にクエリ文字列を追加するだけでは、サーバー側のコードで実際に使用しない限り、何も起こりません。PHP スクリプトでは、次のような実際のリダイレクトを処理する必要があります。

<?php

/* Process form data */

if(isset($_REQUEST['redirect'])){
   $url = preg_replace('/[\?\&].*/','',$_REQUEST['redirect']);
   if ($url == '') $url='/';
}

header("Location: $url"); // <-- this is what actually redirects

?>

上記は大幅に簡略化したものですが、一般的な考え方を示しています。実際のアプリケーションでは、おそらくフォーム データが有効な場合 (たとえば、ログインが成功した場合) にのみリダイレクトします。また、リダイレクト URL を検証して、それがサイトで有効な URL であることを確認することもできます。

ある種の php フレームワークを使用している場合は、これらの詳細をすべて処理するので、適切に構成するだけで済みます。

于 2012-08-11T22:42:35.540 に答える