使用PHP将表单字段作为URL参数传递

时间:2013-08-06 13:11:24

标签: php forms post

我有一个表单字段:

<input type="text" value="" name="Email" id="Email">

我的表单操作确认网址是:

http://.../index.php?Email=<?php echo $_POST['Email']; ?>

但是在提交后,Email参数未通过。这是可以在PHP中完成的,还是仅在初始页面加载时读取字段?

由于

4 个答案:

答案 0 :(得分:4)

您无需定义GET请求的结构;这就是形式的作用。

例如:

<form action="workerbee.php" method="GET">
    <input type="text" name="honey_type" value="sweet" />
</form>

...提交后,会自动将字段honey_type - 附加到您的网址。它最终会像这样:

http://example.com/workerbee.php?honey_type=sweet

然后,您可以通过$_GET['honey_type']中的workerbee.php访问该值。要使用现有提交的值预填充表单 - 假设workerbee.php包含表单 - 只需添加条件value参数:

<?php

$honey_type = !empty($_GET['honey_type']) ? $_GET['honey_type'] : null;

?>

<input type="text" name="honey_type" value="'<?php echo htmlspecialchars($honey_type); ?>'" />

答案 1 :(得分:4)

您的问题是您正在混合$ _GET和$ _POST。

在此处查看您的代码http://.../index.php?Email=<?php echo $_POST['Email']; ?>,当您发布到该代码时,将不再是$ _POST ['电子邮件'],而是$ _GET ['电子邮件']。因此,第一篇文章可能会有效(如果您使用<form method="post" action="...">),但第二次提交将失败,因为$_POST['Email']已不复存在。

所以我建议你不要在动作中使用参数。相反,将它们放在隐藏字段中或仅切换到$_GET个参数。

选项1,使用隐藏字段

将第二页上的表单更改为:

<form action="http://.../index.php" method="POST">
    <input type="hidden" name="Email" id="Email" value="<?php echo $_POST['Email'];?>" />
    ...
</form>

选项2,仅使用$ _GET

将首页上的表单更改为<form ... method="GET">

然后更改第二页上的表单以使用$_GET['Email']和方法GET

<form action="http://.../index.php??Email=<?php echo $_GET['Email'];?>" method="GET">
    ...
</form>

选项3,使用$ _REQUEST而不是$ _POST

只需使用http://.../index.php?Email=<?php echo $_REQUEST['Email']; ?>作为您的操作网址,因为$ _REQUEST是$ _GET和$ _POST的合并。请注意,这是$ _GET,$ _POST和$ _COOKIE的合并。

答案 2 :(得分:3)

这取决于你的FORM方法

你的表格应该是

<form method='post' action='http://.../index.php'>
<input type="text" value="" name="Email" id="Email">
<input type='submit' value='Post data'>
</form>

要访问index.php中的电子邮件,您可以编写如下代码

<?php
 $emailValue = $_POST["Email"];
//Use variable for further processing

?>

如果您的表单如下(请检查该方法是否

<form method='get' action='http://.../index.php'>
<input type="text" value="" name="Email" id="Email">
<input type='submit' value='Post data'>
</form>

要访问index.php中的电子邮件,您可以编写如下代码

<?php
 $emailValue = $_GET["Email"];
//Use variable for further processing

?>

答案 3 :(得分:0)

如果您尝试使用当前表单中的数据,则表单标记应如下所示:

<form action="http://.../index.php" method="GET">

如果您尝试传递服务器已有的数据(例如来自之前的表单),那么您应该使用隐藏字段:

<input name="email" type="hidden" value="<?php echo $_POST['Email']; ?>">