E-mail adress verifieren
Dit is mijn script:
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
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
<?
if (isset($_COOKIE['login'])){
echo "Je bent al ingelogt! <a href=\"index.php\">hier</a> om terug te gaan naar de index.";
}else{
if( isset($_POST["aanmelden"]))
{
if($_POST["gebruikersnaam"] != "" && $_POST["email"] != "" && $_POST["naam"] != "" && $_POST["wachtwoord1"] != "")
{
$telgb = mysql_query("SELECT gebruikersnaam FROM leden WHERE gebruikersnaam='".$_POST["gebruikersnaam"]."'") or die($error[1]);
$numgb = mysql_num_rows($telgb);
if($numgb == "1")
{
echo"<center>Deze gebruikersnaam bestaat al, je moet een andere gebruikersnaam nemen!</center>";
}
else
{
if(!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$", $_POST["email"]))
{
echo"<center>Je moet een geldig email adres invullen!</center>";
}
else
{
if($_POST["wachtwoord1"] != $_POST["wachtwoord2"])
{
echo "<center>U heeft niet de zelfde wachtwoorden ingegeven.</center>";
}
else
{
echo"<center>U bent aangemeld.</center>";
$wachtwoord = md5($wachtwoord1);
mysql_query("insert into leden (naam,gebruikersnaam,wachtwoord,idatum,email) values ('".$_POST["naam"]."','".$_POST["gebruikersnaam"]."','".$wachtwoord."','".$datum."','".$_POST["email"]."')") or die(mysql_error());
}
}
}
}
else
{
echo "<center>U heeft iets niet ingevult.</center>";
}
}else{
?>
if (isset($_COOKIE['login'])){
echo "Je bent al ingelogt! <a href=\"index.php\">hier</a> om terug te gaan naar de index.";
}else{
if( isset($_POST["aanmelden"]))
{
if($_POST["gebruikersnaam"] != "" && $_POST["email"] != "" && $_POST["naam"] != "" && $_POST["wachtwoord1"] != "")
{
$telgb = mysql_query("SELECT gebruikersnaam FROM leden WHERE gebruikersnaam='".$_POST["gebruikersnaam"]."'") or die($error[1]);
$numgb = mysql_num_rows($telgb);
if($numgb == "1")
{
echo"<center>Deze gebruikersnaam bestaat al, je moet een andere gebruikersnaam nemen!</center>";
}
else
{
if(!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$", $_POST["email"]))
{
echo"<center>Je moet een geldig email adres invullen!</center>";
}
else
{
if($_POST["wachtwoord1"] != $_POST["wachtwoord2"])
{
echo "<center>U heeft niet de zelfde wachtwoorden ingegeven.</center>";
}
else
{
echo"<center>U bent aangemeld.</center>";
$wachtwoord = md5($wachtwoord1);
mysql_query("insert into leden (naam,gebruikersnaam,wachtwoord,idatum,email) values ('".$_POST["naam"]."','".$_POST["gebruikersnaam"]."','".$wachtwoord."','".$datum."','".$_POST["email"]."')") or die(mysql_error());
}
}
}
}
else
{
echo "<center>U heeft iets niet ingevult.</center>";
}
}else{
?>
<center>
<form method="post">
<table border="1" width="50%" cellspacing="0" cellpadding="0">
<tr>
<td width="50%">Naam</td>
<td width="50%"><input type="text" name="naam"></td>
</tr>
<tr>
<td width="50%">Email adres</td>
<td width="50%"><input type="text" name="email"></td>
</tr>
<tr>
<td width="50%">Gebruikersnaam</td>
<td width="50%"><input type="text" name="gebruikersnaam"></td>
</tr>
<tr>
<td width="50%">Wachtwoord</td>
<td width="50%"><input type="password" name="wachtwoord1"></td>
</tr>
<tr>
<td width="50%">Wachtwoord bevestiging</td>
<td width="50%"><input type="password" name="wachtwoord2"></td>
</tr>
<tr>
<td width="100%" colspan="2"><center><input type="submit" name="aanmelden" value="Aanmelden"></center></td>
</tr>
</table>
</form>
</center>
Wil iemand hem voor mij toevoegen? Ben nog een echte n00b betreft php scripts in een ander script toevoegen...
Alvast bedankt
maar wat wil je er nu precies mee?
het email validatie gedeelte eruit halen?
Dat klopt, maar ik wil juist dat er een email validatie in komt.
eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$", $_POST["email"])
email adressen kunnen ook meerdere malen een punt bevatten
[email protected] word hierdoor volgens mij al als ongeldig gezien
Het neemt niet weg dat het een slechte regex is.
Maw als het adres niet klopt -> GEEN ACCOUNT :)
die moet escaped worden
op deze manier kan je een email adres als deze invullen
test@hier zitten spaties in.com
maar ik zie tussen de [ ] ook een losse - staan
afaik moet die escaped worden omdat php anders denkt dat het een range is
maar het kan dat het wel geaccepteerd word omdat het het laatste teken is
Kan iemand er ff een goed werkend kloppend script van maken.. snap er niks van.
Het check iig het mailadres en dat wou je toch?
Quote:
die moet escaped worden
op deze manier kan je een email adres als deze invullen
op deze manier kan je een email adres als deze invullen
Nablater, lees mn bericht nog eens ;)
Goed:
Op veler verzoek, nogmaals dezelfde post als ik al een paar keer hier geknalt heb:
De oplossing is meestal de smtp server raadplegen :)
"Hallo, bestaat u?"
Of op zn minst kijken of het domein, of de mailserver bestaat.
in PEAR (http://pear.php.net) gebruikt men de volgende code:
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
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
<?
/**
* Validate a email
*
* @param string $email URL to validate
* @param boolean $domain_check Check or not if the domain exists
*/
function email($email, $check_domain = false)
{
if($check_domain){
}
if (ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.
'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.
'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $email))
{
if ($check_domain && function_exists('checkdnsrr')) {
list (, $domain) = explode('@', $email);
if (checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A')) {
return true;
}
return false;
}
return true;
}
return false;
}
# De checkdnsrr werkt niet op windows, het schijnt dat daarvoor de class Net_DNS van pear kan helpen. Heb ik me niet in verdiept, dus zul je even zelf naarmoeten kijken.
?>
/**
* Validate a email
*
* @param string $email URL to validate
* @param boolean $domain_check Check or not if the domain exists
*/
function email($email, $check_domain = false)
{
if($check_domain){
}
if (ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.
'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.
'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $email))
{
if ($check_domain && function_exists('checkdnsrr')) {
list (, $domain) = explode('@', $email);
if (checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A')) {
return true;
}
return false;
}
return true;
}
return false;
}
# De checkdnsrr werkt niet op windows, het schijnt dat daarvoor de class Net_DNS van pear kan helpen. Heb ik me niet in verdiept, dus zul je even zelf naarmoeten kijken.
?>
ik had er overheen gelezen :(