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/

相关文章:

wpf - WPF中 "LabelLink"控件的单击事件的绑定(bind)方法-Caliburn

php - 我正在尝试使用 jquery $.post() 将 <div> 内容发布到数据库

javascript - 使用正则表达式验证任何字符串

javascript - 密码正则表达式 - 带有 unicode 标志的正则表达式中不允许原始大括号

html - 悬停时链接文本颜色

css - 在谷歌浏览器中围绕 div 链接

php - 如何知道某个元素可以在哪个页面找到?

PHP如何从Mysql返回日期时间(6)?

javascript - wordpress,如何仅更改循环中第一篇文章的内容

java - 不断验证整数