分页问题[PHP&;is_numeric]

分页问题[PHP&;is_numeric],php,pagination,Php,Pagination,我给出了一个分页问题: $num_por_pagina = 5; $paginac = $_GET[paginac]; if (!$paginac) { $paginac = 1; } 为了避免PHP/SQL注入,我只希望使用整数 例如,访问: 或 结果,您的SQL语法出现错误;查看与MySQL服务器版本对应的手册,以了解第7行“4.6,2”附近使用的正确语法 发件人: 访问www.mysite.com/index.php?paginac=3.3或www.mysite.com/ind

我给出了一个分页问题:

$num_por_pagina = 5; 
$paginac = $_GET[paginac]; 
if (!$paginac) {
   $paginac = 1;
}
为了避免PHP/SQL注入,我只希望使用整数

例如,访问:

结果,您的SQL语法出现错误;查看与MySQL服务器版本对应的手册,以了解第7行“4.6,2”附近使用的正确语法

发件人:

访问www.mysite.com/index.php?paginac=3.3或www.mysite.com/index.php?paginac=3,3


由此产生的错误,此页未处于活动状态。

您对
的测试似乎是数值()
仍然允许编写和执行SQL语句,这会引发错误

确保如果GET变量不是数字,则不会执行查询

此外,在访问关联数组索引时使用引号。如果您通过paginac,请:

$paginac = $_GET['paginac'];
$paginac = $_GET['page'];
如果您正在传递页面,请获取:

$paginac = $_GET['paginac'];
$paginac = $_GET['page'];

我会这样做:

if ($paginac < 2)
{
    $paginac = 1;
}
if($paginac<2)
{
$paginac=1;
}
如果变量是字符串,PHP会将其强制转换为1,因此此方法会将任何文本强制转换为1,并有助于防止出现负数引号

$paginac = $_GET["paginac"];

您将“page”作为get参数传递,捕获该参数而不是“paginac”


如果您在mysql中遇到错误,请也发布该错误的代码。

如果您知道您将收到一个数字(或者应该收到),您可以将其作为第一道防线:

$paginac = (int) $_GET['page'];
页面
表示一个常量。您应该对键使用引号

如果收到非数字字符串,则只需请求第0页即可

第二,你需要正确地阅读,而不仅仅是在大多数情况下使用一些技巧来纠正错误。

试试看

$paginac = intval($_GET[paginac]);

请发布引发错误的SQL查询(显然会混淆任何敏感数据)。