string_exp voor geldig telefoon nummer
De vraag is of de string_exp voor het telefoonnummer aan te vullen is zodat alleen een geldig telefoonnummer geaccepteerd wordt. (dus bestaande uit minimaal 10 cijfers inclusief eventueel een - of + teken )
De string ziet er nu uit als:
$string_exp = "^[0-9 .-]+$";
if(!mb_ereg($string_exp,$telephone)) {
$error_message .= 'Het telefoonnummer is niet geldig.<br />';
Kan dat dus aangevuld worden? Zo-ja, hoe? Graag advies.
En zijn al die regels vervolgens dekkend?
Je zou ook kunnen overwegen het "risico" te spreiden door ook een e-mailadres verplicht te stellen met verificatie en/of de gebruiker een ander adres op te laten geven ofzo (oftewel houd meerdere contactgegevens bij).
Zelfs al is het telefoonnummer syntactisch correct kan iemand nog steeds een vals nummer opgeven :p.
Ik zou het in beginsel simpel houden en enkel cijfers accepteren en kijken hoe dat uitpakt. Wellicht kun je dit later nog splitsen in landcode (of landselectie), netnummer en telefoonnummer.
Het is voor een website van een kennis die zelf niet in staat is om terug te mailen. Daarom vraagt hij bij reacties om een telefoonnummer zodat hij terug kan bellen. Op die manier kan hij toch zelfstandig -zonder anderen om hulp te hoeven vragen- reageren op een bericht.
Als een mailadres of telefoonnummer vals is dan hoeft hij de navraag ook niet serieus te nemen.
Dus als je ons zou kunnen helpen: er moeten minimaal 10 cijfers ingevuld worden inclusief eventuele spaties met eventueel een -teken of een + teken (bij internationale nummers) Kun je daarbij helpen? Dat zou ik erg waarderen.
Maar dan zit je nog steeds een beetje met volgorde en voorkomens van andere karakters (spaties, andere tekens), je hebt dan ook te maken met persoonlijke voorkeur waar je het telefoonnummer opdeelt... je kunt dan geen echte stricte checks uitvoeren tenzij je een scala aan verschijningsvormen kent (die je allemaal apart zult moeten definiëren).
Wat is er op tegen om enkel een telefoonnummer te vragen zonder spaties of speciale karakters? Indien je dan minimaal 10 cijfers wilt gebruik je {10,} in plaats van +, dus zoiets:
Zet in de toelichting: "enkel cijfers, geen spaties of speciale karakters" oid als toelichting. Indien een telefoonnummer begint met 316 dan snappen we denk ik wel dat dit een nederlands 06-nummer is? Aan de hand van enkel cijfers kan volgens mij prima afgeleid worden wat het daadwerkelijke telefoonnummer is / zou moeten zijn. Keep it simple.
Gewijzigd op 15/08/2016 17:31:51 door Thomas van den Heuvel
Die vriend van jou kan het zelf wel lezen. Voor het opslaan kan je gewoon VARCHAR gebruiken?
Persoonlijk schrijf ik mijn telefoonnummer nog met puntjes ertussen: 0184-633.843
Als iemand +31 (0)184 - 633843 wil typen, moet dat ook kunnen.
Wat je dus, in mijn optiek, moet doen is: gewoon volledig opslaan wat de gebruiker invult.
Je vriend kan het toch wel lezen en opslaan in de database is geen probleem.
Waarom zou je het beperken? Noem eens een goede reden? Controle op juistheid? Een nummer als 123-456-7890 is toch wel in te vullen.
Je houdt dan 10 of 12 cijfers over (uitgaande van juiste invoer, en zonder varianten als +31 etc)
Dat kun je valideren.
Verder begint het nummer in zo'n geval met een 0.
http://www.pfz.nl/wiki/invoer-validatie/#regular-expressions-is-het-een-nederlands-telefoonnummer
De variant van 12 cijferige NL telefoonnummers is niet bedoeld voor te bellen telefoons. (data only) dus die zou niet voor moeten komen.
Maar het zou ook kunnen dat iemand een Belgisch of Duits nummer wil ingeven. In zo'n geval moet je script niet bokken natuurlijk.
Als het gebruikt wordt om een SMS-bericht te sturen, dan zou ik liever een dropdown menu maken met de landcodes erin, en in het telefoonnummerveld alleen maar cijfers verplichten. Als het puur voor een contactformulier is, dan kan je alles gewoon toestaan. Het is net hoe je het wilt afhandelen.
Of er nu +31 (0)99 - 123 45 67 staat, of 099 - 123 45 67, het is voor iemand die handmatig het nummer draait wel duidelijk dat diegene 0991234567 moet intoetsen, of 0031991234567 als hij/zij in het buitenland zit.
Dank Heren; het probleem is dat -vooral engelsen- nogal eens invullen iets als 'B'ham 234567' en dat is erg lastig. Ik denk dat ik het beperk tot een verzoek in de toelichting om alleeen een volledig telefoonnummer in cijfers in te vullen. De rest wordt te ingewikkeld. Nogmaals dank voor het meedenken.
Vergeet ook niet dat iemand op het bedrijf gebeld wil worden: 0800-1234 moet ook kunnen...
}
$string_exp = "^[0-9 .-]+$";
if(!mb_ereg($string_exp,$telephone)) {
$error_message .= 'Het telefoonnummer is niet geldig.<br />';
}
// controle lengte telefoonnummer --------------------------------
$tel = strlen($telephone);
if($tel < 10){
$error_message .= 'Het telefoonnummer is niet volledig<br />';
}
// einde controle lengte telefoonnummer --------------------------
Met dank voor uw adviezen en medewerking sluit ik hierbij dit forum topic.