Ik ben een loginpagina aan het maken en ik loop tegen een probleem aan:
De IF ELSE loopt niet goed en ik kan de fout niet terugvinden.
Ik hoop dat iemand mij hier bij kan helpen?
<?php
include('connect.php'); // Voegt het bestand met verbindingsinformatie voor de MySQl-server toe
$username = $_POST['leerlingnummer']; // Post het leerlingnummer
$password = $_POST['wachtwoord']; // Post het wachtwoord
if(isset($_POST['inloggen'])){ // Controlleerd of de login-knop ingedrukt is
if($username == "leerlingnummer"){ // Controlleerd of de gebruikersnaam de standaardwaarde heeft -->
echo 'Je moet een geldig leerlingnummer en een wachtwoord invoeren.'; // --> Als dat zo is geef een foutmelding weer
} else {
if(is_numeric($username)){ // Controlleerd of de gebruikersnaam numeriek is
if($password == "wachtwoord"){ // Controlleerd of het wachtwoord de standaardwaarde heeft -->
echo 'Je moet een wachtwoord invoeren.'; // --> Als dat zo is geef een foutmelding weer
} else {
if(strtoupper($password)){
if(strlen($password) == "6"){
echo 'Invoer OK!.'; // Geeft melding als gebruikersnammer en wachtwoord aan bovenstaande eisen voldoen
} else {
echo 'Je moet een geldig wachtwoord invoeren.';
}
} else {
echo 'Je moet een geldig wachtwoord invoeren.';
}
}
}
}
} else {
echo 'Je moet een geldig leerlingnummer invoeren.'; // Geeft foutmelding weer als gebruikersnaam niet numeriek is.
}
?>
Regel 27 t/m 29 moet 1 tab voor weg (hoort bij de if op regel 7) En wat gaat er fout (oftewel wat verwacht/wil jij dat er gebeurt en wat gebeurt er echt)
Regel 27 t/m 29 moet 1 tab voor weg (hoort bij de if op regel 7) En wat gaat er fout (oftewel wat verwacht/wil jij dat er gebeurt en wat gebeurt er echt)
Dank je voor de verbetering.
Wat er gebeurt:
De pagina geeft altijd "Je moet een geldig wachtwoord invoeren." terug. Ookal wordt er niet aan de eerste voorwaarde voldaan, dat er nameijk op de loginknop geklikt moet zijn.
Wat er zou moeten gebeuren:
Als het leerlingnummer de waarde 'leerlingnummer' heeft moet hij een foutmelding geven, ook al het wachtwoord 'wachtwoord' is. Hetzelfde geld voor wanneer het leerlingnummer niet numeriek is of wanneer het wachtwoord niet in hoofdletters is, en het geen 6 tekens lang is. Als aan alle voorwaarden voldaan is moet er 'Invoer OK!' teruggegeven worden.
Dan vul je in je formulier in het vakje leerlingnummer iets anders in dan het wordt leerlingnummer (Dat is namelijk de vergelijking op regel 8 als je kijkt wat je op regel 4 instelt voor $username)
Dan vul je in je formulier in het vakje leerlingnummer iets anders in dan het wordt leerlingnummer (Dat is namelijk de vergelijking op regel 8 als je kijkt wat je op regel 4 instelt voor $username)
Ik volg je niet helemaal.
Kun je het anders uitleggen?
ik zal de volledige code even plaatsen. Misschien kan dat handig zijn:
<h2>Inloggen</h2>
<form name="inloggen" action="<?php echo $_server[PHP_SELF] ?>" method="post">
<input type="text" id="field" name="leerlingnummer" maxlength="4" value="leerlingnummer" onblur="if(this.value.length == 0) this.value='leerlingnummer';" onclick="if(this.value == 'leerlingnummer') this.value='';" />
<input type="password" id="field" name="wachtwoord" maxlength="6" value="wachtwoord" onblur="if(this.value.length == 0) this.value='wachtwoord';" onclick="if(this.value == 'wachtwoord') this.value='';" /><br>
<input type="submit" id="button" value="Inloggen" name="inloggen">
</form>
<form method="link" action="registreren.html">
<input type="submit" id="button" value="Registreren" name="registreren"><br>
</form>
<?php
include('connect.php'); // Voegt het bestand met verbindingsinformatie voor de MySQl-server toe
$username = $_POST['leerlingnummer']; // Post het leerlingnummer
$password = $_POST['wachtwoord']; // Post het wachtwoord
if(isset($_POST['inloggen'])){ // Controlleerd of de login-knop ingedrukt is
if($username == "leerlingnummer"){ // Controlleerd of de gebruikersnaam de standaardwaarde heeft -->
echo 'Je moet een geldig leerlingnummer en een wachtwoord invoeren.'; // --> Als dat zo is geef een foutmelding weer
} else {
if(is_numeric($username)){ // Controlleerd of de gebruikersnaam numeriek is
if($password == "wachtwoord"){ // Controlleerd of het wachtwoord de standaardwaarde heeft -->
echo 'Je moet een wachtwoord invoeren.'; // --> Als dat zo is geef een foutmelding weer
} else {
if(strtoupper($password)){
if(strlen($password) == "6"){
echo 'Invoer OK!.'; // Geeft melding als gebruikersnammer en wachtwoord aan bovenstaande eisen voldoen
} else {
echo 'Je moet een geldig wachtwoord invoeren.';
}
} else {
echo 'Je moet een geldig wachtwoord invoeren.';
}
}
}
}
} else {
echo 'Je moet een geldig leerlingnummer invoeren.'; // Geeft foutmelding weer als gebruikersnaam niet numeriek is.
}
?>
Controleer de display_errors instelling in je php.ini eens, zorg dat deze op 'on' staat. Je kunt hem vanuit je script wel aanzetten met ini_set(), maar dan zullen syntax errors nog niet weergegeven worden. De instelling wordt dan pas op een te laat moment aangezet.