Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在header()重定向后使用变量?_Php_Mysql - Fatal编程技术网

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

Php 如何在header()重定向后使用变量?,php,mysql,Php,Mysql,在阅读了一本又一本指南之后,我花了很多时间试图弄明白这一点,但我弄不懂。我有3个文件——user.php、map.php和newaddress.php。我只把我理解为这个问题的重要部分包括在内。如果需要,很乐意提供更多信息 php将“mapnumber”传递给map.php user.php <form action="map.php" method="post"> <input type="hidden" name="mapnumber" value="'. $row[

在阅读了一本又一本指南之后,我花了很多时间试图弄明白这一点,但我弄不懂。我有3个文件——user.php、map.php和newaddress.php。我只把我理解为这个问题的重要部分包括在内。如果需要,很乐意提供更多信息

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>

请帮助

您可以如下设置get变量:

$mapnumber=$mysqli->escape_字符串($_POST['mapnumber']);
标题(“位置:map.php?nr=”.$mapnumber);
出口

而在
map.php
中,您可以通过以下方式获得它:
$mapnumber=$mysqli->escape\u字符串($\u GET['nr']);

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

header("Location: map.php?mapnumber=".urlencode($mapnumber));
但请记住,默认位置重定向将是永久性的(HTTP状态代码301),由浏览器重新检查重定向url/文档是否已更改

<>你可能想考虑使用307重定向:

header("Location: map.php?mapnumber=".urlencode($mapnumber), TRUE,307);
无论如何:将变量从一个页面传递到另一个页面通常不是一个好的实践。试着避免它,试着深入研究会话


我建议您在map.php中使用get方法
然后它将接收映射编号,如
map.php?mapnumber=somenum

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 = $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>
$mapnumber=$mysqli->escape_字符串($\u GET['mapnumber']);

什么是
$mysqli->escape_string()
,您是否在查找错误,我很确定这些错误一定在那里。在重定向过程中,您将地图编号传递给map.php的位置在哪里?如果您不将某个信息传递给该文件,
map.php
如何知道这些信息?PHP中的每个请求都是一个全新的请求。它不知道以前发生了什么。添加
ini\u集('display\u errors',1);ini_集(“日志错误”,1);错误报告(E_全部);mysqli_报告(mysqli_报告错误| mysqli_报告严格)到脚本的顶部。这将强制任何
mysqli_uu
错误生成一个异常,您可以在浏览器上看到,其他错误也将在浏览器上看到。您可以在map.php中使用$REQUEST而不是$POST,并在newaddress.php
标题中更改(“位置:map.php?mapnumber=“.$POST['mapnumber]”)
或yo可以在不使用urlencode()的情况下在该点使用字符串连接当变量包含诸如&?/或任何其他会破坏URL的字符时,将导致问题。我尝试过这样做,但从user.php到map.php的过程被破坏,因为map.php依赖user.php向其传递数据,从newaddress.php到map.phpI尝试使用会话变量。我不确定我是否做错了,但我已经读到头(位置)清除了会话变量。是这样吗?你的工作是什么?你有资料来源吗?位置重定向确实发生在用户浏览器中。这对服务器端存储的会话变量没有影响。您可能忘记了在重定向之前将会话数据写入服务器,并停止执行正在运行的php脚本。如果不终止php脚本,则在位置重定向之后,它可能会继续运行其余代码。尝试添加die();在你重定向之后。