gpt4 book ai didi

PHP 分页与变量丑陋的 URL

转载 作者:行者123 更新时间:2023-11-29 12:52:58 25 4
gpt4 key购买 nike

好的,我有一个很大的数据库,我可以像这样查询

SELECT * FROM PricePaid WHERE PostCode LIKE '$loc%'
ORDER BY Price DESC
LIMIT $start,$perPage

我知道如何使用分页链接来计算找到的总记录并对其进行分页。我在 NEXT 链接上使用以下代码:

<a href='http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."&start=$next'>NEXT</a>

这工作正常,因为它保留了我的 ?loc 变量,但启动变量重复。

这是我的网址在首页上的样子

 mysite/uk-property-prices.php?loc=l24  

然后,当我第一次单击下一页链接时,我的网址传递开始变量并且查询显示第二页

 mysite/uk-property-prices.php?loc=l24&start=1  

但是当我再次单击“下一步”时,我得到了这个

mysite/uk-property-prices.php?loc=l24&start=1&start=2

现在我知道这可行,但过了一段时间我的网址就变得愚蠢地长,就像这样

mysite/uk-property-prices.php?loc=l24&start=1&start=2&start=3&start=4

我做错了什么

最佳答案

$_SERVER['REQUEST_URI'] 也包含查询字符串。您所做的只是每次添加越来越多的变量。

您需要解析查询字符串,替换要替换的值,然后重新构建 URL。 PHP 已经在 $_GET 中为您解析了它(假设您不需要重复的值)。未经测试,但试试这个:

$newQueryParts = $_GET;
$newQueryParts['loc'] = 3;
$urlParts = parse_url($_SERVER['REQUEST_URI']);
echo 'http://', $_SERVER['HTTP_HOST'], $urlParts['path'], '?', http_build_query($newQueryParts);

也不要忘记考虑协议(protocol)。您的网站将来可能会使用 HTTPS。此外,它们直接在查询中插入变量的方式意味着您可能容易受到 SQL 注入(inject)攻击。始终使用准备好的/参数化的查询来避免此问题。

关于PHP 分页与变量丑陋的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24461385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com