ma fai una stampa degli array $_GET, $_POST e vedi cosa ti torna..... empty() ragiona in un modo, isset() in un altro. Vedi sul manuale le differenze che sono bene descritte.

tu prova a fare ad inizio pagina:

codice:
<?php
echo "<pre>";
print_r($_GET);
print_r($_POST);
exit;
e vedi se quello che ti stampa e' congruente con le tue attese... fai un po' di debug invece di supposizioni. Costo poco e rende molto di piu'....