2011-10-14 8 views
5

こんにちは私は、このスクリプトでは、着信$ _GET変数の値をチェックし、それが整数であることを確認して、この値を$ _SESSION値に対して検証します自分のアカウントにしかアクセスできないことを確認します。

// validate $_GET field 
if(isset($_GET['identity']) && filter_var($_GET['identity'], FILTER_VALIDATE_INT, array('min_range' => 1))) { 


if(isset($_SESSION['user_identity']) && ((int)$_SESSION['user_identity'] === (int)$_GET['identity'])) { // if session exists and is === $_GET['identity'] 
// Proceed with code 

私が合格しようとすると、このインスタンスのために正常に動作し、「0」、「2-2」、「ABC」または$ _GET値として無価値をクエリが正常に失敗し、リダイレクト:コードは次のようになりますそれらをホームページに送ります。

私が試したのは、.htaccessファイルを変更してURLを 'profile/1'にマップして整理することでした。

RewriteRule ^profile$ profile.php 
RewriteRule ^profile/([0-9]+)$ profile.php?identity=$1 [NC,L] 

私が今見出したのは、上記の無効な$ _GETパラメータを使用してページがリダイレクトされないということです。それはちょうど 'プロフィール/ abcを見つけることを試みる。

誰でも知っていますか?

答えて

10

私はこれを使用して、それは私の作品:今すぐ

RewriteEngine On 
RewriteBase/
RewriteRule ^profile$ profile.php 
RewriteRule ^profile/([a-z0-9\-]+)$ profile.php?identity=$1 [NC,L,QSA] 

は、どのようにprofile/abcを取得したのですか?あなたが番号([0-9]+)を指定するだけなので、ルールで文字を渡そうとすると動作しません。手紙を渡したい場合は、以下を使用する必要があります:

+0

ありがとうございます、私はあなたのルールを試してみましょう。 PHPの文が整数ではないものを明示的に除外し、URLに$ _GETを渡してマスクされていないものをすべて投げ捨てるので、それは私の.htaccesルールと関係するものでなければなりません。 – Jonnny

+0

あなたが追加の助けが必要な場合はお知らせください –

+0

私はそれを試しましたが、私はまだ同じ結果を得ます。どのように奇妙な、私のシステムでいくつかの奇妙なかもしれない。 – Jonnny