2017-05-20 9 views
-1

エラーページ(404)が正常に機能するようになっていますが、うまくいきますが、ユーザーがアクセスしようとしたファイルを報告できません。私はREQUEST_URIエラー404のページ(レポート機能付き)

$ requri =のgetenv( "REQUEST_URI")を呼んでいるスクリプトで

。 私も試しました $ requri =($ _SERVER ['REQUEST_URI']);

それらの両方が、それはエラーページがあると考えて、なぜエラーページ自体ではなく、彼らが書いた不良アドレスである「404.php」、..私は何のアイデアを得なかっまし

を報告しているようです要求されたページ... .htaccessコマンドを使用しないと、 ErrorDocument 404 https://mydomain.se/404.php 故障していますが、私はそうは思わないです。

+0

どのフレームワーク、おそらくいくつかのコード? – Zl3n

+0

404.phpページにリダイレクトされることがあります。 '$ _SERVER ['HTTP_REFERER']'を試してください。 –

+0

フレームワーク?私はこれでかなり新しいです – JoBe

答えて

0

のように、htmlentities()を使用し、あなただけ(ないHTMLタグか何かのパラメータで)画面上に表示していると仮定すると、あなたは$_SERVER["REDIRECT_URI"]を使用します。 は、私はちょうど時々私は私はあなたがリダイレクトにErrorDocument 404 /404.php(ローカルの代わりに、完全なURL)を使用する(あるいは、そのような401や403など、いくつかのステータスコードについて単一/error.phpを使用することをお勧めすることをしかしhtmlspecialchars(strip_tags(stripslashes($_SERVER["REQUEST_URI"])))

ノートでこれを行うことを見上げ$_SERVER["REDIRECT_STATUS"]を評価してください)

+0

これはうまくいきました。完全なパス(http://myserver.com/404.php)を書いても、サーバーはエラー404 phpファイルをUriとして呼び出しましたが、Hagen von Eitzen(/404.php)が働いた! – JoBe

0

ErrorDocumentを使用する代わりに、(1)ルータでアプリケーションの404を処理するか、RewriteRuleを使用してください(this post)。

上記を実行すると、実際には$_SERVER['REQUEST_URI']が必要です。しかし、は決してをそのままの形でエコーアウトする必要があります。それには簡単に攻撃が含まれている可能性があります。代わりに、あなたは

実際
echo htmlentities($_SERVER['REQUEST_URI']); 
+0

xssは問題ではありません(私は思う)、私は実際にこのすべてに新しいですが、私は基本的にシステムがエラーについての情報をメールを送信したい。 – JoBe

+0

@ジョーXSSは絶対に*問題です。最も一般的な攻撃方法の1つです。原則として、ユーザーの入力を決して信用しないでください。要求されたURLは間違いなくユーザーの入力です。 –

+0

私はxxsが問題ではないと主張しようとしていませんでしたが、私はそれが何であるかは分かりませんが、それが何であれ、phpで文字列を私にメールで送るのは間違いありません。 – JoBe

関連する問題