controle email adress
Zit hier vast. ik voer eerst een controle uit of het email adres al bestaat in mijn databank. ik zou ook willen controleren of het email adres willen valideren. naar mijn denken doe ik dat best eerst vooraleer ik kijk of het email adres al bestaat. heb op het web een scriptje gevonden om email adres te valideren, (heb het als commentaar ingevoegd), maar ik krijg dit niet goed ertussen gevlochten. iemand een tip?
<html>
<head>
<title>Registreren</title>
</head>
<body>
<h2>Registeren</h2>
Welkom, u kunt zich hier registreren. Als inlognaam wordt uw e-mailadres gebruikt.
<hr><br>
<form name="form1" method="post" action="">
E-mailadres: <input name="email" type="text" placeholder="[email protected]"
size="30" maxlength="40"> (maximaal 40 tekens)<br><br>
Wachtwoord: <input name="wachtwoord" type="password" placeholder="paswoord"
size="10" maxlength="8"> (maximaal 8 tekens)<br><br>
<input type="submit" name="submit" value="Registeren">
<input name="reset" type="reset" value="Leegmaken">
</form>
</body>
</html>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
include("inc_connect_mysql.php");
if (!empty($_POST)){
// Eerst controleren of inlognaam (= e-mailadres) al bestaat in database
$email = $_POST["email"];
$wachtwoord = $_POST["wachtwoord"];
$query = "SELECT email FROM users WHERE email='" . $email . "'";
$result = mysqli_query($conn,$query) or die ("FOUT: " . mysqli_error($conn));
/*if (preg_match("/^[A-Za-z0-9._\-]+\@[A-Za-z0-9._\-]+\.[A-Za-z]{2,4}$/", "$email")
echo "Het email adres is goed";
else
echo "Het email adres is fout"; */
if (mysqli_num_rows($result) > 0) {
// e-mailadres al aanwezig in de database, foutmelding tonen
$tekst = "Dit e-mailadres (<b>$email</b>) bestaat al\n.
<a href=\"" . $_SERVER["PHP_SELF"] ."\">Opnieuw registreren</a>\n";
die($tekst);
}else{
// OK, Query opbouwen
$query="INSERT INTO users (email, wachtwoord) ";
$query .= "VALUES ('$email', '$wachtwoord');";
$result = mysqli_query($conn,$query) or die ("FOUT: " . mysqli_error($conn));
$tekst = "Bedankt voor uw aanmelding.<br>
U kunt nu <a href=\"login.php\">inloggen</a>";
die ($tekst);
}
}
?>
include("inc_connect_mysql.php");
if (!empty($_POST)){
// Eerst controleren of inlognaam (= e-mailadres) al bestaat in database
$email = $_POST["email"];
$wachtwoord = $_POST["wachtwoord"];
$query = "SELECT email FROM users WHERE email='" . $email . "'";
$result = mysqli_query($conn,$query) or die ("FOUT: " . mysqli_error($conn));
/*if (preg_match("/^[A-Za-z0-9._\-]+\@[A-Za-z0-9._\-]+\.[A-Za-z]{2,4}$/", "$email")
echo "Het email adres is goed";
else
echo "Het email adres is fout"; */
if (mysqli_num_rows($result) > 0) {
// e-mailadres al aanwezig in de database, foutmelding tonen
$tekst = "Dit e-mailadres (<b>$email</b>) bestaat al\n.
<a href=\"" . $_SERVER["PHP_SELF"] ."\">Opnieuw registreren</a>\n";
die($tekst);
}else{
// OK, Query opbouwen
$query="INSERT INTO users (email, wachtwoord) ";
$query .= "VALUES ('$email', '$wachtwoord');";
$result = mysqli_query($conn,$query) or die ("FOUT: " . mysqli_error($conn));
$tekst = "Bedankt voor uw aanmelding.<br>
U kunt nu <a href=\"login.php\">inloggen</a>";
die ($tekst);
}
}
?>
<html>
<head>
<title>Registreren</title>
</head>
<body>
<h2>Registeren</h2>
Welkom, u kunt zich hier registreren. Als inlognaam wordt uw e-mailadres gebruikt.
<hr><br>
<form name="form1" method="post" action="">
E-mailadres: <input name="email" type="text" placeholder="[email protected]"
size="30" maxlength="40"> (maximaal 40 tekens)<br><br>
Wachtwoord: <input name="wachtwoord" type="password" placeholder="paswoord"
size="10" maxlength="8"> (maximaal 8 tekens)<br><br>
<input type="submit" name="submit" value="Registeren">
<input name="reset" type="reset" value="Leegmaken">
</form>
</body>
</html>
Regel 5 t/m 7 vervangen Door
Toevoeging op 03/03/2015 02:15:19:
Toevoeging op 03/03/2015 02:17:36:
En je vergeet je password te hashen
en een limiet van max 8 tekens in een password ???
Toevoeging op 03/03/2015 02:15:19:
Ivo P op 03/03/2015 02:12:24:
Regel 5 t/m 7 vervangen Door
Regel 5 t/m 7 vervangen Door
Toevoeging op 03/03/2015 02:17:36:
En je vergeet je password te hashen
en een limiet van max 8 tekens in een password ???
Gewijzigd op 03/03/2015 02:13:56 door Ivo P
1 manier die ik vaak gebruik bij e-mail is de input type aanpassen dus zo:
<input type="email" name="email">
<input type="email" name="email">
Dat is een manier om aan de invoerkant vast een filter aan te brengen.
Helaas herkennen niet alle browsers dit type input.
Daarnaast moet je ook rekening houden met data die buiten een form wordt aangeleverd, of forms die worden aangepast.
Een eindcontrole aan de php-kant zal altijd uitgevoerd moeten worden.
Helaas herkennen niet alle browsers dit type input.
Daarnaast moet je ook rekening houden met data die buiten een form wordt aangeleverd, of forms die worden aangepast.
Een eindcontrole aan de php-kant zal altijd uitgevoerd moeten worden.
Kevin Jager op 03/03/2015 06:04:31:
1 manier die ik vaak gebruik bij e-mail is de input type aanpassen dus zo:
<input type="email" name="email">
<input type="email" name="email">
Bovenstaande geldt voor HTML5 en is een client-side validatie en kan makkelijk omzeild worden. Validatie in PHP blijft een must.
Bedankt iedereen voor de reactie, @ Ivo, heb de regels vervangen zoals je voorstelde, en dat lukt. Maar wat gebeurt er nu, enkel als men een input geeft in de vorm van een email adres , dan kan je verder. indien niet, springt het scriptje terug naar naar het invullen van de gegevens. Ik ga deze avond eens proberen om daar een waarschuwing naar de gebruiker toe tussen te krijgen, vb " er word een foutief email adres ingevuld, probeer het opnieuw."
mochten er hieromtrent tips zijn, zijn ze steeds welkom. Ik post het even als het al dan niet lukt.
-wat betreft hashen van het paswoord, dit komt later in de cursus aan bod.
-inderdaad wat naïef om tevreden te zijn met 8 tekens voor het paswoord.
bedankt
mochten er hieromtrent tips zijn, zijn ze steeds welkom. Ik post het even als het al dan niet lukt.
-wat betreft hashen van het paswoord, dit komt later in de cursus aan bod.
-inderdaad wat naïef om tevreden te zijn met 8 tekens voor het paswoord.
bedankt
Om je op weg te helpen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
// functie die de formuliervelden valideert en foutmeldingen aanmaakt
function validate($email)
{
$errors = [];
if(!strlen($email))
$errors[] = 'U heeft geen email adres ingevuld.';
else if(!filter_var($email, FILTER_VALIDATE_EMAIL))
$errors[] = 'U heeft een ongeldig email adres ingevuld.';
return $errors;
}
// initialisatie
$email = '';
$errors = [];
// indien het formulier verstuurd is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$email = $_POST['email'];
// valideer de ingevulde gegevens
$errors = validate($email);
// als er dan geen fouten zijn stuur de gebruiker door naar een bedank pagina
if(!count($errors))
{
// hier kun je nog een email versturen en/of de gegevens opslaan in de database
header('Location: bedankt.html');
exit;
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>een titel</title>
</head>
<body>
<ul id="errors">
<?php
foreach($errors as $error)
echo '<li>' . $error . '</li>';
?>
</ul>
<form action="" method="post">
<input type="email" name="email" value="<?php echo $email; ?>" />
<button type="submit">Verzenden</button>
</form>
</body>
</html>
// functie die de formuliervelden valideert en foutmeldingen aanmaakt
function validate($email)
{
$errors = [];
if(!strlen($email))
$errors[] = 'U heeft geen email adres ingevuld.';
else if(!filter_var($email, FILTER_VALIDATE_EMAIL))
$errors[] = 'U heeft een ongeldig email adres ingevuld.';
return $errors;
}
// initialisatie
$email = '';
$errors = [];
// indien het formulier verstuurd is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$email = $_POST['email'];
// valideer de ingevulde gegevens
$errors = validate($email);
// als er dan geen fouten zijn stuur de gebruiker door naar een bedank pagina
if(!count($errors))
{
// hier kun je nog een email versturen en/of de gegevens opslaan in de database
header('Location: bedankt.html');
exit;
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>een titel</title>
</head>
<body>
<ul id="errors">
<?php
foreach($errors as $error)
echo '<li>' . $error . '</li>';
?>
</ul>
<form action="" method="post">
<input type="email" name="email" value="<?php echo $email; ?>" />
<button type="submit">Verzenden</button>
</form>
</body>
</html>
Gewijzigd op 03/03/2015 17:24:27 door Frank Nietbelangrijk




