【问题标题】:How to pass multiple parameter via PHP header?如何通过 PHP 标头传递多个参数?
【发布时间】:2020-06-09 17:45:33
【问题描述】:

我可以使用 header 传递多个参数还是只传递一个参数?

我正在尝试实现它,但它不起作用,它无法导航:

    $selected_company = $_POST['company_name'];
    $company_type = $_POST['company_type'];
    $url_param = "comp_id=$selected_company&comp_type=$company_type";
    header("location: ./create_user.php?$url_param");

我使用的代码有什么问题? 如果我只想传递想要的参数,我可以这样做并且它可以工作:

   header("location: ./create_user.php?$selected_company");

附:很奇怪,我找不到一个可行的解决方案,我认为这是一个非常普遍的问题。

【问题讨论】:

  • 看起来应该可以了。这会以什么方式失败?
  • Location 标头只是指定了一个 URL。 URL 可以是包含任意数量的查询字符串参数的任何有效 URL。如果它失败了,那不是因为对 Location 标头的任何限制
  • 您是否调试并检查了最终 URL 的样子?例如,变量可能需要 url 编码。无论如何,您都应该这样做以避免潜在的问题
  • 但不清楚为什么您需要在那里提交多个值...如果您提交的 ID 是选项中的值,那么这应该允许您识别其余的关联值(即类型和名称)通过查找 - 我假设在您的数据库中。您不需要提交所有值,这就是拥有唯一 ID 的全部目的,并且是下拉列表的一种非常标准的用法
  • @ttt 为什么?您的创建用户脚本应该能够根据公司 ID 在数据库中查找公司类型。无论如何,它不应该依赖用户输入来建议该值,它应该是固定的并且不可影响 - 否则恶意用户可能会使用此脚本在此执行期间设置不正确的值,因此它与中的内容不匹配数据库。我看不出您需要或想要在此脚本中传递公司类型的任何理由,据我所知,它违反了所有标准做法。如果您有真正的理由,那会很有趣。

标签: php http-headers


【解决方案1】:

试试这个,它对我有用:

<?php

$selected_company = $_POST['company_name'];
$company_type = $_POST['company_type'];
$url_param = "comp_id=$selected_company&comp_type=$company_type";
header("location: ./create_user.php?".$url_param);
?>

同时检查来自POST参数的值;

【讨论】:

  • 我认为您已经错过了讨论的焦点有所改变的事实 - 请阅读 cmets。这从来都不是真正的问题。授予 OP 应该更新了他们的问题,但你也应该在回答之前阅读发生了什么:-)
猜你喜欢
  • 2013-08-19
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
  • 2020-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多