Il return serve in una funzione di solito con un valore.
Il codice che hai postato non puo' funzionare anche se scritto in pseudo codice in quanto non devono esserci "scritte" (echo ad esempio) prima del comando header.
Per me c'è una terza via; cioè come il tuo primo esempio ma che funziona come il secondo. Lo scopo è di poter aggiungere delle condizioni senza dover modificare il codice già scritto e "fermarsi" al primo errore riscontrato.
Di più, ti consiglio di fattorizzare quanto possibile il codice. Nel tuo esempio se tu dovessi cambiare il re-indirizzamento dello header dovresti fare tante modifiche quante condizioni.
Codice PHP:
$errorMessage = '';
if [$nomeutente != corretto] {
$errorMessage = "utente errato";
}
if ($errorMessage == "") {
if [$password != corretta] {
$errorMessage = "password errata";
}
}
if ($errorMessage == "") {
if [$email != corretta] {
$errorMessage = "email errata";
}
}
if ($errorMessage != "") {
header("Refresh -> homepage + $errorMessage ");
}