当没有$ _REQUEST时,“if else声明”

时间:2012-09-02 13:19:39

标签: php request if-statement

我正在创建一个简单的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不存在,并且case重定向到错误页面?

4 个答案:

答案 0 :(得分:5)

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

更新由于您的网址看起来像www.example.com/profile.php?f_id=3,因此您应使用$_GET代替$_REQUEST

答案 1 :(得分:3)

你可以使用isset()php函数来测试:

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

答案 2 :(得分: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");
}

答案 3 :(得分:0)

你可以使用empty将2x isset合并为1个语句(除非你实际上有一个0的friend_id会导致空为真)

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