login  Naam:   Wachtwoord: 
Registreer je!
 Forum

E-mail input validatie

Offline Dark_Paul - 07/06/2006 19:16
Avatar van Dark_PaulPHP ver gevorderde Ik heb een validatie van FangorN in mn pagina staan. Het is een simpel gastenboek. Het script van FangorN trimt de inputs en kijkt dan of de opgegeven velden wel ingevuld zijn. Zoniet, window.alert dat dit moet. Nou wil ik maken dat je in 't e-mailadres 1 '@' moet hebben, en minimaal 1 '.' . Hoe kan ik dit maken? dit is de functie voor het controleren of de velden name en message wel ingevuld zijn. Dit staat onder de trim-functie, die heb ik dus wel erbij.
  1. function check_form(frm)
  2. {
  3. var ret = true; // initieel is alles goed
  4. if(trim(frm.elements['Name'].value) == "")
  5. {
  6. ret = false;
  7. window.alert("Please fill in your name");
  8. frm.elements['Name'].value = ""; // value bevatte toch onzin
  9. frm.elements['Name'].focus();
  10. }
  11.  
  12. if(trim(frm.elements['Message'].value) == "")
  13. {
  14. ret = false;
  15. window.alert("Please enter a message");
  16. frm.elements['Message'].value = ""; // value bevatte toch onzin
  17. frm.elements['Message'].focus();
  18. }
  19. return ret;
  20. }

iemand ideeën, of moet die bij 'Samenwerken'?

14 antwoorden

Gesponsorde links
Offline BramBo - 08/06/2006 09:42 (laatste wijziging 08/06/2006 11:31)
Avatar van BramBo JS gevorderde Zo niet weten of het bij Samenwerken moet, lijkt me stug..

Anyways, dit kan doormiddel van Regexp(Lees: Regular Expression). Hier een kleine functie om een e-mail te valideren :

  1. function Email_Check(val) {
  2.  
  3. var myRegxp = /^[\d\w-_.]+\@[\d\w-_.]+\.[\d\w]{2,4}$/;
  4.  
  5. return myRegxp.test(val);
  6. }


Deze roep je heel simpel aan d.m.v. :
  1. if(Email_Check(this.value) == true) {
  2. alert('woopie');
  3. } else {
  4. alert('Fake !');
  5. }


(edit: aangepast, zie volgende 2 posts)
Offline Thomas - 08/06/2006 11:20
Avatar van Thomas Moderator Ziet er goed uit, alleen moet de regexp eindigen met een $ (je matcht immers een compleet e-mailadres)? Het deel na de @ zou ook niet leeg mogen zijn (?), dus misschien van die * een + maken?
Offline BramBo - 08/06/2006 11:29 (laatste wijziging 08/06/2006 11:30)
Avatar van BramBo JS gevorderde Zoals FangorN al melde, word 't :
  1. var myRegxp = /^[\d\w-_.]+\@[\d\w-_.]+\.[\d\w]{2,4}$/;


^^
Offline xSc - 08/06/2006 12:07
Avatar van xSc Onbekend Ik zou controleren met PHP. Als een SPAM-robot (die zal waarschijnlijk geen JavaScript lezen) je formulier invult, gaat alles zonder problemen.
Offline eXziBit - 08/06/2006 12:14
Avatar van eXziBit Onbekend Of alleen PHP of allebei als je het echt veilig wilt doen. (Voordeel van server-side talen ;))
Offline Dark_Paul - 08/06/2006 19:40 (laatste wijziging 08/06/2006 20:59)
Avatar van Dark_Paul PHP ver gevorderde @Henri: ik verwacht niet dat er bots op de site komen. We zijn nog maar een onbekende band. de enige berichten die ik in het gastenboek verwacht zijn van vrienden/kenissen 

ik vind 't zo wel handig, want ik heb nu een validatie die controleert of Name en Message zijn ingevuld, als dat niet zo is komt er een window.alert. ik ga 't eens proberen. uhm.. domme vraag, maar hoe kan ik die functie in de check_frm functie zetten, zodat dit veld ook wordt doorgelopen? gewoon de functie Email_Check boven de check_frm functie zetten, net als de Trim-declaratie, en dan vervolgens dit stukje:
  1. if(Email_Check(this.value) == true) {
  2. alert('woopie');
  3. } else {
  4. alert('Fake !');
  5. }

in de functie check_frm zetten? wordt er nu 'woopie' ge-alert als 't klopt? want als 't klopt, moet ie eik niets doen. kan ik dat oplossen door 't zo te doen?
  1. if(Email_Check(this.value) == false) {
  2. window.alert('Fake E-mail!');
  3. }

