我搜索了所有类似标题的问题,对我来说还没有解决方案。
我有一个运行在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
。
任何帮助,将不胜感激。
解决这个问题的一种方法是通过以下方式强化您的意图:
<button type="submit" formmethod="post" formaction="add_user.php">Submit</button>
如果像我这样你从Routed 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>
再检查一下......是的,你忘记了一个尾随的斜线......所以/user/store
只会收到,而/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]