Hallo PHPhulpers,

Ik probeer een kleine controle uit te voeren op e-mailadressen die ingevoerd worden tijdens de registratie van een account. Hierbij moeten domeinnamen blokkeerd worden die in de database zitten; zoals @hotmail.com, @live.nl, enz...

Nu is het probleem dat ik ook @live.* wil blokkeren maar hierbij heb ik geen idee hoe ik dat moet aanpakken. Wat ik tot nu toe heb is:


public function check_email($email)
{
	global $db;
		
	$email = substr($email, strrpos($email, "@"));
	
	$rEmailDeny = $db->sql_query("
		SELECT	deny_id,
			deny_name
		FROM	" . TABLE_EMAILDENY . "
		WHERE	deny_name = '" . $db->sql_quote(str_replace('@', '', $email)) . "'
	");
		
	echo $rEmailDeny['deny_name'];
	
	return ($rEmailDeny) ? false : true;
}


waarna ik controleer met: !$usr->check_email($_POST['email'])

Heeft iemand voor mij een goede uitleg/antwoord hoe ik kan controleren of het ingevulde e-mailadres een niet toegestaan domein bezit zoals @live.*

Alvast bedankt!
En wat is hier het nut van?
Hij controleerd tijdens het registreren dat een aantal domeinen, zoals @hotmail.com, @live.nl, @gmail.com enz... blokkeerd en dat je sowiso een bedrijfsemail adres nodig hebt.

Alleen nu is het het geval dat je met @live heel veel domeinextenties hebt die geblokkeerd moeten worden. Daarvoor wil ik in de database kunnen neerzetten van @live.*.
Nou?
Dan haal je toch de extensie (wat na de punt komt dus) weg (in die functie) en klaar is Kees eeh, Steef...
Dan doe je dat toch bij al die domeinen. Zet alleen het eerste stuk in de database en controleer ook alleen het eerste stuk. Dus hotmail, live, gmail enz. mag gewoon niet ongeacht wat er nog achter komt.
Hoe zou ik dit dan kunnen controleren. Want soms kan je te maken hebben met een @subdomein.hoofddomein.nl, dan zitten er 2 punten in de emaildomein.

Hoe kan ik dan controleren wat er tussen de @ en de laatste punt staat?
Je haalt het laatste stuk na de punt eraf en van hetgeen je overhoudt neem je het laatste stuk.
Dat is nu juist mijn vraag, hoe kan ik dit doen?
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL | E_STRICT);

$email = '[email protected]';
$found = array ();
preg_match ('/@(.+)\./', $email, $found);
echo '<pre>' . print_r ($found[1], true) . '</pre>';
?>
@Jan, thanx! Dat werkt prima! Nu kan ik weer verder met mijn controle...

Reageren