Hi,

Ik probeer een loginsysteem te maken maar de bedoeling is dat alle errors die komen zichtbaar zijn

[qoute]
<?php
if (!isset($_POST["username"])) {
echo "Vul wel een gebruikersnaam in";
die();
}
if (!isset($_POST["password"])) {
echo "Vul wel een wachtwoord in";
die();
}
?>
[/qoute]

Moet dan de username empty error te laten zien & password wanneer beide velden leeg zijn
[CODE]
<?php
$errors = array();
if (!isset($_POST["username"])) {
$errors[] = "Vul wel een gebruikersnaam in";
}
if (!isset($_POST["password"])) {
$errors[] = "Vul wel een wachtwoord in";
}
if (!empty($errors)) {
foreach($errors as $error) {
echo $error."<br>";
}
die();
}
else {
// Rest van je code
}
?>
Wanneer ik gebruik maak van dit form werkt het niet ;s

[qoute]
<form method="POST" action="./login.php">
<input type="text" placeholder="Gebruikersnaam" name="username" /><br />
<input type="password" placeholder="Wachtwoord" name="password" /><br />
<input type="submit" value="Submit" />
</form>
[/qoute]
Gebruik a.u.b. de code-tag voor scripts.

Controleer ook eerst of je het formulier hebt verstuurd:

<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
	// het formulier is verstuurd
}
?>


Verder controleer ik of iets niet ingevuld is met:
<?php
if(trim($_POST["password"])=='') {
	// veld is leeg!
}
?>

Dan strip je ook enkele spaties alleen.
Aangepast naar aar dr script.

Wanneer ik nu bijv het input veld username invult krijg ik alleen de error dat username leeg is terwijl die wel gevuld is en password niet,

script


<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
	$errors = array();
	if (trim($_POST["username"])) {
		$errors[] = "Vul wel een gebruikersnaam in";
	}
	if (trim($_POST["password"])) {
		$errors[] = "Vul wel een wachtwoord in";
	}
	if (!empty($errors)) {
		foreach($errors as $error) {
			echo $error."<br>";
		}
		die();
	} else {
		echo "Rest van de code.";
	}
} else { 
	echo "Geen formulier verstuurd.";
}
?>

Je moet niet alleen trim() doen, maar ook vergelijken op een lege string.
Zie http://php.net/trim
Je controleert op dit moment nog niet of de velden leeg zijn.

Verander regel 4 en 7
 if (trim($_POST["username"])) 

naar
 if(trim($_POST["username"])=='') 


In principe zou ik dan alleen moeten filteren op username met trim omdat sommige wachtwoorden andere chars hebben, nou is de vraag wat zou ik dan moeten filteren bij usernames?
Wachtwoorden kunnen nooit leeg zijn, dus een controle daarop kan geen kwaad tijdens het inloggen of registreren. Die trim() kan je daar dan achterwege laten.
Ik maak nu gebruik van trim zoals je zei. alleen als ik nu spaties intoets bij het login form kom ik uit bij die echo van rest van de code..


<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
	$errors = array();
	if (trim($_POST["username"])==" ") {
		$errors[] = "Vul wel een gebruikersnaam in";
	}
	if (trim($_POST["password"])==" ") {
		$errors[] = "Vul wel een wachtwoord in";
	}
	if (!empty($errors)) {
		foreach($errors as $error) {
			echo $error."<br>";
		}
		die();
	} else {
#Hier kom ik dan uit
		echo "Rest van de code.";
	}
} else { 
	echo "Geen formulier verstuurd.";
}
?>
- Controleer op een lege string, zie mijn voorbeeld nog eens.
- die() is niet nodig. Geen enkel script hoort 'dood' te gaan.
- Wat nu als mijn wachtwoord met een spatie begint?

Reageren