25

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:

enter image description here

LeonardChallis
  • 7,759
  • 6
  • 45
  • 76

1 Answers1

20

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.

LeonardChallis
  • 7,759
  • 6
  • 45
  • 76
  • 1
    The answer before by Dist was the correct answer, even if you used a variant of the same solution. – Flosculus Oct 22 '14 at 11:42
  • Actually, it wasn't. It said it had to use /index.php but that's not true. Also, it didn't answer why it was happening, just a workaround. – LeonardChallis Oct 22 '14 at 11:46
  • 1
    It also happens in nginx. It seems to send the request to PHP as a GET unless the trailing slash is supplied. Very strange. – Dirigible Apr 18 '16 at 17:18