Согласно документации , пустая строка должна рассматриваться ... ну, пустая.Я бы попробовал использовать var_dump () для $ _POST и посмотреть, что получится, может быть, он не пуст.на данный момент и, возможно, просто выпустите заявление на печать, чтобы убедиться, что оно действительно оценивается как истинное.Это может быть проблема перенаправления заголовка, а не проблема с empty ().
if(empty($_POST['name'])){
// header("location:users_adduser.php?fail=1"); //no name specified
print("POST['name'] IS empty!");
}