Avatar billede htx98i17 Professor
25. maj 2016 - 16:56 Der er 9 kommentarer og
2 løsninger

input:valid

http://www.w3schools.com/cssref/tryit.asp?filename=trycss_sel_valid

Her kan man afprøve.

I min browser, safari 9.1.1 på macbook vil den acceptere noget@noget som en gyldig emailadresse. Dvs uden .dk etc.

Gør den også det hos jer og kender nogen til årsagen herfor?
Avatar billede erikjacobsen Ekspert
25. maj 2016 - 22:30 #1
Det er fordi sådan en emailadresse formelt er lovlig. Ikke på det store Internet, men på et lokalnetværk, hvor en maskine godt kan hedde "noget".

Under alle omstændigheder bør du efterfølgende kontrollere den een gang til - helst på serveren.
Avatar billede htx98i17 Professor
25. maj 2016 - 22:42 #2
det var da gidt nok usmart. ubrugelig funktion så.

findes der er validering i prepared statements til mysqli?
Avatar billede Slater Ekspert
26. maj 2016 - 07:56 #3
Validering til hvad? Det er en korrekt e-mail-adresse, så det lyder som om du vil have en validering der er skrappere end det. Og det giver sig selv, det må du selv skrive.

E-mail-adresser er et meget tilgivende format. Mange ting, vi ikke tænker over til dagligt, er gyldige adresser. F.eks. mail@12.34.56.78
eller "hej med dig"@mail.com er gyldige.

Hvis du ikke vil godkende dem, er det desværre dit "problem".
Avatar billede olsensweb.dk Ekspert
26. maj 2016 - 12:55 #4
>Under alle omstændigheder bør du efterfølgende kontrollere den een gang til - helst på serveren.
alle bruger input skal valideres serverside for din sikkerheds skyld (du kommer langt med Prepare Statement), og gerne client side for brugeres skyld

>findes der er validering i prepared statements til mysqli?
nej, der indsætter du som Integer/String/Double/Blob ikke om det er en valid email.
jeg tror et rigtige er at bruge et regulært udtryk, eller bruge filter_validate_email / filter_var, gerne kombineret med Prepare Statement

du kunne også overveje at validere serverside med ORM
feks https://idiorm.readthedocs.io/en/latest/


google
https://www.google.dk/search?q=regex+email+validation+php
https://www.google.dk/search?q=regex+email+validation
https://www.google.dk/search?q=filter_validate_email


link om filter_validate_email
http://php.net/manual/en/function.filter-var.php se eks 1
http://php.net/manual/en/filter.filters.validate.php
http://www.w3schools.com/php/filter_validate_email.asp

link om email validering med regexp
http://www.regular-expressions.info/email.html
http://emailregex.com/
http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address
Avatar billede Slater Ekspert
26. maj 2016 - 13:40 #5
filter_validate_email er rigtig dårlig at bruge, da den ikke understøtter internationale domænenavne (med mindre det er kommet i PHP7).

Men generelt er der ingen grund til at validere e-mails. Hvis folk ønsker at indtaste en forkert, kan de altid det. Den eneste grund til validering er som en hjælp, hvis brugeren har misforstået feltet og indtastet noget helt andet, f.eks. sit navn - og så er det rigeligt at teste for, om der eksisterer et @ i e-mailen.
Avatar billede htx98i17 Professor
26. maj 2016 - 20:21 #6
At acceptere emailadresser der kun kan bruges på et lokalnetværk, kan jo ikke bruges til noget på en internetside.

Man kan altid indtaste en forkert emailadresse hvis man ønsker det.
Men ønsker man det ikke og er det vigtigt at man har skrevet rigtigt første gang (for ikke at vente forgæves på en ordrebekræftelse eller aktiveringslink etc.), så kunne det være smart at validere på minimumskravene til en emailadresse der kan bruges på en internetside.

Eksempelvis kunne tjekkes for

fornavn
@
domæne
et TLD
whitespace
specialtegn som ikke accepteres

Der er nok mere...


Jeg tror det kan bedst kan overskue er regulære udtryk client side og serverside.

Vil en STRING i prepared statement acceptere bindestreg, underscore og snabel etc?
Hvis ja, hvad accepterer den så ikke?
Avatar billede olsensweb.dk Ekspert
26. maj 2016 - 21:12 #7
>Jeg tror det kan bedst kan overskue er regulære udtryk client side og serverside.
lyder som en god ide
du kommer selvføgelig et stykke med
<input type="email"...> og anden HTML 5 validering, så brug dette og regexp clientside, og følg op serverside med validering

<input type="email"...> virker kun onblur, så hvis du ikke haft focus i det felt, ville du heller ikke have fanget feltet er blankt


>Vil en STRING i prepared statement acceptere bindestreg, underscore og snabel etc?
ja så vidt jeg ved

>Hvis ja, hvad accepterer den så ikke?
ref
https://en.wikipedia.org/wiki/Prepared_statement
http://www.w3schools.com/php/php_mysql_prepared_statements.asp

Prepared statements are very useful against SQL injections, because parameter values, which are transmitted later using a different protocol, need not be correctly escaped. If the original statement template is not derived from external input, SQL injection cannot occur.


ref http://security.stackexchange.com/questions/73145/do-php-sqli-prepared-statements-need-special-character-escaping

There is no need to do extra checks if you are using a prepared statement with parameters. This is the industry standard for preventing SQL Injection in PHP.

With the example you provided you would be 100% protected (not 99.9%) from SQL Injection (at least based on what we know today, who knows what the future holds).

That said, there are circumstances where a parameterized prepared statement can still be vulnerable to SQL Injection, but to my knowledge these all involve the use of dynamic SQL which you aren't using here.
Avatar billede Slater Ekspert
26. maj 2016 - 21:23 #8
Det kan være fint at hjælpe folk, men du skal bare også passe på, at du ikke udelukker eller begrænser nogen.

Som sagt kræver en e-mail-adresse ikke et domæne, den kan godt indeholde whitespace (selvom det er så sjældent at det som regel kan ignoreres), og med ICANN's frigivelse af TLD'er, behøver det heller ikke længere et TLD. F.eks. er http://ac. et gyldigt FQDN.

Måske ville den bedste løsning være en Javascript-advarsel, der bare sagde "din e-mail ser underlig ud, er du sikker på den er korrekt?", hvis den var ud over det sædvanlige. Men hvor du lander på balancegangen mellem hjælp og begrænsning er naturligvis op til dig.

Personligt, med 10 års erhvervserfaring som webudvikler, plejer jeg aldrig at gøre mere end tjekke for eksistensen af et @ og et punktum. Hvis de er der, så har man hjulpet folk så meget det kan forventes, og uanset hvad får man ikke selv nogen garantier ud af det. Er det ekstra vigtigt at den tastes korrekt, er det som regel bedre at bede dem indtaste den to gange.
Avatar billede htx98i17 Professor
26. maj 2016 - 21:44 #9
tak begge to, I skal ligge et svar

God ide med at skrive emailadressen to gange! Det er i virkeligheden det eneste der skal til for at nå målet, med mindre folk copy/paster.
Avatar billede Slater Ekspert
27. maj 2016 - 14:24 #11
Så gerne, tak.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester