Die laatste else-statement kan je weg halen.
Als de invoer overal geldig is dan toon je die tekst. Je kan vanzelfsprekend niet tegelijkertijd dan naar index.php doorsturen.
Sowieso houd ik wel van duidelijke communicatie richting de gebruiker. Dus vertel dan dat het inloggen gelukt is. Als de validatie ergens fout gaat, dan is het beter om alle fouten op te slaan in een array. Dan kan je bij een hoop foutieve invoerwaardes (passworden vergeten, username bestaat al etc..) na het versturen van het formulier aan de gebruiker vertellen wat er fout is ingevuld.
In dat geval moet je wel elke validatie apart doorlopen, dus enkel een if-statement per validatie:
<?php
$errors = []; // error array aanmaken.
if (empty($uname)) {
$errors[] = "De username is niet ingevuld.";
}
if (empty($pass)) {
$errors[] = "Het password is niet ingevuld.";
}
// Kijken of de validatie met succes doorlopen is
if(count($errors)==0) {
// alles is goed. Verstuur de gegevens, en zeg tegen de gebruiker dat alles klopt.
} else {
// doorloop $errors met foreach(), en zeg tegen de gebruiker welke velden er niet ingevuld zijn.
}
?>
Uiteindelijk tel je zodra je het formulier verstuurt met count($errors) of je 0 errors hebt. In dat geval is er aan aan alle validatieregels voldaan, en dan plaats je de gegevens in de database, en vertel je de gebruiker dat het gelukt is. Als het aantal errors hoger is dan 0, dan is er ergens iets niet goed ingevuld. In dat geval kan je met foreach() een mooi loopje laten tonen met alle errors.
Want waarom zou je de errors steeds via een location-header naar een aparte pagina doorsturen?
Ik zou zeggen, speel er eens mee! :-)
Leuke extra uitbreiding voor de finishing touch....
Je kan zelfs bijvoorbeeld ook als key van de array de naam van het formulierelement meegeven. Met [php]array_key_exists[/php] kan je bij elk formulier element bekijken of de key bestaat. In dat geval kan je bijvoorbeeld met CSS het formulier rood stylen, zodat de gebruiker direct ziet dat er iets mis is.