我有一个我正在玩的测试页面,也许现在还太早了,但我似乎遇到了一些奇怪的事情:
我有这个网址: 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?
答案 0 :(得分:3)
你的逻辑存在缺陷。你的if语句真正要求的是:
“如果设置$ hike_id,并且不为空,则抛出错误”
0 是 empty所以你的陈述不会引发错误。尝试使用其他值,例如1,看看会发生什么。
另外,为什么在那里使用mysql_real_escape_string?等待转义,直到在SQL查询中使用该值。请注意,mysql_real_escape_string需要与数据库的活动连接,否则它将返回false(在数字上下文中被解释为零;也许这就是为什么108被转换为0?)