表单提交时丢失$_GET变量


Losing my $_GET variable upon form submission

我正在创建一个小型应用程序,它允许潜在员工列出引用。列出的推荐人收到一封电子邮件,其中包含一个URL,末尾有一个唯一的字符串。

(示例:www.the-address.com?url=503241c65b8fe4_07914393)。然后,该引用将跟随此唯一的URL以员工的名义上传一封信。

但每次提交任何表单时,URL的随机字符串部分都会消失

(示例:www.the-address.com?url=)。

我不明白为什么会发生这种情况,因为我提交的表格是这样的:

<form action="upload_letter.php?url="' . $url . '" id="form_id" method="POST">;

其中$url = $_GET['url']

发生这种情况的一般原因是什么?如果需要,我可以提供更多的代码。

如果你真的有你写的代码,那么你会过早地用第二个"字符关闭action属性。试试这个:

echo '<form action="upload_letter.php?url='.urlencode($url).'" id="form_id" method="POST">';

你拥有它的方式最终会像HTML一样:

<form action="upload_letter.php?url="google.de" id="form_id"...>

在属性值之外有google.de。

<?php
$data = array('url' => $url);
?>
<form action="upload_letter.php?<?php echo http_build_query($data) ?>" id="form_id" method="POST">

或者您可以将URL添加为隐藏的<input>

<form action="upload_letter.php" id="form_id" method="POST">
    <input type="hidden" name="url" value="<?php echo htmlentities($url); ?>">
    .
    .
    .
</form>

然后您可以通过$_POST['url']访问URL。

method="POST"更改为method="GET"

如果你的代码是你在PHP文件上写的:那就错了。HTML行末尾没有";",并且不能在HTML中将字符串与"."连接起来。您必须打开PHP标记并在里面编写PHP代码。例如:

<form action="upload_letter.php?url=<?php echo $url; ?>" id="form_id" method="POST">

但您也可以使用类似Wolfgang的回声应答

$url可能为空或未定义。检查HTML代码,看看它是否已写入表单的操作中。

为什么在周围加单引号

 . $url . 

编辑:另一种说法是:你确定你在<?php ?>标签上吗?