如何检查是否$ _GET [ '身份证']设置并使用PHP
这里是不是空的是一个PHP代码
现在,如果ID设置(例如:index.php的ID = 12),然后该操作被执行,但如果没有设置id(例如:index.php?id =),这会显示一个错误,如何解决这个问题?
如何确定ID是一个整数,它不是空的,然后执行特定操作....
编辑
谢谢大家对你的答案,但我仍然收到这个错误...
if(isset($_GET['id'])) { // I implemented all these codes but still....
$user= User::find_by_id($_GET['id']);
// Database Classes Fetches user info from database
}
else {
redirect('index.php'); //redirect function
}
如果id是1或大于1,那么脚本执行完美。 (的index.php?ID = 1)
但我的id设置ID为提我得到一个错误i..e的index.php?ID =
代码应该自动重定向用户的index.php页面而不是显示错误.....
错误:数据库查询失败:您的SQL语法错误;检查对应于你的MySQL服务器版本在线路附近使用“限制1” 1
您应该同时检查组状态和内容:
if (isset($_GET['id']) && !empty($_GET['id']))
// ....
请注意,您应该而不是直接使用该值并使用它。你应该确保它只包含你期望的值。要检查一个整数,甚至更好地从上一个整数上班,做这样的事情:
$id = (isset($_GET['id']) && is_numeric($_GET['id'])) ? intval($_GET['id']) : 0;
if ($id != 0)
// id is an int != 0
else
redirect('index.php');
是什么错误告诉你正确的语法手册?
但是,如果它的设置,这将检查,如果它是一个整数
if(isset($_GET['id']) && ctype_digit($_GET['id']) && intval($_GET['id']) > 0)
或检查出ctype_digit
How to determine id is an integer and it's not empty and then perform the specific action....
if (!empty($_GET['id']) && (intval($_GET['id']) == $_GET['id'])) {
//do something
} else {
redirect('index.php'); //redirect is a function
}
上面可能不是最好的解决办法,但它应该工作你需要什么。它不会让id为0,并且会要求它是一个整数。
嗯......如果你将其设置为一个整数类型的变量,那么你也可以这样做:
if($_GET['id'] && gettype($_GET['id']) == 'integer'){
#do something
}else{
#do something else
}
这不会起作用,因为'gettype'会一直报告一个字符串类型,因为GET参数通常不是键入的。另外调用'$ _GET ['id']'会在未设置时引发索引警告。 – poke 2010-08-10 16:22:43
if(isset($_GET['id']) && ctype_digit($_GET['id']) && is_numeric($_GET['id']) && $_GET['id']>0) {
$user= User::find_by_id($_GET['id']);
}
else {
redirect('index.php'); //redirect function
}
试试这个,这个代码完全丸您的要求。
看来你只是有一个问题,当你想检查它的设置时,是否抛出一个true。那是因为它已设置,但未设置为您想要使用的值。
我假设用户ID必须是> 0,因此只是这样做
if (isset($_GET['id']) && $_GET['id'] > 0) {
$user= User::find_by_id($_GET['id']);
} else {
redirect('index.php');
}
而且你prolly最好的清洁ID处理这么
$userID = isset($_GET['id']) && $_GET['id'] > 0 ? (int) $_GET['id'] : 0;
if ($userID) {
$user= User::find_by_id($userID);
} else {
redirect('index.php');
}
前Theres很多的方法来做到这一点,我个人更喜欢这一点。它使你的代码看起来更干净。
你将不得不为每个可能的情况检查多次:如果id未设置或为空,该怎么办?如果设置了id,但它不是数字?如果在GET请求中根本不存在'id'键怎么办?
我有类似的情况。我用GET发送了两个变量,一个数字:'id',另一个字符串是一个名字:'state'...我通过检查所有可能的条件来解决它。
当查询字符串中没有设置id var时会发生什么? – kevtrout 2010-08-09 21:07:01
按整数,你的意思是PHP的数据类型,还是你的意思是任何数字序列? – Gordon 2010-08-09 21:19:04
如果您查看代码,它不是数据类型,因为@_GET allways返回一个字符串。 – ThoKra 2010-08-09 21:23:19