skidd Skrevet 22. august 2014 Del Skrevet 22. august 2014 Hei. jeg har en side der man har to felt, ene er navn og andre feltet skal det inn en URL adresse, hvis ikke der står http:// før selve adressen så fungerer ikke linken/får feilmelding, er der en kontrollfunksjon i PHP som sjekker om det ble lagt inn i feltet, og hvis ikke man finner det så blir det lagt på plass automatisk? hvis jeg formulerer litt feil slik dere ikke forstår så skal jeg prøve på forklare det på en annen måte. takk for svar. Lenke til kommentar
cronbach alpha Skrevet 22. august 2014 Del Skrevet 22. august 2014 Har ikke så mye PHP under mitt belte, men dette er vell et problem som javascript kan løse. Går ut ifra at det er snakk om input fra bruker, lag et script som tar i mot data som har blitt lagt inn og sjekker om http:// er lagt til forran. Med dette kan du enten returnere til bruker at http:// må legges inn eller at scriptet gjør det selv. Lenke til kommentar
Runar Skrevet 22. august 2014 Del Skrevet 22. august 2014 Det er ikke nødvendig å bruke JavaScript til dette da PHP har en funksjon, parse_url, som kan brukes i nettopp slike situasjoner. Her er løsningen på problemet ditt, hentet fra denne nettsiden: if ( $ret = parse_url($url) ) { if ( !isset($ret["scheme"]) ) { $url = "http://{$url}"; } } Lenke til kommentar
Dan-Levi Skrevet 23. august 2014 Del Skrevet 23. august 2014 (endret) Det er ikke nødvendig å bruke JavaScript til dette da PHP har en funksjon, parse_url, som kan brukes i nettopp slike situasjoner. Her er løsningen på problemet ditt, hentet fra denne nettsiden: if ( $ret = parse_url($url) ) { if ( !isset($ret["scheme"]) ) { $url = "http://{$url}"; } } Prøv å gi denne funksjonen et bogus scheme og den vil allikevel godta det som et scheme. Måten jeg kanskje ville gjort det på var å sjekke om scheme var et kjent scheme, og om det er det så er går url gjennom valideringen. Noe sånt kanskje? <?php $url = "http://www.google.com"; if(Check_URL_Scheme($url) !== false) { echo "<strong>" . $url . "</strong> har en ordning/protokoll som er gjenkjent og blir derfor behandlet som gyldig."; } else { echo "<strong>" . $url . "</strong> har ikke en gjenkjennbar ordning/protokoll og blir derfor behandlet som ugyldig"; } function Check_URL_Scheme($url) { // Hvis parsing er vellykket if ($ret = parse_url($url)) { // Hvis det finnes noe under scheme if (isset($ret['scheme'])) { // Switch som sammenligner med kjente ordninger/protokoller // Om ordningen er en av casene som er satt opp så er den gjenkjent switch ($ret['scheme']) { case 'https': case 'http': case 'ftp': return true; default: return false; } } else { return false; } } } Edit: Fjernet breaks i switch statement da de aldri blir nådd. Endret 23. august 2014 av JanTerjeRiisOttoJohansen Lenke til kommentar
Crowly Skrevet 23. august 2014 Del Skrevet 23. august 2014 Break'ene i den switchen er unødvendig, de blir aldri nådd, og det kan gjøres enklere med fall through switch ($ret['scheme']) { case 'https': case 'http': case 'ftp': return true; default: return false; } Lenke til kommentar
Dan-Levi Skrevet 23. august 2014 Del Skrevet 23. august 2014 (endret) Break'ene i den switchen er unødvendig, de blir aldri nådd, og det kan gjøres enklere med fall through switch ($ret['scheme']) { case 'https': case 'http': case 'ftp': return true; default: return false; } Hei! Det har du absolutt helt rett i! Endret svaret mitt, takk! Endret 23. august 2014 av JanTerjeRiisOttoJohansen Lenke til kommentar
skidd Skrevet 25. august 2014 Forfatter Del Skrevet 25. august 2014 Takk til alle sammen for god hjelp, dette ordnet problemet mitt, nå slipper jeg å tenke mer på den delen ;-) 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å