There is nothing unusual in this regard about PHP. Quanhoc, your question is puzzling -- there is nothing to "fix," as it is how the Web works.
The action of a POST form may be a URL that contains encoded arguments.
When it receives such a request, PHP processes POST, GET, and other inputs separately, and makes them available separately as the POST[], GET[], and other superarrays.
You may do anything you wish with the transmitted information. If you want to ignore the GET information, ignore it. If you want to process it, process it.
If PHP is configured with register_globals enabled (which is NOT the default in current issues, for security reasons), the various externally passed variables are copied into regular global variables. If there is a collision, the default behavior is that POST variables override identical GET variables. See the section of the manual that describes the php.ini file for more information.