of is dit een domme vraag? 
Offline Maarten - 08/06/2006 20:24
Avatar van Maarten Erelid Dat is inderdaad een domme vraag 
if(Email_Check(this.value) == true) {
Dus als het niet true moet zijn:
if(Email_Check(this.value) != true) {
En dat is inderdaad meestal dus false.
Offline Dark_Paul - 08/06/2006 20:56 (laatste wijziging 09/06/2006 13:59)
Avatar van Dark_Paul PHP ver gevorderde gelukkig, 't werkt!
zelfs met mijn gebrekkige kennis van JavaScript is 't me gelukt het stukje in te bouwen. Ik zal me keurig aan de regels houden en de oplossing erbij zetten:

  1. //hierboven staat de trim-functie
  2. function Email_Check(val) {
  3.  
  4. var myRegxp = /^[\d\w-_.]+\@[\d\w-_.]+\.[\d\w]{2,4}$/;
  5.  
  6. return myRegxp.test(val);
  7. }
  8.  
  9. function check_form(frm)
  10. {
  11. var ret = true; // initieel is alles goed
  12.  
  13. if(trim(frm.elements['Name'].value) == "")
  14. {
  15. ret = false;
  16. window.alert("Please fill in your name");
  17. frm.elements['Name'].value = ""; // value bevatte toch onzin
  18. frm.elements['Name'].focus();
  19. }
  20.  
  21. if(trim(frm.elements['E-mail'].value) != "")
  22. {
  23. if(Email_Check(this.value) == false) {
  24. ret = false;
  25. window.alert('Please fill in a valid e-mailaddress');
  26. frm.elements['E-mail'].value = ""; // value bevatte toch onzin
  27. frm.elements['E-mail'].focus();
  28. }
  29. }
  30.  
  31. if(trim(frm.elements['Message'].value) == "")
  32. {
  33. ret = false;
  34. window.alert("Please enter a message");
  35. frm.elements['Message'].value = ""; // value bevatte toch onzin
  36. frm.elements['Message'].focus();
  37. }
  38.  
  39.  
  40. return ret;
  41. }

bedankt iedereen! 
edit: dit topic kan dicht
edit 2: ik heb het vanmiddag op school geprobeerd, maar als je een geldig e-mailadres invoert (paul@why-online.com) zegt ie dat 't fout is. dus er zit toch nog een foutje in 't script.
wat gebeurt er trouwens in de functie Check_Email? nu staat 't er zo, maar ik zou graag weten wat er gebeurt. daar leer ik van, en ik wil ook een soortelijke validatie maken voor een website-inputveld. Dus als ik snap wat er gebeurt, kan ik dat zelf maken..
Offline marten - 09/06/2006 14:05 (laatste wijziging 09/06/2006 14:08)
Avatar van marten Beheerder kijk eens bij tutorials en dan vooral die over reguliere expressies Daar staat goed in beschreven wat die code betekent. Staat onder php 

http://www.site...4&id=5
Offline Thomas - 09/06/2006 15:12
Avatar van Thomas Moderator
  1. if(Email_Check(this.value) == false)


this.value?
Offline Dark_Paul - 09/06/2006 17:42
Avatar van Dark_Paul PHP ver gevorderde @marten: dankje, ik zal 't doornemen 
@FangorN: ik weet niet wat 't doet, dat heeft BramBo gescript. Ik weet wel dat als ik 't weghaal, de hele functie check_form niet meer werkt (ik krijg geen window.alerts meer als ik geen naam of message invoer).
Offline BramBo - 11/06/2006 12:06
Avatar van BramBo JS gevorderde Ik had de code alleen even gemaakt als voorbeeldje, je dient this.value nog aan te passen. namelijk :
  1. if(trim(frm.elements['E-mail'].value) != "")
  2. {
  3. if(Email_Check(frm.elements['E-mail'].value) != true)
Offline xSc - 12/06/2006 11:02 (laatste wijziging 12/06/2006 11:03)
Avatar van xSc Onbekend Een onbekende band maakt niet uit hoor. Als de robots lucht krijgen van jouw form, dan kun je je lol op. :S

Maar, robots zijn tegenwoordig zo slim op geldige e-mailadressen te gebruiken.
Offline Dark_Paul - 12/06/2006 14:06
Avatar van Dark_Paul PHP ver gevorderde @BramBo: bedankt, ik snapte 't al niet (mijn kennis van JavaScript is niet veel, heb bijna zomervakantie, dus dat komt wel)
@Henri: hoe komen bots dan aan je site? en als ze geldige e-mailadressen gebruiken is de enige bewapening een code die je moet overtypen, maar dat is nog te moeilijk om te maken. En tegen de tijd dat ik last heb van een bot heb kan ik dat wel maken ;)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.402s