我正在创建一个简单的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重定向到错误页面?
答案 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'];
}