将 $_GET 变量传递到下一页
Posted
技术标签:
【中文标题】将 $_GET 变量传递到下一页【英文标题】:Pass $_GET variable to the next page 【发布时间】:2014-02-13 18:36:48 【问题描述】:现在我正在尝试编写代码读取其他代码并使其工作,因为我拥有的一些项目是由其他开发人员制作的,我真的必须学习阅读其他代码,我已经完成了这项工作,但问题是当我尝试将此分页代码合并到 $_GET 变量时,会发生错误,当它加载第一页时,一切都很顺利,但是当我单击其他页面时,$_GET 变量会消失。我已经在网站上找到了一个代码,但我真的不知道如何将它与其他代码合并。
这是“MIGHT”解决问题的代码solving pagination $_GET
printf('<a href="%s?%s">Next</a>',$targetpage,http_build_query(array('page' => 2) + $_GET));
这里是生成链接 1 2 3 4 的代码部分。 .等等
$range = 3;
// if not on page 1, don't show back links
if ($currentpage > 1)
// show << link to go back to page 1
echo " <a href='$_SERVER['php_SELF']?currentpage=1?srId=$srdd'><<</a> ";
// get previous page num
$prevpage = $currentpage - 1;
// show < link to go back to 1 page
echo " <a href='$_SERVER['PHP_SELF']?currentpage=$prevpage?srId=$srdd'><</a> ";
// end if
// loop to show links to range of pages around current page
for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++)
// if it's a valid page number...
if (($x > 0) && ($x <= $totalpages))
// if we're on current page...
if ($x == $currentpage)
// 'highlight' it but don't make a link
echo " [<b>$x</b>] ";
// if not current page...
else
// make it a link
echo " <a href='$_SERVER['PHP_SELF']?currentpage=$x?srId=$srdd'>$x</a> ";
// end else
// end if
// end for
// if not on last page, show forward and last page links
if ($currentpage != $totalpages)
// get next page
$nextpage = $currentpage + 1;
// echo forward link for next page
echo " <a href='$_SERVER['PHP_SELF']?currentpage=$nextpage?srId=$srdd'>></a> ";
// echo forward link for lastpage
//echo " <a href='$_SERVER['PHP_SELF']?currentpage=$totalpages?srId=$srdd'>>></a> ";
printf("<a href='$_SERVER['PHP_SELF']?currentpage=$totalpages?srId=$srdd'>>></a>");
// end if
/****** end build pagination links ******/
?>
【问题讨论】:
看看会话。 你的意思是会话变量?因为当您单击下一个链接时使用 $_GET 变量传递变量,所以 $_GET 变量变为空,因此 $_SESSION 变量我已经研究了它的性质并实际上已经对其进行了编码,任何其他建议都非常感谢。 【参考方案1】:我已经弄清楚了,我在网上看到了很多关于这个问题的信息,还有一些在论坛上的解决方法
<?php
session_start();
// store session data
if (isset($_GET["srId"]))
$_SESSION['variable']=$_GET["srId"];
$srdd = $_SESSION['variable'];
else
$srdd = $_SESSION['variable'];
$tableName = $srdd."r";
?>
感谢您的回复。
【讨论】:
【参考方案2】:您将需要使用会话变量或 cookie 将它们从一个页面传递到另一个页面。
$_GET 全局数组将是每个新页面的新数组,假设您正在发送 GET 请求并且可以在 URL 中看到它。
一般来说,网络是无状态的,这意味着它不会记住您从一个页面到另一个页面所做的事情,除非您使用 cookie、会话或数据库进行持久化。
设计你的链接
Page 1 | 2 | 3 | 4
在链接中包含信息,以便他们为下一页做好准备
Page 1 = http://url?page=1&page_limit=25
Page 2 = http://url?page=2&page_limit=25
...
Etc
如果分页链接采用这种格式,这些变量将在 $_GET 数组中。
【讨论】:
我认为他主要是希望 URL 包含下一页上的 GET 值【参考方案3】:尝试替换
echo " <a href='$_SERVER['PHP_SELF']?currentpage=1?srId=$srdd'><<</a> ";
与
echo " <a href='$_SERVER['PHP_SELF']?currentpage=1&srId=$srdd'><<</a> ";
在 url 中的初始 '?' 之后,应使用 '&' 将以下 *'$_GET[]'* 项与前面的项分开.请注意,您的 'srId=$srdd' 前面有一个 '?'。
例子:
myurl.com?id=1234&page=help
这样做可以帮助您避免将信息存储在 $_SESSION 数组中,并保证 URL 的安全。
【讨论】:
感谢@dismer,我还想出了另一种使用isset解决它的方法。 提醒一下,这种方法会使数据超出内存。以上是关于将 $_GET 变量传递到下一页的主要内容,如果未能解决你的问题,请参考以下文章