Jeg har en formular som før afsendelse gennemgår en masse valideringer, men til sidst skal jeg have tjekket om brugernavnet allerede er optaget eller ej, self. ved kald til databasen...
Forspørgsel skal være noget med: if(isset($_POST['opret'])) { $query = mysql_query("SELECT * FROM it_stud_bruger WHERE stud_bruger='$bruger'");
martin1000ben: Der er utrolig mange felter, så det vil sige jeg skal sætte alle value til dette $_POST["felt"]' ...selvfølgelig specificeret til det enkelte felt!?
anyway - du har garanteret allerede en masse i ren html
<input type='text' name='...'>
så er det bare at copy/paste name og skrive value istedet for name og smide et $ ind foran nu hvor du alligevel laver (unødvendigt) alle $_POST om til $... alligevel
ahh... må jeg hellere få lavet, altså således at der ikke kan komme noget fjendtligt indhold, right? Nu er det heldigvis kun til at projekt, men vil jo være godt nok at kunne argumentere for... Kan du måske lave det?
Hvad med bare at lave det i samme fil, fremfor poste sin formulars indhold ind i en anden fil? Derved vil du lettere kunne åbne for muligheden, men samtidig også stadig kunne bevare "sikkerheden" ved ikke bare at kunne trykke "Opdater" og så gensende dataerne.
//check at alle elementer med id="validate" er udfyldt
elements = myForm.elements; for (i=0;i<elements.length;i++){ elm = elements[i]; if( elm.id == "validate" && blankReg.test( elm.value ) ){ alert( elm.felt + " skal udfyldes"); elm.focus();
return false; } }
//check at Pass1 er gyldigt
elm = myForm.pass1; if( !passReg.test( elm.value ) ){ alert("Password skal være mindst 6 tegn langt og må kun indeholde tegnene a-z"); elm.focus();
return false; }
//check at brugernavn er gyldigt
elm = myForm.bruger; if( !brugernReg.test( elm.value ) ){ alert("Brugernavnet skal være mindst 5 tegn langt og må kun indeholde tegnene a-z"); elm.focus();
return false; }
//check at Pass1 og Pass2 er ens
elm = myForm.pass2; if( elm.value != myForm.pass1.value ){ alert("De indtastede passwords er ikke ens!"); elm.focus();
cpfrande: Hvorfor? Denne virker præcis som den skal, hvis brugernavnet allerede eksisterer fremkommer der en alert og man bliver sendt tilbage til formularen uden at dataerne er slettet
mulles.tk: Ja, men det er så bare ikke i alle browseren, at den bevare dataerne. Det er ikke god programmeringsskik :-)
Desuden er JavaScript ikke det eneste, man skal have som kontrol! Det er usikkert, da man slå det fra i de fleste browsere, mens andre browsere slet ikke læser JavaScript. Du skal valider i PHP, hvis du vil holde dit script over et acceptabel sikkerhedsniveau.
// input.php <?php if(!isset($_POST["submit"])) { if(invalid_felt($_POST["navn"])) $fejl[] = "Du skal skrive et navn"; if(invalid_email($_POST["email"])) $fejl[] = "Du skal skrive en email"; if(!isset($fejl)) { $sql = mysql_query(" INSERT INTO tabel (navn,email) VALUES ( '".$_POST["navn"]."' , '".$_POST["email"]."' ) ") OR DIE (mysql_error()); print "Hurra nu har du oprettet en bruger"; exit; } }
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.