Wachtwoorden vergelijken.

Status
Niet open voor verdere reacties.

SKILL

Gebruiker
Lid geworden
9 apr 2009
Berichten
41
Hallo,

ik ben begonnen aan een pagina waar je je kunt registreren. Op dit moment wil ik dat iemand een wachtwoord in kan typen en daarna moet het wachtwoord nog een keer worden ingetypt. Dan wil ik deze wachtwoorden vergelijken, zijn ze niet hetzelfde...dan moet er een melding komen en de pagina moet opnieuw worden getoond.

Dit lukt dus niet....

PHP:
<html>
<head>
	<title>Register</title>
	<link rel="stylesheet" type="text/css" href="appdata/stylesheets/form.css" />
</head>
<body>

<?php
//header toevoegen
include "header.php";
?>

<?php
//functies toevoegen
include "function.inc.php";
?>

<?php
//controle of het formulier is verzonden en of alle velden zijn ingevuld
if (!isset($_POST["Verzendbutton"]) || 
	!valid_loginnaam($_POST["Loginnaam"]) ||
	!valid_wachtwoord1($_POST["Wachtwoord1"]) ||
	!valid_wachtwoord2($_POST["Wachtwoord2"]))
{ 
?>

<!--form start-->
<form method="POST" action="<?php echo $_SERVER["PHP_SELF"]; ?>" />
<table>
<tr>
<td>
Loginnaam:
</td>
<td>
<?php
//controle of er een loginnaam is ingevoerd en of deze juist is ingevoerd
if (isset($_POST["Verzendbutton"]) && !valid_loginnaam($_POST["Loginnaam"])) {
	echo "<font color=\"red\">Vul de loginnaam correct in!<br /></font>";
}
?>
<input type="text" name="Loginnaam" value="<?php if (isset($_POST["Loginnaam"])) { echo $_POST["Loginnaam"] ; } ?>" size="30" maxlength="30" />
</td>
</tr>
<tr>
<td>
Wachtwoord:
</td>
<td>
<?php
//controle of er een wachtwoord is ingevoerd en of deze juist is ingevoerd
if (isset($_POST["Verzendbutton"]) && !valid_wachtwoord1($_POST["Wachtwoord1"])) {
	echo "<font color=\"red\">Vul het wachtwoord correct in!<br /></font>";
}
//controle of het wachtwoord en het herhaalde wachtwoord aan elkaar gelijk zijn
if (isset($_POST["Verzendbutten"]) && valid_wachtwoord1($_POST["Wachtwoord1"]) != valid_wachtwoord2($_POST["Wachtwoord2"])) {
		echo "<font color=\"red\">Het wachtwoord is niet gelijk aan het herhaalde wachtwoord. Probeer het nogmaals!<br /></font>";
}
?>
<input type="password" name="Wachtwoord1" size="30" maxlength="30" />
</td>
</tr>
<tr>
<td>
Herhaal wachtwoord:
</td>
<td>
<?php
//controle of er een wachtwoord is ingevoerd en of deze juist is ingevoerd
if (isset($_POST["Verzendbutton"]) && !valid_wachtwoord2($_POST["Wachtwoord2"])) {
	echo "<font color=\"red\">Vul het wachtwoord correct in!<br /></font>";
}
?>
<input type="password" name="Wachtwoord2" size="30" maxlength="30" />
</td>
</tr>
<tr>
<td>
<?php
if (isset($_POST["Verzendbutton"]) && ($_POST["Wachtwoord2"] != $_POST["Wachtwoord1"])) {
	echo "<font color=\"red\">Vul het wachtwoord correct in!<br /></font>";
} 
?>
</td>
<td>
<input type="submit" name="Verzendbutton" value="Verzenden" />
</td>
</tr>
</table>
</form>
<!--form end-->

<?php
} else {	
	header ("location: http://localhost:8080/regsucces.php");
}
?>

<?php
//footer toevoegen
include "footer.php";
?>

</body>
</html>

