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_idif 和 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
}

更新由于您的 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 为真)

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