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

时间:2013-06-20 13:19:52

标签: php

我正在尝试将表单发布到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

3 个答案:

答案 0 :(得分:2)

您的表单为method="post"

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

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

(但请参阅the specification了解您应该使用POST或GET的原因并使用它们来决定您应该使用哪个。)

答案 1 :(得分:1)

使用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

要回显网址的完整字符串,请使用以下内容:

<?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作为输入时,将输出(echo):http://www.example.com/passcode.php?code=12345

答案 2 :(得分:0)

此刻,表单正是您所写的内容。 它将表单提交到同一页面。然后,您不对发布数据执行任何操作。并且脚本只是再次返回相同的html。