Php 表单发送GET而不是POST
我已经搜索了所有标题相似的问题,还没有找到解决方案 我有一个在apache2上运行的网站。我需要通过表格提交敏感信息,我需要使用POST方法。它不发送POST,而是发送GET请求 HTML:Php 表单发送GET而不是POST,php,html,forms,post,apache2,Php,Html,Forms,Post,Apache2,我已经搜索了所有标题相似的问题,还没有找到解决方案 我有一个在apache2上运行的网站。我需要通过表格提交敏感信息,我需要使用POST方法。它不发送POST,而是发送GET请求 HTML: <form action="/add_user.php" method='POST'> Enter Username: <input type="email" name="email" required="required" /> <br/> Enter pa
<form action="/add_user.php" method='POST'>
Enter Username: <input type="email" name="email" required="required" /> <br/>
Enter password: <input type="password" name="password" required="required" /> <br/>
<input type="submit" value="submit"/>
</form>
输入用户名:
输入密码:
PHP:
我已经在Firefox中打开了网络监视器,并确认该方法为GET。我甚至试着让它放进去而不是贴出来,但它仍然发送GET。另外,$email
和$password
如果我将它们改为$\u get
,而不是$\u POST
,则会获取值
任何帮助都将不胜感激。解决此问题的一种方法是通过明确说明
formmethod=“post”
来强化您的意图,如下所示:
<button type="submit" formmethod="post" formaction="add_user.php">Submit</button>
提交
如果像我一样,您从路由url(如在Laravel中)转到普通PHP,并且想知道为什么文件/user/store/index.PHP
响应它使用以下方式接收GET请求:
<form method="POST" action="/user/store">
<input type="text" id="user_name" name="user_name" />
<button type="submit">Create a new user</button>
</form>
只是一个普通的注释,但是你混合了双引号和单引号。可能会导致不可预知的事情发生。它都是双引号,都是单引号,都不起作用。就在我最后一次尝试时,我试着将它们混合在一起,看看是否有什么变化。你是通过AJAX提交表单的吗?表单提交中有javascript吗?@statosdotcom感谢你提示检查提交,没想到这可能是问题所在。我在谷歌上搜索了POST方法的submit按钮,结果是:submit现在终于可以工作了。我快疯了。非常感谢。为什么表单是这样工作的?显然,从另一个Stackoverflow答案中可以看出,这是因为默认的php服务器(php-S)和Appache的工作方式:如果您请求
/user/store
,它试图获取具有此名称的文件,但这不是一个php文件,而是一个文件夹。但是,您可以通过添加一个尾随斜杠来解决此问题,默认情况下,该斜杠将尝试在文件夹中查找index.php
,因此它工作良好并响应路由器。显然,我们可以调整.htaccess文件,让Appache始终添加一个尾随斜杠,但是1。这可能并不总是想要的2。我不知道如何使用php-S..。@M.I.Wright,我只是添加了一些东西,如果您使用Appache作为服务器,可能会对您有所帮助。我认为php内置服务器不会对这个文件做出反应。谢谢!但不幸的是,这不适用于我——当我遇到这个问题时,我正在使用Python/Flask。我也定义了没有尾随斜杠的路由,因此没有重定向或任何东西,这使得GET-not-POST行为真的让meI感到惊讶,我不知道为什么这会得到所有的向上投票。这是一种力量,而不是解决方案。这相当于编写重要。最好还是解决这个问题。
<form method="POST" action="/user/store">
<input type="text" id="user_name" name="user_name" />
<button type="submit">Create a new user</button>
</form>
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]