使用header()重定向时字符串中的变量消失

时间:2015-01-17 18:04:12

标签: php string variables smarty

我有一个SMARTY表单,并希望将表单页面中的变量(从url / referrer设置)传递给感谢页面。所以我做了什么:

  1. 我使用以下格式打开页面:example.com/index.php?variable=blabla
  2. 我得到变量并形成了谢谢页面网址 $urlconv = 'example.com/thankyou.php?variable=' . $_GET["variable"];
  3. 填写表单并点击提交后,表单会重定向到感谢页面:header('Location: ' . $urlconv);
  4. 我甚至在第一页上回显$urlconv,以确保我已经与变量一起正确构建了url。并且它正确显示。

    不幸的是,重定向由于某种原因省略了变量。由于某种原因它只会example.com/thankyou.php?variable= ...

    也许当我调用重定向时,变量消失了,所以我的问题是我可以以某种方式对$urlconv中的变量进行硬编码吗?因为如果回显显示正确,然后直接省略它就意味着它只保存了变量的快捷方式,而不是字符串中的实际值,对吗?

    我有非常基本的编程技巧。

    谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用urlencode功能。除此之外,如果它在您的浏览器中,请省略example.com并尝试使用相对链接。 所以

$urlconv = '/thankyou.php?variable='.urlencode($_GET["variable"]);

我现在已经尝试过了,它确实有效。

    $urlconv = '/start.php?variable='.$_GET["variable"];
    header('Location: '.$urlconv);

第二个解决方案:尝试使用javascript重定向。在分配$ urlconv时也使用双引号,如$urlconv = "/thankyou.php?variable=".urlencode($_GET["variable"]);

<?php
    echo "<script>location.href='".$urlconv."';</script>";
?>