21. marts 2013 - 09:52Der er
35 kommentarer og 1 løsning
Email validering
Hej,
Det er naturligvis nemt at finde et script, som validerer en email adresse, men mit problem er hvad man gør EFTER mailen er blevet valideret.
Langt de fleste sender en alert op om, at emailen er forkert. Men hvis man taster en godkendt mail, - hvad sker der så? Jeg kan ikke finde ét kodestykke, hvor det er inkluderet når man har tastet en rigtig mail.
F.eks:
function validate(form_id,email) {
var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; var address = document.forms[form_id].elements[email].value; if(reg.test(address) == false) {
alert('Invalid Email Address'); return false; } }
- Den rører kun på sig hvis det er en forkert mail. Hvad gør man hvis man VIL noget med mailen?
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Eller, egentlig må det korrekte være at bede den lave en return true hvis mailen er korrekte, nu hvor det er i en funktion. Og så der hvor du skal bruge den, gør du blot sådan:
if(validate(form,mail)) { // Adressen er korrekt } else { // Adressen er forkert }
Men Kjeldsted, kan man cutte Javascriptet og istedet smide noget ASP ind, som eventuelt gemmer mailen i databasen? ASP'en kan jeg godt, men hvordan får jeg den til at arbejde sammen med det stykke javascript?
Altså, du kan enten bede JS'en om at submitte en form, redirecte til en anden URL, eller også kan du via JS og Ajax lave et kald til en ASP side "bag om", altså uden at forlade siden man er på. Alt efter formål.
Hvis ikke at browseren skal opdatere siden så, ja.
Kender du godt til hvordan det hænger sammen med ASP og JS. Altså hvordan de to sprog fungere? For det er faktisk en vigtig ting for at kunne få dem til at snakke sammen.
Indenfor ASP kan jeg sagtens skrive scriptet, som gemmer mailen i databasen. Det er til nyhedsbreve, hvor folks mails bliver gemt og sender brugt til udsendelse af nyhedsbreve. Men problemet er bare hvordan en email validering i JS skal kombineres med et script i ASP (scriptet som gemmer mailen).
Din RegExp forkaster lovlige e-mail-adresser. Hvorfor nøjes du ikke bare med at tjekke, om adressen indeholder et snabel-A og et punktum? Det er meget lettere og i langt de fleste tilfælde rigeligt =)
Korrekt. Men så kan man jo skrive @. som email. Og når mit system udsender nyhedsbreve, så opstår der fejl ved netop den mail. Og når vi taler om flere hundrede mails så det jo ikke en jeg bare finder i databasen :)
Ja og så skriver de bare foo@foo.ugh i stedet - og så er du lige meget på spanden =)
At du validerer adressen, giver frasorterer pr. erfaring ikke ret mange døde adresser - men det er meget let at udelukke gode.
Det mest effektive er at sende brugeren en automatisk bekræftelses-mail, når vedkommende tilmelder sig nyhedsbrevet. I mailen lægger du et link, som brugeren klikker på for at verificere, at hun faktisk ønsker at modtage dit nyhedsbrev.
De døde adresser, du allerede har i databasen, kan du vel finde i dine logfiler. Der må komme en fejl retur
Ja, man kunne naturligvis også sende et aktiveringslink. Jeg hæfter mig dog stadig ved hvordan et JS kan kombineres med ASP-kode i forhold til true/false
Så tror jeg, hverken Kjeldsted eller jeg forstår, hvad du vil. Når den pågældende kodestump er afviklet, skal mailen sendes - enten ved et form-post/sideskift eller ved hjælp af Ajax. Hvis du ikke vil sende mailen, må du fortælle, hvad det så er, du vil
Men som sagt forkaster din kode valide adresser - men lader alle stave- og andre fejl slippe igennem. Spørgsmålet er derfor, om det overhovedet er en god løsning =)
Situationen er jo den, at du liiiige skal læse hvad spørgsmålet egentligt er. Jeg takker for den tid du bruger, men det hjælper os begge hvis du ønsker at læse spørgsmålet.
Det jeg har brug for HERINDE handler ikke om at sende en email. Det handler, som overskriften så fint siger det, om at validere en email-adresse.
Desuden har jeg sagt, at jeg ønsker at gemme den skrevne email i databasen vha. asp. Det er jo JS som validerer mailen og derfor ved jeg ikke hvordan jeg får indlemmet ASP.
At sende mailen er intet problem. Mit problem er hvordan man indlemmer ASP i JS, når mailen skal gemmes umiddelbart efter valideringen.
Jamen, jeg har skam læst spørgsmålet, men det giver ikke mening. Du kan ikke 'blande ASP' ind i JavaScript kode. Derfor foreslår vi dig, hvad du faktisk kan gøre =)
Et andet aspekt i diskussionen om den måde du validere på (havde ikke lige nærlæst din regex før) er at du faktisk udelader en lang række af tegn som er 100% gyldige til brug i e-mail adresser. Ganske vist siger min erfaring mig at man skal passe på med at benytte disse, da der findes mange webprogrammørere der pisser lidt på hvad en gyldig e-mail er. Jeg havde en gang en mail med adressen #@kjeldsted.dk og den virkede som sådan ganske fint (den var så oprettet lidt for sjov). Dog måtte den stort set ikke bruges nogen steder i nyhedsbreve og sådan fordi de fleste programmørere betragtede den som ugyldig. Og da one.com så skiftede webmail system, kunne jeg til sidst heller ikke logge ind til den, da deres nye system påstod, at adressen er ugyldig (selvom den dog stadig findes). Så hopper du med på vognen og tjekker blot om den indeholder bogstaver og tal, ja, så skiller du dig jo ikke ud fra mængden. Men det er altså en fejl i mine øjne. Så den mest korrekte løsning af den #0 og så Oleboles forslag er at tjekke om der er et @ og et . Og jeg vil nok tro at der bliver sendt rigtig mange nyhedsbrevet til fx. a@a.aa. Og så er vi jo lige vidt. Eller skal du tjekke for (.*@.*\.w{2,4})
Og nu har jeg lige skimmet jeres indlæg igennem. Men fik jeg nogensinde svar på spørgsmålet i #6? Det bliver en meget lang kamp hvis ikke du har 100% styr på hvordan serverside og clientside sprog fungere hvis du skal få disse til at snakke sammen.
Næste beslutning ligger så i om du normalt bruger jQuery, eller kun ren JS. jQuery har nogle Ajax funktioner, men det kan også sagtens skrives i "ren JS". Det er blot hvad man selv synes bedst om.
> Kender du godt til hvordan det hænger sammen med ASP og JS. Altså hvordan de to sprog fungere?
At blande ASP og JS kender jeg intet til, men at skrive koderne hver for sig kender jeg til.
Selvfølgelig kan man via. asp og en frame (så hele siden ikke opdateres) gå ind og tjekke om der er punktum og snabel-a i det skrevne felt, men så vidt jeg er orienteret er det i forhold til sql-injections ikke særlig sikkert - derfor bruger langt de fleste JS til at sikre en korrekt email. Det er hvad jeg har læst, og derfor er jeg gået den vej :)
Der er formodentlig ingen, som validerer en e-mail-adresse gennem en frame - og hvis der var, ville det på ingen være en trussel i forbindelse med SQL-injections.
Normalt ville man validere på denne måde:
<script type="text/javascript"> function validate(frm) { if (frm.email.value=="") { alert("Du skal udfylde email"); frm.email.focus(); return false; } if (frm.email.value.indexOf("@")<0 || frm.email.value.indexOf(".")<0) { alert("Skriv en gyldig email"); frm.email.focus(); return false; } return true; } </script>
Øøhh... nu læser du igen ikke hvad jeg skriver! :)
"Selvfølgelig kan man via. asp og en frame (så hele siden ikke opdateres)"
Du kan ikke afvikle ASP på en side således at det opdateres uden at du skal opdatere siden. Det kan man med JavaScript, og derfor nævnte jeg ASP og en frame i samme tegn - det er jo slet ikke den vej jeg i starten ville gå, da jeg ville have javascript til at validere og asp til at gemme... men de to kan åbenbart ikke arbejde sammen. Så må jeg tage fat i Ajax, som I har nævnt, men du ved vel ikke hvordan man forbinder Ajax med ASP... ellers havde du vel skrevet det :)
Jeg må altså indrømme at jeg ikke er overbevist om at du har 100% styr på serverside og clientside programmering. No offence. Desuden er jeg heller ikke helt med på om dig valg af Ajax blot er en tilfældighed. I #4 nævnte jeg vist tre forskellige løsningsforslag hvor det ene var Ajax. Det andet var som Ole skriver i #20. Løsningen med Ajax kræver jo ikke kun at lave en request fra klienten til serveren, men også at klienten jo så skal reagere efter svar fra serveren og dynamisk ændre indholdet hvis formen ikke skal vises efter den er submittet. Ikke fordi alt det der er meget komplekst, men det kræver en forståelse for JavaScript, samt serverside og clientside programmering.
#21 Undskyld, men jeg har svært ved at finde ud af, om du ved noget om webudvikling. Under alle omstændigheder, så er det ikke nødvendigt at bruge hverken en frame eller Ajax for at validere en e-mail-adresse uden opdatering af siden.
Sideskiftet kommer først i det øjeblik, formen submittes - altså når mailen sendes. Selve valideringen er jo JavaScript og skifter ikke noget
Jeg har jo sagt mange gange, at jeg skal gemme den skrevne email i min database ved hjælp af ASP.
Så hvordan vil du kode i ASP således at siden ikke opdateres?
Det jo bare ét felt hvori mailen skrives også klikker man ok og er det en ugyldig mail får man besked og ellers siger den mailen er gemt.
Jeg ved jo godt at man i Javascript ikke behøver at skifte/opdatere siden. Men som skrevet mange gange - mailen SKAL gemmes via. asp. Så hvordan vil du klare, at gemme noget i ASP uden at opdatere/skifte siden?
Nu har jeg fire-fem gange spurgt om du har styr på serverside/clientside. Jeg må formode at det er et nej, siden du ikke kommentere det. Og i så fald bør du ikke skrive Ajax, men i stedet få JS til at validere mailen og så submitte formen.
"Så må jeg tage fat i Ajax, som I har nævnt, men du ved vel ikke hvordan man forbinder Ajax med ASP... ellers havde du vel skrevet det :)" >> Vi er åbenbart to, der er for dumme til at forstå dig. Så må det være sådan!
Hehe... Jeg sidder og griner lidt... I snakker rigtig meget men på intet tidspunkt har I kommet med et reelt svar.
1: Skal jeg bruge Ajax? Hvordan skal jeg forbinde ASP og Ajax?
2: Skal jeg bruge JS? Hvordan skal jeg forbinde ASP og JS?
3: Skal jeg kun bruge ASP? Jamen så kan olebole ifølge ham selv gøre det uden at hele siden skal opdateres - kun ved hjælp af ASP.
4: Kjeldsted du skrev til sidst: "Og i så fald bør du ikke skrive Ajax, men i stedet få JS til at validere mailen og så submitte formen."
Se hvad du skriver: Også submitte formen. Heheheheheheheheh jamen igen...... hvordan skal den gemme mailen vha. asp i min database, når den valideres i js?
Jeg vil nok anbefale dig at lave en løsning i ren ASP. Vi kommer nok ikke videre med dette. Ole har serveret et svar for dig på et sølvfad, som du efterspørger. Og hvis jeg kender Ole godt nok, kan jeg fortælle at hverken jeg heller han vil made dig med en sølvske med den løsning der er blevet serveret.
Men altså, når du intet ved om serverside/clientside bør du nok gøre det så absolut simpelt som overhovedet muligt.
Og som svar på 4 i #27, kan jeg kun svare dig at før du begynder at lege med serverside programmering bør du nok lære at forstå grundlæggende WEB programmering.
- og jeg har arbejdet professionelt med Ajax i 13 år (fra 5 år før, teknikken fik sit navn), så det er nok ikke Ajax-delen, der giver problemer *o)
Problemet for både Kjeldsted og mig har været at forstå, hvad du skriver. Tager man mine 5.000 besvarelser af spørgsmål på Ekeperten i betragtning, synes det ikke at være et generelt problem ... tværtimod! Så må du selv finde ud af, hvad du mener, problemet er =)
Da du åbenbart også er træt af tråden, kan du bare selv lægge et svar og acceptere, så tråden lukkes
Hvor mange besøgende du har er jeg nu fuldstændig ligeglad med, søde ven. Det siger INTET om din viden. Derimod har du bevist i denne tråd at du ikke har nok viden om webprogrammering til at kunne forstå og besvare simple spørgsmål, og til at kunne formulere dig så vi kan forstå dig.
Men start med at undersøge hvordan serverside- og clientsideprogrammering hænger sammen. Når du har fået en forståelse for dette kan du måske begynde at se på noget der er lidt mere komplekst.
35 indlæg og intet reelt svar. Jeg lukker og slukker - og desværre har I bare spildt min tid.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.