【发布时间】:2015-06-01 05:44:29
【问题描述】:
我正在编写一个分页脚本,我想让用户能够控制一页中显示多少结果。我通过使用 GET 变量来做到这一点,例如:example.org/articles.php?count=10。唯一的问题是 GET 变量必须是整数,否则代码会出现随机错误,其中一些包含用户不应该看到的信息。
这是我的代码:
// Checks if there is a GET variable (this part works fine)
if (isset($_GET["count"])) {
if (!empty($_GET["count"])) {
$page_rows = $_GET["count"];
} else {
$page_rows = $page_rows_default;
}
} else {
$page_rows = $page_rows_default;
}
// checks if the GET variable is an interger
// if not, the offending value is replaced with 0
// (it doesn't work)
if(is_int($page_rows) == false) {
$page_rows = 0;
}
根据我的实验,我的代码可以容忍零和负整数,但在给出?count=asdf 之类的内容时会失败。我主要不希望用户能够通过将随机文本注入 GET 变量来使脚本崩溃。如何让脚本自动检测非整数值以便处理它们而不是简单地停止代码?
【问题讨论】:
-
尝试使用 is_numeric() 。 php.net/manual/en/function.is-numeric.php
-
脚本是否检查值是否为数字无关紧要,因为您使用的 GET 请求只能在页面请求中进行操作。因此,如果我也愿意,我可以进入浏览器的地址栏并输入
example.org/articles.php?count=asdf并获取您试图阻止用户看到的信息。您应该使用 POST 方法,该方法将在 HTTP 标头中发送请求。关于分页,您应该使用带有10, 20, 50, 100, ALL(或类似内容)的下拉框作为选项。