如何在header()重定向后使用变量?

时间:2018-05-23 13:28:48

标签: php mysql

我花了很多年的时间试图在导游之后阅读指南后想出来,我无法得到它。我有3个文件 - user.php,map.php和newaddress.php。我只把我理解的内容包含在这个问题的重要位置。很高兴在需要时提供更多信息。

user.php将“mapnumber”传递给map.php。

user.php的

<form action="map.php" method="post">
   <input type="hidden" name="mapnumber" value="'. $row["mapnumber"].'"/>
   <input type="hidden" name="process" value="process"/>
   <button class="btn btn-primary" type="submit" name="getmap">Process</button>
</form>

map.php接收“mapnumber”并从数据库中生成匹配“mapnumber”的地址列表。从map.php,用户可以添加带有“mapnumber”值的新地址,并在newaddress.php中处理。

map.php

$mapnumber = $mysqli->escape_string($_POST['mapnumber']);
<form action="newaddress.php" method="post">
<input class="" id="mapnumber" name="mapnumber" value="<?php echo $mapnumber ?>">
<button class="btn btn-primary" id="addaddress" type="submit">Add Address</button>
</form>

newaddress.php使用“mapnumber”值将地址添加到数据库,然后重定向回map.php,它应该根据“mapnumber”生成地址列表但map.php不会选择“mapnumber” “来自newaddress.php,因此不会生成地址列表。

newaddress.php

$mapnumber = $mysqli->escape_string($_POST['mapnumber']);
header("Location: map.php");
exit;

请帮忙

3 个答案:

答案 0 :(得分:0)

您可以像这样设置get变量:

$mapnumber = $mysqli->escape_string($_POST['mapnumber']); header("Location: map.php?nr=". $mapnumber); exit;

比在map.php中你得到它: $mapnumber = $mysqli->escape_string($_GET['nr']);

答案 1 :(得分:0)

您可以使用Cookie在远程浏览器中存储值。 但您遇到的真正问题是位置重定向就是这样。它告诉浏览器加载另一个URL。 您可以将get请求添加到该位置重定向URL,如下所示:

header("Location: map.php?mapnumber=".urlencode($mapnumber));

但请记住,默认的位置重定向将是永久性的(HTTP状态代码301),如果重定向的URL /文档可能已更改,则由浏览器重新检查。

http://php.net/manual/en/function.header.php#78470

所以你可能想考虑使用307重定向:

header("Location: map.php?mapnumber=".urlencode($mapnumber), TRUE,307);

无论如何:将变量从一个页面传递到另一个页面通常不是一个好习惯。尽量避免它并尝试深入研究会议。

http://php.net/manual/en/intro.session.php

答案 2 :(得分:0)

我建议你在map.php中使用get方法 然后它会收到像map.php?mapnumber=somenum

这样的地图编号

user.php的

<form action="map.php" method="get">
   <input type="hidden" name="mapnumber" value="'. $row["mapnumber"].'"/>
   <input type="hidden" name="process" value="process"/>
   <button class="btn btn-primary" type="submit" name="getmap">Process</button>
</form>

map.php

$mapnumber = $mysqli->escape_string($_GET['mapnumber']);
<form action="newaddress.php" method="post">
<input class="" id="mapnumber" name="mapnumber" value="<?php echo $mapnumber ?>">
<button class="btn btn-primary" id="addaddress" type="submit">Add Address</button>
</form>

newaddress.php

$mapnumber = $mysqli->escape_string($_POST['mapnumber']);
header("Location: map.php?mapnumber=$_POST['mapnumber']");
exit;