表单发送GET而不是POST

时间:2016-06-19 13:59:28

标签: 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 password: <input type="password" name="password" required="required" /> <br/>
   <input type="submit" value="submit"/>
</form>

PHP:

<?php

$email=$_POST['email']; 
$password=$_POST['password'];
//do stuff
?>

我在Firefox中打开了网络监视器,该方法被确认为GET。我试图让它PUT而不是POST,它仍然发送GET。此外,$email$password如果我将其更改为$_GET而不是$_POST,则会获取值。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:3)

解决这个问题的一种方法是通过这种方式强化你的意图:

<button type="submit" formmethod="post" formaction="add_user.php">Submit</button>

答案 1 :(得分:1)

如果像我这样你从路由网址(如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>

再次检查一下......是的,你忘记了一个尾随斜线...所以/user/store只收到get,而/user/store/会收到你要求的内容。

修改

我检查了Laravel的功能,并在.htaccess(check the original file)中解决了这个特殊问题。

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]