2

我有一个表单域:

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

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

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

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

谢谢

4

4 回答 4

5

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

在这里查看您的代码http://.../index.php?Email=<?php echo $_POST['Email']; ?>,当您发布到该代码时,将不再有 $_POST['Email'],而是 $_GET['Email']。所以第一个帖子可能会工作(如果你正在使用<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']; ?>用作您的操作 url,因为 $_REQUEST 是 $_GET 和 $_POST 的合并。请注意,这是 $_GET、$_POST 和 $_COOKIE 的合并。

于 2013-08-06T13:34:37.617 回答
4

您不需要定义GET请求的结构;这就是表格的作用。

例如:

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

...提交时,会自动将字段 - honey_type- 附加到您的 URL。它最终会是这样的:

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

然后,您可以通过$_GET['honey_type']in访问该值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); ?>'" />
于 2013-08-06T13:18:47.180 回答
4

这取决于您的 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

?>

如果您的表格如下(请检查该方法是 get

<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

?>
于 2013-08-06T13:20:10.410 回答
0

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

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

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

<input name="email" type="hidden" value="<?php echo $_POST['Email']; ?>">
于 2013-08-06T13:15:22.283 回答