2

要求されたリンクから値を取得するための単純な if ステートメントと else ステートメントを作成しています。私のコードは次のとおりです。

if($_REQUEST['f_id']=='')
{
    $friend_id=0;
}
else
{
    $friend_id=$_REQUEST['f_id'];
}

リンクがwww.example.com/profile.php?f_id=3

f_idが空であるか、上記の if ステートメントと else ステートメントのいずれかの値が実行されるかのように単純になりました。?f_id=3しかし、ユーザーがリンクをいじっているだけで、開くために残されたリンク全体を削除してwww.example.com/profile.phpから、それが存在しないことを検出しf_id、その場合はエラーページにリダイレクトする方法は何ですか?

4

4 に答える 4

6
if ( isset( $_REQUEST['f_id'] ) ) {
    if($_REQUEST['f_id']=='') {
        $friend_id=0;
    } else {
        $friend_id=$_REQUEST['f_id'];
    }
} else {
    REDIRECT TO ERROR PAGE
}

UPDATEあなたのURLS-sはあなたの代わりにwww.example.com/profile.php?f_id=3使用する必要があるように見えるので$_GET$_REQUEST

于 2012-09-02T13:22:30.127 に答える
4

isset() php 関数を使用して、次のことをテストできます。

if(!isset($_REQUEST) || $_REQUEST['f_id']=='')
{ 
   $friend_id=0; 
} 
else 
{ 
  $friend_id=$_REQUEST['f_id']; 
} 
于 2012-09-02T13:23:50.007 に答える
1

遅い答えですが、これは私がいつも使用する「エレガントな」ソリューションです。関心のあるすべての変数のこのコードから始めて、そこから進みます。PHP EXTRACTのドキュメントに示されているように、抽出された変数を使用してできることは他にもたくさんあります。

// Set the variables that I'm allowing in the script (and optionally their defaults)
    $f_id = null        // Default if not supplied, will be null if not in querystring
    //$f_id = 0         // Default if not supplied, will be false if not in querystring
    //$f_id = 'NotFound'    // Default if not supplied, will be 'NotFound' if not in querystring

// Choose where the variable is coming from
    extract($_REQUEST, EXTR_IF_EXISTS); // Data from GET or POST
    //extract($_GET, EXTR_IF_EXISTS);   // Data must be in GET
    //extract($_POST, EXTR_IF_EXISTS);  // Data must be in POST

if(!$f_id) {
    die("f_id not supplied...do redirect here");
}
于 2014-06-10T17:47:41.237 に答える
0

emptyを使用して、2x isset を 1 つのステートメントに結合することができます (実際に 0 の friend_id を持っていない限り、empty が true になります)。

if(empty($_REQUEST['f_id'])) {
   $friend_id=0;
} else {
  $friend_id=$_REQUEST['f_id'];
}
于 2013-04-26T20:36:34.700 に答える