由于某种原因,数字获取请求参数显示为零

时间:2011-04-16 17:27:55

标签: php request

我有一个我正在玩的测试页面,也许现在还太早了,但我似乎遇到了一些奇怪的事情:

我有这个网址: http://www.comehike.com/outdoors/trip_story.php?hike_id=108

登录 登录:test@comehike.com 密码:密码

我这样做是为了得到hike_id参数:

$hike_id = mysql_real_escape_string($_GET['hike_id']);
$errors = array();
if ( isset ( $hike_id ) && !empty ($hike_id)  )
{
   $errors[] = 'Hike id was empty.  Could not get the hike information';
}

但是当我将内容输出到屏幕时,远程id为0,如页面后面所示。因此,由于hike_id为0,它通过了验证测试,这是一个错误。知道为什么会发生这种情况,因为传递的hike_id是108?

1 个答案:

答案 0 :(得分:3)

你的逻辑存在缺陷。你的if语句真正要求的是:

“如果设置$ hike_id,并且不为空,则抛出错误”

0 empty所以你的陈述不会引发错误。尝试使用其他值,例如1,看看会发生什么。

另外,为什么在那里使用mysql_real_escape_string?等待转义,直到在SQL查询中使用该值。请注意,mysql_real_escape_string需要与数据库的活动连接,否则它将返回false(在数字上下文中被解释为零;也许这就是为什么108被转换为0?)