I'm a bit confused about this. I'm hoping it's something wildly obvious I've missed! I have a very simple form:
<form class="form-signin" role="form" name="login" method="POST" action="/page"> <input type="password" name="password" /> <input type="submit" value="Sign in" /> </form>
Note: this page lives at /page
and is echoed after the following HTML:
On /page
I have this at the very top of the file:
<?php var_dump($_SERVER['REQUEST_METHOD']);
For some reason, it always shows up as GET
when I submit this form. If I take the action="/page"
part out then it shows up as POST
. What am I missing here?
Note: Even when I load the page, then put at exit after the above var_dump()
call, it still shows GET
.
In the inspector's timeline I see this for the request:
$_SERVER['REQUEST_METHOD'] fetches the request method used to access the page. Request methods are 'GET', 'HEAD', 'POST', 'PUT'.
PHP $_REQUEST is a PHP super global variable which is used to collect data after submitting an HTML form. The example below shows a form with an input field and a submit button. When a user submits the data by clicking on "Submit", the form data is sent to the file specified in the action attribute of the <form> tag.
Thanks to the comments to my question I have found the answer to be in apache configuration. It appears that, because the index.php
file is inside a folder called page
, apache will automatically redirect to the page with a slash on it. This is the default setting as seen in the Apache directorySlash documentation.
As they warn against turning this off, I will just change the url to what I'm posting. Alternatively, of course, I could add a .htaccess
file with proper rewrite rules setup.\
Thanks for everyone's help! As a side note, Safari's inspector left me a little wanting in this case. Chrome turned out to be a far better option for testing.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With