pumpel Skrevet 2. februar 2017 Del Skrevet 2. februar 2017 HeiJeg programmerer et påmeldingssystem vha PHP mot en MySQL-database.For å finne ulovlige tegn i mailadressen, benytter jeg følgende kode i PHP som altså sjekker innholdet i variabelen ’email’: if(!ereg(«^[A-Za-z0-9\.|-|_]*[@]{1}[A-Za-z0-9\.|-|_]*[.]{1}[a-z]{2,5}$», $verdi[’email’])): MEN så oppdager jeg at det blant tusener av mailadresser befinner seg EN med følgende mailadresse som blir stoppet av min ovennevnte koding.Mailadressen som har følgende oppbygging [email protected] , inneholder - som du ser, bindestreker. Og jeg tror feilen ligger i nettopp dette med bindestrek, MENJEG MAKTER IKKE å se hvor feilen ligger i ovennevnte kode.SPØRSMÅL:-Hva er det med min ovennevnte PHP-kode som medfører at bindestrekene i «[email protected]» feilaktig IKKE aksepteres? -Hva skal konkrer endres i mitt ovennevnte lille script? Jarlemail: [email protected] Lenke til kommentar
Gjest Skrevet 2. februar 2017 Del Skrevet 2. februar 2017 ereg er utdatert btw: http://php.net/manual/en/function.ereg.php This function was DEPRECATED in PHP 5.3.0, and REMOVED in PHP 7.0.0. Alternatives to this function include: preg_match() Anyhow, her er en RegEx som fungerer: ^[A-Za-z0-9\._-]*[@]{1}[A-Za-z0-9\._-]*[.]{1}[a-z]{2,5}$ Lenke til kommentar
andrew92 Skrevet 4. februar 2017 Del Skrevet 4. februar 2017 (endret) En DB klasse (MySQLi) jeg har skrevet. http://pastebin.com/5GyPTFHm Ligger eksempel på bruk av klassen øverst. Endret 4. februar 2017 av andrew92 Lenke til kommentar
0laf Skrevet 4. februar 2017 Del Skrevet 4. februar 2017 (endret) For å finne ulovlige tegn i mailadressen, benytter jeg følgende kode i PHP som altså sjekker innholdet i variabelen ’email’: Regex er i mange tilfeller feil verktøy for jobben, når det kommer til kontroll av e-post adresser så er dette allerede innebygget i PHP's filtere if ( filter_var($verdi["email"], FILTER_VALIDATE_EMAIL) ) { echo("alt okay"); } else { echo("ugyldig epost"); } Endret 4. februar 2017 av adeneo 1 Lenke til kommentar
pumpel Skrevet 4. februar 2017 Del Skrevet 4. februar 2017 ereg er utdatert btw: http://php.net/manual/en/function.ereg.php This function was DEPRECATED in PHP 5.3.0, and REMOVED in PHP 7.0.0. Alternatives to this function include: preg_match() Anyhow, her er en RegEx som fungerer: ^[A-Za-z0-9\._-]*[@]{1}[A-Za-z0-9\._-]*[.]{1}[a-z]{2,5}$ Denne RegEx fungerer, men den tillater ikke bindestrek. DET er fortsatt problemet. Lenke til kommentar
pumpel Skrevet 4. februar 2017 Del Skrevet 4. februar 2017 For å finne ulovlige tegn i mailadressen, benytter jeg følgende kode i PHP som altså sjekker innholdet i variabelen ’email’: Regex er i mange tilfeller feil verktøy for jobben, når det kommer til kontroll av e-post adresser så er dette allerede innebygget i PHP's filtere if ( filter_var($verdi["email"], FILTER_VALIDATE_EMAIL) ) { echo("alt okay"); } else { echo("ugyldig epost"); } Tusen takk! $FEILMAIL=(!(filter_var($verdi["email"], FILTER_VALIDATE_EMAIL) ) ); og kombinasjoner av ovennevnte setning, løser mitt problem. Den fungerer, og godtar fleksibelt det meste av lovlige tegn i emailadresser. Tusen takk! Lenke til kommentar
Dan-Levi Skrevet 25. oktober 2017 Del Skrevet 25. oktober 2017 (endret) En måte å vise kildekode til nettsider som ikke lastes dynamisk med javascript. $file = file('https://www.diskusjon.no/index.php?showtopic=324727&page=14'); foreach ($file as $line_num => $line) { echo "<span class='linenum'>".sprintf('%04d', $line_num)."</span><span class='line'>".htmlspecialchars($line)."</span><br>\n"; } Her er copy paste eksempel <html><head> <style> body { background-color: #1e1e1e; font-weight:bold; font-family:Consolas, "Courier New", monospace; white-space: nowrap; } .line { line-height:20px; font-size:18px; color: #569cd6; } .linenum { color: #545454; padding: 5px 10px; margin-right:10px; } </style></head><body><?php$file = file('https://www.diskusjon.no/index.php?showtopic=324727&page=14');foreach ($file as $line_num => $line) {echo "<span class='linenum'>".sprintf('%04d', $line_num)."</span><span class='line'>".htmlspecialchars($line)."<span><br>\n";}?> </body></html> Endret 28. oktober 2017 av Dan-Levi Lenke til kommentar
pumpel Skrevet 5. februar 2020 Del Skrevet 5. februar 2020 -I følgende kodeeksempel sjekkes/kontrolleres at 'registrator' har registrert inn i variablene det som kreves. Dette skjer FØR variabelinnholdet sendes inn til MySQL-basen. Ved f.eks. manglende og/eller feil innhold blir dette avdekket, og registrator blir bedt om å gå tilbake til skjemaet og korrigere i tråd med den/de feilmeldingene som programmet gir. -ETT tilfelle har jeg IKKE klart å skrive kode som fungerer:Variabelen 'mobil', skal kontrolleres for om den har blitt registrert med flere enn 8 tegn (blank medregnet). I så tilfelle skal det innenfor IF-setningen gis melding om dette.Jeg har uthevet i programmet nedenfor hvor nevnte IF-sjekk på antall tegn i variabelen 'mobil' skal utføres. Jeg er takknemlig om du ser på programmet og gir meg riktig koding i dette program-tilfellet: /* START funksjonen visskjema, som presenterer feilmelding på skjermen avhengig av hva som mangler eller er definert som feil*/ $verdi=$_POST; function visskjema($verdi) { ?> <FORM METHOD ="POST" ACTION="valider_paameld.php"> <? if(empty($verdi['fornavn'])): ?> mangler: <b>Fornavn</b> </br> <?endif?> <? if(empty($verdi['etternavn'])): ?> mangler: <b>Etternavn</b> </br> <?endif?> <? if(empty($verdi['mobil'])): ?> mangler: <b>Mobil-telefon</b> </br> <?endif?> <? if(antall tegn i variabelen ’mobil’ er større enn 8): ?> Feilmelding: <b>For mange tegn i mobil-nummeret. Max antall tegn er 8. </b> <?endif?> <? if (!( filter_var($verdi['email'], FILTER_VALIDATE_EMAIL) )): ?> feil........: <b>E-post-adressen inneholder ulovlige tegn </b> </br> <?endif?> osv osv. Lenke til kommentar
j-- Skrevet 5. februar 2020 Del Skrevet 5. februar 2020 9 minutes ago, pumpel said: ... Du trenger å se på strlen(), og comparison operators. Og det kan være en fordel å bruke trim() på mye av det som kommer inn fra brukere. Lenke til kommentar
pumpel Skrevet 5. februar 2020 Del Skrevet 5. februar 2020 j-- skrev (3 timer siden): Du trenger å se på strlen(), og comparison operators. Og det kan være en fordel å bruke trim() på mye av det som kommer inn fra brukere. Kodinga var enklere enn jeg først trodde. Slik kan dette f.eks. løses i mitt tilfelle: <? $mobilmax='11'; if(strlen(($verdi['mobil'])) > $mobilmax): ?> for mange tegn: <b>For mange tegn i ditt mobilnummer. MAX antall - inkl. mellomrom, er 11 </b> </br> <?endif?> Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå