Archief - PHP: kloppen deze 2 regexes ?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

SuPeRfLy

Legacy Member
Ik heb op een website die ik net gemaakt heb mensen gehad die problemen melden met de validatie van een postcode en een telefoon nr.

zien jullie het probleem?

dit is de regex voor de postcode validatie:
PHP:
$pPostcode = sanitize($HTTP_POST_VARS['postcode']);
if(!eregi("^[0-9]{2,40}$", $pPostcode)) { die ('Gelieve uw postcode op te geven, klik op vorige op terug te keren');}

en dit ide regex voor het telefoon nr
PHP:
$pTel = sanitize($HTTP_POST_VARS['tel']);
if(!eregi("^[0-9]{2,40}$", $pTel)) { die ('Gelieve uw telefoon nr. op te geven, klik op vorige op terug te keren');}

en dit is de sanitize functie indien het probleem daar zou liggen:
PHP:
function sanitize($variable){
	$variable = str_replace("",";",$variable);
	if(!get_magic_quotes_gpc()){
		$variable = addslashes($variable);
	}
	return $variable;
}

zero2one

Legacy Member
hmm postcode 0000 wordt ook aanvaard ?

beter is:

PHP:
if(!eregi("^[1-9]([0-9]{3})$",  $pPostcode)) { die ('Gelieve uw postcode op te geven, klik op vorige om terug te keren');}
enkel postcodes beginnend mat een cijfer tussen 1 en 9 gevolgd door 3 cijfers (dus min 1000 en max 9999)


en telefoonnr 00 wordt ook aanvaard?

beter

PHP:
if(!eregi("^[0][1-9]([0-9]{7,8})$", $pTel)) { die ('Gelieve uw telefoon nr. op te geven, klik op vorige om terug te keren');}

dan aanvaard ge enkel telnrs beginnend met 0 gevolgd door een cijfer tussen 1 en 9 en verveolgens min 7 max 8 cijfers (totaal 9 voor vaste en 10 voor mobiele telefoonnrs)

killgore

Legacy Member
use preg_match() please ipv eregi.

enneh, wat moet dit doen??
PHP:
$variable = str_replace("",";",$variable);

ik gok op:

PHP:
$variable = str_replace("\n",";",$variable);

edit: @zero2one, zijn er geen tel. n° van 8 cijfers???

zero2one

Legacy Member
edit: @zero2one, zijn er geen tel. n° van 8 cijfers???

VAST:
vb 09 123 45 67
ofwel vb 055 12 34 56
==> 9 cijfers

GEOGRAFISCH NIET BEPAALDE NRS:
vb: 070 12 34 56
vb: 078 12 34 56
==> 9 cijfers

MOBIEL:
vb 0488 12 34 56
==> 10 cijfers

GROENE NRS (gratis):
0800 12 345
==> ook 9 cijfers

090x NRS (dure nrs):
0900 12 34 56
==> 10 cijfers



geef eens een voorbeeld van een belgisch telefoonnr met 8 cijfers??

en geen service nrs, die tellen niet mee want wie kan er nu een sevice nr hebben als contact telnr....

dJeez

Legacy Member
Het probleem is dat uw foutmeldingen gewoon slecht zijn, ze geven totaal geen hint over wat er nu precies mis is gelopen. Stel dat een gebruiker gewoon is van puntjes te zetten tussen de groepjes van cijfers (à la 0800/12.34.56), dan zal uw check zeggen dat het telefoonnummer verkeerd is, terwijl dat voor de gebruiker vanuit zijn standpunt gezien helemaal niet het geval is.

Dus ofwel zeg je HOE ze telefoonnummers moeten ingeven (werkt meestal best adhv een voorbeeld), ofwel pas je de foutmeldingen grondig aan en/of zorg je ervoor dat er geen ongeldige tekens in het invulveld ingevuld mogen worden (dat laatste kan perfect via javascript).

BTW Ik gebruik steeds de internationale notatie voor telefoonnummers (vb. +32 (0)800 123456) en zet ook steeds B- voor het postnummer (vb. B-3500 voor Hasselt).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan