php - 确保信息之后?是一个整数

标签 php validation hyperlink sanitization

我已经从 HTML 编码转向 PHP 编码,因此当我想为我的新闻页面创建链接时,我使用 HREF 将行的 id 作为链接,并使该片段的标题成为可查看/可点击的链接:

echo "<a href=news.php?id=".$row{'id'};
echo ">";
echo ucwords(strtolower($row{'newstitle'}));
echo "</a>";

因此,当有人单击标题时,它会重定向到文章,并且地址栏变为(显然这是一个示例): http://site.com/news.php?id=1

如何验证 后的信息?是 id=int (它始终是一个数字)而不是某些可能损坏网站的用户代码或其他输入?我已经研究了清理/验证代码的方法,但我发现的所有示例都与将信息输入到随后在地址中使用的表单有关,而不是简单地确保地址有效,因此转向此处寻求帮助。 谢谢

最佳答案

您应该使用filter module :

$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
if ($id === false) {
     // not an integer
}

或者您可以使用ctype_digit()检查变量是否仅由十进制数字组成:

if (ctype_digit($_GET['id'])) {
    // it's an integer
} else {
    // not an integer
}

或更短:

ctype_digit($_GET['id']) or die("oops that's not an integer!");

但是 dieexit 会使您的代码难以测试。


is_numeric也可以,但对于数字的任何字符串表示形式都会返回 true,而不仅仅是整数。

关于php - 确保信息之后?是一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7220899/

相关文章:

php - 使用 PHP 和 MySQL 创建的框架的 URL 问题

php - 无法在 Objective-C 中检索 json 数据

php - laravel View 中的 e() 方法是做什么用的?

php - 正则表达式电子邮件 - 如何在电子邮件中允许加号?

c# - 在验证器中访问 Servicstack.net session

javascript - 如何检测主页上是否隐藏按钮

ssl - Opencart 链接不是 https?

php - 使用PHP通过复选框输入类型在数据库中插入用户的多个选择

php - $_POST[string] 包含空格

jquery - 强制基础遵守验证