Lurifaksen Skrevet 5. august 2006 Del Skrevet 5. august 2006 (endret) Problemstillingen er den klassiske: Variabler lages ut i fra det brukeren fyller ut i skjemaet. Dersom et felt ikke er fyllt ut, skal et eller annet skje. Hva bruker jeg da? Eksempel: $navn = $_POST['navn']; if(xxx) echo "Navn er ikke fyllt ut"; xxx kan her være: empty($navn) eller !isset($navn) eller $navn =="". Jeg mener å ha lest at isset vil bli true i dette tilfellet, fordi variablen er satt, selv om den er "". Min erfaring er derimot en annen - jeg bruker egentlig alle tre variantene uten å ha merket problemer. Men jeg vil altså rydde all tvil bort, og finne ut hvilken er mest riktig å bruke? Merk at jeg ikke spør på generelt grunnlag - men i denne nøyaktige problemstillingen: Skjemabehandling hvor $POST (evt get) brukes. Jeg spør heller ikke hva som fungerer, så vidt meg bekjent fungerer alle 3 i de fleste tilfeller. Endret 5. august 2006 av Lurifaksen Lenke til kommentar
dabear Skrevet 5. august 2006 Del Skrevet 5. august 2006 (endret) empty skal du bruke i dette tilfellet. isset sjekker bare om en variabel er satt, empty returnerer sant dersom variabelen ikke er satt eller er satt og har ingen innhold. Direkte sammenlikning bør du unngå, da du skaper feilmeldinger dersom variabelen (eller arraynøkkelen) ikke er satt. Likevell, dette ser du som oftest ikke, da notices er skrudd av på mange servere. error_reporting(E_ALL) øverst, så ser du dette. Det beste vil vel være å bruke filters, evt egenlagde funksjoner. som fks: $retcode = validate_form($_GET, array('navn'=> '!empty')); if($retcode == 1) { // valid } elseif($retcode == -1) { //feil } else { //spytt ut form } Dette skaper jo litt overheat, men er veldig praktisk om du holder på med flere prosjekter. Implementasjonen får du stå for sjøl iallefall, call_user_func, substr/explode etc er greie funksjoner å ta en titt på. Endret 5. august 2006 av dabear Lenke til kommentar
PHPdude Skrevet 6. august 2006 Del Skrevet 6. august 2006 $navn = $_POST['navn']; if(xxx) echo "Navn er ikke fyllt ut"; 6620625[/snapback] Jeg ville ha skrevet det sånn: <?php $name = !empty($_POST['navn']) ? $_POST['navn'] : false; if(!$name) { echo "Du glemte å fylle ut navnet ditt!"; } ?> Synes det blir den mest ryddige måten å gjøre det på også hindrer det at det kommer noen E_NOTICE error dersom variabelen ikke er satt 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å