PHP replaces spaces with underlines

后端 未结 4 599
广开言路
广开言路 2020-12-03 05:16

I have the problem, that PHP replaces all spaces with underlines in POST and GET variables.

For example if I have the URL: http://localhost/proxy.php?user name=Max t

4条回答
  •  伪装坚强ぢ
    2020-12-03 05:54

    From the PHP manual:

    Dots in incoming variable names

    Typically, PHP does not alter the names of variables when they are passed into a script. However, it should be noted that the dot (period, full stop) is not a valid character in a PHP variable name. For the reason, look at it:

    
    

    Now, what the parser sees is a variable named $varname, followed by the string concatenation operator, followed by the barestring (i.e. unquoted string which doesn't match any known key or reserved words) 'ext'. Obviously, this doesn't have the intended result.

    For this reason, it is important to note that PHP will automatically replace any dots in incoming variable names with underscores.

    And a comment on the page:

    The full list of field-name characters that PHP converts to _ (underscore) is the following (not just dot):

    chr(32) ( ) (space)
    chr(46) (.) (dot)
    chr(91) ([) (open square bracket)
    chr(128) - chr(159) (various)
    

    PHP irreversibly modifies field names containing these characters in an attempt to maintain compatibility with the deprecated register_globals feature.

提交回复
热议问题