Does PHP automatically do urldecode() on $_POST?
According to http://php.net/manual/en/function.urldecode.php , PHP does urldecode() on $_GET and on $_REQUEST (which contains $_POST ). But is directly calling $_POST already decoded? Yes, all the parameters you access via $_GET and $_POST are decoded. The reason the urldecode() documentation doesn't mention $_POST is because the POST data might not be URL-encoded in the first place. It depends on whether the POST data is submitted in application/x-www-form-urlencoded format or multipart/form-data format. But all this is transparent to the application. The documentation of $_GET does mention