Deze code heb ik dus ingevoerd:
PHP:
//controle of het wachtwoord en het herhaalde wachtwoord aan elkaar gelijk zijn
if (isset($_POST["Verzendbutten"]) && valid_wachtwoord1($_POST["Wachtwoord1"]) != valid_wachtwoord2($_POST["Wachtwoord2"])) {
		echo "<font color=\"red\">Het wachtwoord is niet gelijk aan het herhaalde wachtwoord. Probeer het nogmaals!<br /></font>";
}

Maar hij werkt niet..als ik bij wachtwoord "ja" in type en bij het herhaalde wachtwoord "nee" dan wordt ik gewoon doorgestuurd naar de volgende pagina.

Wat doe ik verkeerd?
 
Je moet kijken of de inhoud van de variabelen gelijk is. Niet de uitkomst van de functie.

De functie retourneert waarschijnlijk true / false.

Als je het dan doet op de manier zoals je hierboven beschreven hebt, kijk je eigenlijk of true niet gelijk is aan true.
 
Persoonlijk zou ik dit meteen doen met Javascript, voor het verzenden... Als je hier hulp bij wilt hebben wil ik je graag helpen :thumb:
 
Slecht idee. Je moet ALTIJD server-side controleren. JavaScript is zo eenvoudig te manipuleren, dat het absoluut niet veilig is.

Je kunt best een check inbouwen vóór het verzenden, maar het moet echt nog gecontroleerd worden op de server.
 
Hoezo? Het gaat hier toch alleen zodat de gebruiker zeker weet dat hij zijn gewenste wachtwoord heeft ingetypt en geen typo heeft gemaakt? Ik zie het nut er niet van in om een serverside check daarvan te maken.

Ik ben wel de eerste die zal zeggen dat er veel moet worden gecheckt op de server. Maar mysql_real_escape_string gecombineerd met stripslashes is veel effectiever lijkt me.

Groetjes,

Kaj-Ivar
 
stripslashes is nooit effectief.

Verder gaat het hier over 2 verschillende dingen zo te lezen.
 
Tuurlijk is mysql_real_escape_string effectief... maar het dient natuurlijk wel een heel ander doel.

Ik zei ook dat het uiteraard goed is om client-side vast een check te doen of ze overeenkomen, maar als de gebruiker javascript uitgeschakeld heeft ... vul zelf maar in.

Daarom is het beter / netter om het server-side nog even te controleren.
 
Ja, het is inderdaad beter om ook serverside te checken als de gebruiker geen javascript heeft...

Maar ja, ikzelf blokkeer gebruikers die geen js hebben (nou ja, ze krijgen een vriendelijke melding ;)), want volgens w3schools.com gebruikt er 95% javascript (hoewel dit niet helemaal klopt, geeft het wel een klein beeld van hoe het is)...

Groetjes,

Kaj-Ivar

Edit: Sorry voor de off-topic :)
 
Maar ja, ikzelf blokkeer gebruikers die geen js hebben (nou ja, ze krijgen een vriendelijke melding ;)), want volgens w3schools.com gebruikt er 95% javascript (hoewel dit niet helemaal klopt, geeft het wel een klein beeld van hoe het is)... :)

Dat maakt het nog niet veilig.

Als jij op jouw site een mooie JS-check hebt staan en geen check in het verwerkscript dan kan ik dus zelf een formulier maken op mijn eigen site en die waardes naar jouw verwerkscript sturen.

Weg is de controle en ik kan doen wat ik wil.

Dat is het punt dat ErikBooy007 je duidelijk wilt maken denk ik.
 
Ja hoor dat snap ik is ook prima, maar wat ik bedoelde is dat het eigenlijk niet erg dat, in het geval van de check of twee wachtwoorden hetzelfde zijn, jij op je eigen site een formulier kan maken die alles verstuurd naar zijn server.

En, hier geef ik je volkomen gelijk in, je MOET serverside checks gebruiken.
 
Whow gasten,

veel reacties..offtopic. En ik heb op dit moment ff weinig tijd om te testen.
Ik ga met de eerste reactie na het posten van mijn thread van erikbooy aan de slag. Zodra ik verder ben geef ik gelijk bericht. Thnx voor de hulp tot zover.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan