更改URL时请记住POST值

时间:2010-09-25 07:58:53

标签: php

更改网址时如何记住POST值

5 个答案:

答案 0 :(得分:3)

$_POST["a1"]的值传递到b.php?...网址中的另一个参数,以便以后可以在b.php的$_GET查找中访问它。

也许这是一个剪切和粘贴错误,但是这个:

href="b.php?id=".$row["url"]."" target="_self"

没有任何意义,你似乎试图在双引号字符串中使用双引号。此外,您忘记对输出进行HTML编码,这会导致XSS安全漏洞,您还需要对您放入URL参数的内容进行URL编码。

<?php
    $url= 'b.php?id='.urlencode($row['url']).'&a1='.urlencode($_POST['a1']);
?>
<a href="<?php echo htmlspecialchars($url); ?>">
    <?php echo htmlspecialchars($row['title']); ?>
</a>

然后

<li>
    <?php echo htmlspecialchars($row['name']); ?>
    (<?php echo htmlspecialchars($_GET['id']); ?>,
    <?php echo htmlspecialchars($_GET['a1']); ?>)
</li>

(您可以使用较短的名称定义帮助函数,例如h(),以避免必须输出echo htmlspecialchars()这么多。)

答案 1 :(得分:1)

如果你想传递数据,你可以把它作为查询字符串放在链接中,然后用GET再次获取它或者把它放在SESSION或COOKIE中

答案 2 :(得分:1)

您可以使用隐藏的输入来传递a1

的值
<input type="hidden" name="a1" value="$_POST['a1']" />

这会将a1传递给下一页

答案 3 :(得分:0)

你想要实现的目标似乎有些激动,我认为当你对如何解决你想要做的事情有更多的想法时,重新考虑你的解决方案是明智的。

我理解你的流程的方式是:(伪代码)

a.php posts form with field text(id=a1) to b.php
b.php processes the form and creates a link to b.php?id=<url>
when link is clicked b.php is run again, but without form this time only get.

所以b.php做了两件事:

  1. 处理表单并生成包含链接的表
  2. 处理表格中的链接
  3. 在我看来,你把两者混合在一起并忘记它们是不同的请求。

    有几种方法可以达到你想要的效果。这是一对夫妇的名单:

    • 您可以按照上面的说明进行操作:将您想要的表单中的变量添加到您的网址并从_GET中检索它们而不是_POST
    • 启用页面上的会话并将_POST中的变量存储在会话中,并在下次请求时将其从那里检索
    • 在创建表格时使用b.php创建一个新表单,然后重新提交表单。

    希望这有帮助。

答案 4 :(得分:-1)

只需将此值添加到链接的查询字符串即可 并将POST方法更改为GET