Friday, April 6, 2012

Why strings in $_POST can not contain a dot ".”?


Basicaly the title say's it all. i had an hidden input on my page where i wanted to set the name to "some.major.uber.setting"



for example: <input type="hidden" name="some.major.uber.setting" value="dummy value" />



and when i looked at the $_POST data it contained "some_major_uber_setting". Can anybody explain this behaviour


Source: Tips4all

3 comments:

  1. That is probably a relict from register_global = On times. $_GET/$_POST variables were turned into standard variables ($_GET['foo'] became $foo). Variable names can't contain dots so they were internally converted.

    ReplyDelete
  2. This has been there since the original commit to CVS, more than 10 years ago.

    It has a comment:


    /* ensure that we don't have spaces or dots in the variable name (not binary safe) */


    I have no idea why it isn't "binary safe"... You'd have to ask Zeev.

    ReplyDelete
  3. Its documented in php.net as:


    Dots and spaces in variable names are converted to underscores.

    ReplyDelete