gpt4 book ai didi

php - 实现第一,上一个,下一个和最后一个导航的方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:07:15 26 4
gpt4 key购买 nike

我是编程新手,对导航有疑问。
如在基于文章或漫画的网站中看到的,可以实现“第一”,“上一个”,“下一个”和“最后”导航的各种方法有哪些? (诚​​然,“第一”链接不会混淆,因为它可以保持静态,但是其他链接呢?)
例如,在第50页上,链接将适当地指向第49和第51页(如果存在,则链接不起作用,但如果该页面存在,它将自动激活)。
在大多数此类示例中,我看到以“.php?id = 50”之类的结尾的url,但不确定如何通过数据库实现它。
任何帮助将不胜感激,谢谢。

最佳答案

URL末尾的位称为GET变量。例如,当用户转到末尾有一页的页面时,例如:

example.org/comics/myawesomecomic.php?page=50

服务器转到该页面,并且(通常)服务器端脚本在将页面输出给用户之前会做一些工作。在PHP中,GET变量是一个全局变量(以及其他变量,其中大的是POST和COOKIE),php脚本可以通过获取从服务器传递到脚本的值来检索php脚本,在本例中为 $_GET['page']

因此,假设您有一个脚本来处理对漫画故事情节“我的真棒漫画”的所有请求,并且该脚本分为60页,则用户进入任何页面所需要做的就是将GET变量更改为页面编号。您的脚本可能会做一些非常简单的事情,例如获取名为 myawesomecomic/的目录的内容并获取名为 50.html的文件,然后将其输出给用户。但是有可能,自从遇到麻烦以来,您需要一些更复杂的方法,所以它去了并从数据库中获取第50页,并更新了所有导航,甚至在左上角添加了时尚的 50 - 60

现在,这是简单的部分,又是您问题的答案。既然您知道GET变量的工作方式以及服务器脚本对它们的作用,那么按照您所描述的那样进行导航所要做的就是:
$current_page = $_GET['page'];
$next_page = $current_page + 1;
$prev_page = $current_page - 1;
$first_page = 1;
$last_page =

最后一部分将取决于您自己。您可以始终拥有相同数量的页面,或者可以在上拉当前页面的同时查询数据库,等等。假设您在获取当前页面时确实查询了数据库的总页面数。然后返回60(为了避免让人头疼的是60是从1开始而不是0的页数),因此返回导航...
$last_page = 60;

现在,您有了第一个,最后一个,上一个和下一个。假设您知道使用HTML的方式,那么剩下的(除了使外观漂亮)就是:
 echo "
<a href='myawesomecomic.php?page=$first_page'>First Page</a>
<a href='myawesomecomic.php?page=$prev_page'>Previous Page</a>
<a href='myawesomecomic.php?page=$next_page'>Next Page</a>
<a href='myawesomecomic.php?page=$last_page'>Last Page</a>
";

并且有您的导航。显然,您会希望将它们排列成适合您的网站的位置,而不是让它们像这样一起运行,使用凉爽的箭头等。但是即使您不做任何花哨的工作,链接也能正常工作。

但!

我刚刚给了您非常好的“我第一次玩PHP”版本。我遗漏的事情(您应该询问更多或做一些认真的研究):
  • 由于GET变量包含在URL中,因此不难发现它们。我可以轻松地将?page=50更改为?page=1=1,并且根据您如何获取内容,我可能只是询问了数据库的所有内容。 绝对不要捕获用户输入(甚至是URL)直接进入变量。如果您知道它是页码,那么您知道它是一个号码。在通过脚本和数据库运行输入之前,请检查输入以确保它是数字。
  • 您需要一个系统来确定用户输入的数字是否超出范围。诸如“对不起,找不到页面”甚至“找不到页面,从头开始”之类的简单内容,然后将其发送回第1页。如果仅输出任何内容,则看起来很糟糕,并且会揭示脚本逻辑中可以被操纵的部分。
  • 当您熟悉GET变量时,建议您放弃它们以使用mod_rewrite(假设您在apache服务器上)。现在就不要跳了,但是当您掌握了窍门后,就可以开始创建诸如example.org/comics/myawesomecomic/page50example.org/comics/myawesomecomic/page/50或类似的URL。真正发生的是该目录中的所有页面都被重定向到同一脚本,然后该脚本检查URL的结尾以找出要从数据库中提取的内容。但是对于最终用户来说,似乎只有一个网页。 (我认为)这看起来更干净,甚至可以覆盖脚本的逻辑。但我要说的是等待它,因为它还会使您面临其他风险,这些风险在您习惯于清理用户输入并处理诸如“找不到页面”之类的标准页面错误之前就很难预料到。

  • 无论如何,弄清楚像在当前日期上增加一个星期并在当前页上添加页码之类的东西,完全是我进入PHP和Web应用程序开发的方式,因此我希望这对您有所帮助且直接。

    关于php - 实现第一,上一个,下一个和最后一个导航的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2403252/

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