Ga naar inhoud

php vraag


anoniem

Aanbevolen berichten

Ik bedoel dit zo werkt het goed if (strrpos($email,'hotmail') > 0) $stop = "<center>".translate("ERROR: Sorry! Invalid email!")."</center>"; if (strrpos($email,'freemail') > 0) $stop = "<center>".translate("ERROR: Sorry! Invalid email!")."</center>"; Maar zo niet want dan blockt hij alles ook wat er niet in staat. if (strrpos($email,'hotmail') > 0) $stop = "<center>".translate("ERROR: Sorry! Invalid email!")."</center>"; if (strrpos($email,'freemail') > 0) $stop = "<center>".translate("ERROR: Sorry! Invalid email!")."</center>"; if (strrpos($email,'yahoo') > 0) $stop = "<center>".translate("ERROR: Sorry! Invalid email!")."</center>"; if (strrpos($email,'msn') > 0) $stop = "<center>".translate("ERROR: Sorry! Invalid email!")."</center>";
Link naar reactie
[quote:90d3cb6146="Remytje"]Werkt dit echt? Ik mis wat '{}'...[/quote:90d3cb6146]Zolang je één commando na een if (else etc ook natuurlijk) gebruikt, hoef je geen accolades te gebruiken. Sony: check de [url=http://www.php.net/manual/en/function.strrpos.php]manual[/url], volgens mij vergelijk jij verkeerd... [edit]Typo's...[/edit]
Link naar reactie
De functie strrpos volgens [url=http://www.php.net/strrpos]php.net[/url] :): [quote:4d1eb8ab5c]Returns the numeric position of the last occurrence of needle in the haystack string. Note that the needle in this case can only be a single character. If a string is passed as the needle, then only the first character of that string will be used.[/quote:4d1eb8ab5c]Oftewel: Zodra je een string meegeeft zal alleen het eerste 'teken' vergeleken worden. Dus als je als $email al de waarde "piro@himalayah.com" zou hebben, is de waarde al > 0 (5 in dit geval). Zowiezo kun je beter iets anders verzinnen, want als je email adres bijvoorbeeld al met "[b:4d1eb8ab5c]msn[/b:4d1eb8ab5c]atuurlijk@jp.nl" zou beginnen, wordt het ook al afgewezen :).
Link naar reactie
[quote:105fc0748e="Bill Gates"]Je zou inderdaad beter kunnen checken op "@hotmail", dat zal beter werken...[/quote:105fc0748e] Klopt dat is dus de fout hij kijkt alleen naar de letters en niet alleen naar hele naam. shit iemand een idee hoe dat zo aan te passen is ? veder werkt hij erg goed alleen hij moet de helenaam pakken en niet alleen de letters.
Link naar reactie
Allereerst zou ik het emailadres controleren op geldigheid door het op te slaan in bijv. $adres en het te controleren met[code:1:07608d017b]if (eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $adres)){ ... // Adres is geldig. }[/code:1:07608d017b]Vervolgens wil je de code controleren op het bestaan van een string, dat kan je waarschijnlijk het berste doen met ereg(), of beter nog; met eregi(), aangezien deze geen rekening houdt met hoofdletters, wat in het geval van emailadressen ook niet interessant is. Op de plek waar boven staat "..." zou je dus het volgende kunnen plaatsen:[code:1:07608d017b] if (eregi("@hotmail.",$adres)){ ... // Stel een variabele in die jou vertelt dat het geblokkeerd moet worden } elseif (eregi("@freemail.",$adres)){ ... // Stel een variabele in die jou vertelt dat het geblokkeerd moet worden } // Enzovoorts...[/code:1:07608d017b]Ik heb deze code niet getest, maar met de handleiding van PHP.net ernaast moet je hiermee toch een heel eind komen. Succes ermee! - Basje.
Link naar reactie
[quote:459ab9ca2f="BasHamar"]Allereerst zou ik het emailadres controleren op geldigheid door het op te slaan in bijv. $adres en het te controleren ...[/quote:459ab9ca2f] .info adressen slikt 'ie niet [quote:459ab9ca2f="BasHamar"]Vervolgens wil je de code controleren op het bestaan van een string, dat kan je waarschijnlijk het berste doen met ereg(), of beter nog; met eregi(), aangezien deze geen rekening houdt met hoofdletters, wat in het geval van emailadressen ook niet interessant is. [/quote:459ab9ca2f]Zijn strpos() en/of stristr() niet geschikter? Heb het nooit getest maar een simpele string search lijkt me sneller dan een regexp, als ik fout zit hoor ik het wel :)
Link naar reactie
[quote:dd17ff4894="Annie"].info adressen slikt 'ie niet[/quote:dd17ff4894]Sorry, mijn fout... Al die veranderingen op internet ook... ;) Het moet dus zijn:[code:1:dd17ff4894]if (eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $adres)){ ... // Adres is geldig. }[/code:1:dd17ff4894] [quote:dd17ff4894="Annie"]Zijn strpos() en/of stristr() niet geschikter? Heb het nooit getest maar een simpele string search lijkt me sneller dan een regexp, als ik fout zit hoor ik het wel :)[/quote:dd17ff4894]Hmmm... Misschien heb je wel gelijk, maar ik werk altijd graag met eregi(), weet eigenlijk ook niet waarom. Dussuh, sony: de code is voor verbetering vatbaar, aan jou om dat zelf uit te zoeken. :D - Basje.
Link naar reactie
tuurlijk moet je hier strpos gebruiken, een regular expression voor een simpele string is nogal overkill. Misschien met heel veel adressen die je wil checken, maar dan nog... en als je dan toch regexps wilt gebruiken, dan kun je beter met de preg variant in php werken. De werking verschilt niet veel (behalve dat deze veel dichter tegen perl aanligt, waar ik persoonlijk bekender mee ben) maar is wel sneller dan de ereg methode.
Link naar reactie
[quote:99d264d5fb="BasHamar"]Ok, ff een vraagje tussendoor aan Jurriaan R... Stel ik heb een pagina met daarop alleen 100 regexps zoals hierboven en ik vervang die door strpos, enig idee hoeveel sneller dat zou zijn? Ongeveer uiteraard, maar in welke orde moet ik dan denken? [/quote:99d264d5fb] kan je daarvoor geen testpaginaatje schrijven? 1. begintijd bepalen 2. stukje code tig keer uitvoeren 3. eindtijd bepalen 4. verschil is de verstreken tijd en dat kan je dan uitvoeren voor de regexp en de strpos (en evt. met verschillende strings: bjiv. lang/kort, veel/weinig matches)
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...