使用表单 (method=GET) 传递在其他地方定义的参数


Using a form (method=GET) to pass parameters defined elsewhere

这是一个如此简单的问题,恐怕我错过了一些基本的东西,所以请随意羞辱我,但我被难住了。

我的目标:制作一个"继续"按钮,重新加载同一页面,但递增?Page= 对 GET 可见的参数。

我目前的方法:定义应该加载的新URL(这个位有效(

$_SESSION['NextPage'] = $_SESSION['Page']+1; 
$_SESSION['NewURL'] = $_SESSION['CurrentFile'] . '?Page=' . $_SESSION['NextPage'];
// N.B: $_SESSION['CurrentFile'] just specifies the URL of the current page.
// Note also that there should ALWAYS be a ?Page= parameter in the URL, even if it evaluates to NaN or something weird.

然后,稍后将调用一个函数来运行此代码并创建提交按钮。 正如预期的那样,按钮在那里,但它没有按预期工作:下面的代码和详细信息。

echo "<tr><td><form action='" . $_SESSION['NewURL'] . "' method='GET'> <input type='submit' value='Continue'></form> </td></tr>";

问题:表单提交时,不会在 Chrome 或 Safari 中将任何?Page=参数附加到网址。 这是因为此表单中未指定 Page 参数吗? 如果是这样,一定有办法解决这个问题,对吧? $_SESSION['NextPage']是一个会话变量,用于大声哭泣! 更不用说当我在函数内回显$_SESSION['NewURL']时,信息可以在那里访问,?Page=2和所有。它只是没有推送到 URL。不幸的是,该页面设置为根据$_GET['Page']的值显示不同的内容,现在没有什么可以控制该过程。

如果我刚刚犯了一个语法错误或其他什么,我会感到尴尬,但松了一口气。我只是找不到它,也不知道还能去哪里。谢谢!

如果你想

通过表单(GETPOST(传递变量,那么只需使用隐藏形式input

<input type="hidden" name="page" value="<?php echo $_SESSION['NextPage']; ?>">

您的表单变为:

echo "<tr><td>
<form action='" . $_SESSION['NewURL'] . "' method='GET'>
  <input type='hidden' name='page' value='" . $_SESSION['NextPage'] . "'>
  <input type='submit' value='Continue'>
</form>
</td></tr>";