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

Joh*_*ohn 2 php forms post

我有一个表单域:

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

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

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

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

谢谢

Aro*_*olm 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>
Run Code Online (Sandbox Code Playgroud)

选项 2,仅使用 $_GET

将第一页上的表格更改为 <form ... method="GET">

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

<form action="http://.../index.php??Email=<?php echo $_GET['Email'];?>" method="GET">
    ...
</form>
Run Code Online (Sandbox Code Playgroud)

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

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