Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 表单发送GET而不是POST_Php_Html_Forms_Post_Apache2 - Fatal编程技术网

Php 表单发送GET而不是POST

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

我已经搜索了所有标题相似的问题,还没有找到解决方案

我有一个在apache2上运行的网站。我需要通过表格提交敏感信息,我需要使用POST方法。它不发送POST,而是发送GET请求

HTML:

<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]