PHP 位置标头 - 变量

Posted

技术标签:

【中文标题】PHP 位置标头 - 变量【英文标题】:Php Location Header - Variable 【发布时间】:2020-12-20 04:59:19 【问题描述】:

我需要一些关于使用变量的标题位置的帮助。 我失去了我的变量。

如何保留我的 $var?

    $var = $_GET['valueToSearch']
    (I get the correct value here)

if(isset($_POST['shipping']))
header("Location: shipping.php?valueToSearch=".$var);
exit;

这需要我运送,但我失去了 $var 值。

if(isset($_POST['shipping']))
$var = 'C2234';
header("Location: shipping.php?valueToSearch=".$var);
exit;

这可以正常工作。

如何保留 $var 或任何其他建议?

我也试过了:

window.location = "shipping.php?valueToSearch=" + $var;

谢谢

- More detail:

<?php
$var = $_GET['valueToSearch']; 
$query = "SELECT increment_id, status, created_at, method, shipping_description, company, name, telephone, email, suburb, state, country, data_transf_ordervalue_incl, DATE_FORMAT(created_at, '%b %y')AS date FROM tblorder WHERE increment_id = '$var' order by created_at DESC";
    require_once('/../../private/dbcon_order.php');
    $result = mysqli_query($connect, $query) or die ('Error');
    $row_cnt = mysqli_num_rows($result);

if(isset($_POST['shipping']))

header("Location: shipping.php?valueToSearch=".$var);
exit;


【问题讨论】:

这无法通过您展示的几行代码重现。 首先,以这种方式传递变量并不是一个好习惯。尝试在这里找出最佳实践 [en] phptherightway.com [ru] phptherightway.ru 其次,您的示例中的 $var 值是多少?真的是string吗? CBroe 是对的 - 你应该提供更多的代码行或至少提供数据。 谢谢,@CBroe。我是php新手,想学习。是的,$var 是一个字符串。我将粘贴更多代码。我从上一页得到 $var - 这就是我使用 $_GET 的原因。 【参考方案1】:

我不是 100% 确定你在问什么,但我的回答是基于“当用户制作 $_POST['shipping'] 时,我如何获得 $_POST['shipping'] 值 页面重定向后"

$shipping = "";
// Assuming that "shipping" is a string type. 
if (isset($_POST["shipping"])) 
    $shipping = filter_input(INPUT_POST, "shipping", FILTER_DEFAULT);
 elseif ($_GET["shipping"])) 
    $shipping = filter_input(INPUT_GET, "shipping", FILTER_DEFAULT);



// Debug
echo "Your shipping value is : $shipping";

header("Location: shipping.php?valueToSearch=$var&shipping=$shipping");

因此,在 $_POST["shipping"] 重定向之后,您可以使用 $_GET['shipping'] 访问您的保留值。

尽管有页面重定向,但存储变量的另一种方法是使用 $_SESSION。为此,您可以这样做。

// To set a session value
$_POST["shipping"] = $_SESSION["shipping"];
// To get a session value
$shipping = $_SESSION["shipping"];
// To remove a session value
unset($_SESSION["shipping"]);

另一种在页面重定向的情况下存储变量的方法是使用用户浏览器 cookie,但 cookie 通常仅用于身份验证目的,如果您有兴趣,可以在此处查找。 https://www.php.net/manual/en/features.cookies.php

【讨论】:

谢谢@Deviance。我有一个摘要页面,我通过链接 。在我的详细信息页面上,我显示了一个订单的详细信息。从这里我想为记录添加新的运输细节。如果类型是提交运输,那么想要重定向到另一个页面,保留 $var。我不知道如何保持 $var 的价值。【参考方案2】:

感谢您的所有帮助。

我找到了这篇文章: $_GET or $_SESSION for passing variable

我使用了一个隐藏字段(增量),然后使用 $_SESSION 在页面之间传递它:

设定值:

$_SESSION['var'] = $_POST['increment'];

在第二页:获取值:

$valueToSearch = $_SESSION['var'];

【讨论】:

以上是关于PHP 位置标头 - 变量的主要内容,如果未能解决你的问题,请参考以下文章

PHP 标头位置在 HTML 中间工作

PHP 标头位置即使在输出缓冲区内也被发送?

在 PHP 中如何使用两个标头位置

标头位置在 PHP 中不起作用 [重复]

PHP AJAX 12017 调用标头(位置:)时出错 [重复]

父框架的 PHP 标头位置更改