$_SERVER['PHP_SELF'] 擦除表单,而不是发布


$_SERVER['PHP_SELF'] wiping form, not posting

我正在尝试将表单发布到URL如下,但是它只是擦除表单,并且在单击提交时不会发布任何内容。

有什么想法吗? 我看不出有什么问题,所以需要另一双眼睛。

<form class="form-inline" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="code" class="input" placeholder="Enter Passcode Here..">
<button type="submit" class="btn">Submit</button>
</form>

如果我12345667890输入代码并单击提交,我希望 URL 显示www.domain.com/index.php?code=1234567890。 这不会发生,它只是擦除表单并加载 www.domain.com/index.php

您的表单method="post" .

POST 数据编码到 HTTP 请求的正文中,而不是 URL 中。表单提交到的服务器端脚本仍然可以访问它。

如果希望数据显示在 URL 中,请使用 method="GET"

(但是请参阅规范以了解您应该使用 POST 或 GET 的原因,并使用这些来决定您应该使用哪个(。

在使用 passcode.php 作为文件名时,示例输入为 12345 ,将输出: http://www.example.com/passcode.php?code=12345如预期的那样。

以下是经过全面测试和工作的代码:

<form class="form-inline" method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="code" class="input" placeholder="Enter Passcode Here..">
<button type="submit" class="btn">Submit</button>
</form>

您必须使用 GET 方法来实现此目的,而不是 POST .

若要回显 URL 的完整字符串,请使用以下命令:

<?php
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo $url;
?>
<form class="form-inline" method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="code" class="input" placeholder="Enter Passcode Here..">
<button type="submit" class="btn">Submit</button>
</form>

在使用12345作为输入时,将输出(回声(:http://www.example.com/passcode.php?code=12345

此时,表单完全按照您编写的方式进行操作。它将表单提交到同一页面。然后,您无需对发布数据执行任何操作。并且脚本只是再次返回相同的 html。