Avatar billede webweaver Praktikant
26. februar 2005 - 19:28 Der er 9 kommentarer og
1 løsning

Min. længde på et kodeord i en form

Hej igen herinde. Hehe... Jeg har en form, som skal validere, og jeg vil gøre sådan så den tjekker om kodeord mindst er 4 tegn langt. Min kode ser sådan her ud:

$showform = true;
       
        if (isset($_POST['skriv'])) {
       
        $ip = $_SERVER["REMOTE_ADDR"];
       
        $kodeord = $_POST[kodeord];
        $kodeord2 = $_POST[kodeord2];
       
        $kodeord_kryp = md5($kodeord);
        $kodeord2_kryp = md5($kodeord2);
       
        $birthday = $_POST[birthday1] .' - '. $_POST[birthday2] .' - '. $_POST[birthday3];
       
        $query = mysql_query("SELECT 1 FROM `Profil` WHERE `brugernavn` LIKE '{$_POST[brugernavn]}'", $db);
        $brugernavn_optaget = mysql_num_rows($query);
       
        if ($brugernavn_optaget != 0) {
        echo "<ul><li><p class=\"profilopret_error\">Brugernavnet <i>", $_POST[brugernavn],"</i> er allerede i brug.</p></li></ul>";
        $showform = true;
        }
       
        if (strlen($kodeord && $kodeord2) < 4) {
          echo "<ul><li><p class=\"profilopret_error\">Dit kodeord skal være mindst 4 tegn langt.</p></li></ul>"; 
        $showform = true;
        }
               
        if ($kodeord_kryp != $kodeord2_kryp) {
        echo "<ul><li><p class=\"profilopret_error\">De to kodeord matcher ikke hinanden.</p></li></ul>";
        $showform = true;
        }
                               
        if ($kodeord_kryp == $kodeord2_kryp and $kodeord && $kodeord2 >= 4 and $brugernavn_optaget == 0) {
        mysql_query("INSERT INTO Profil (brugernavn, kodeord, kodeord2, fornavn, efternavn, nickname, birthday, email, mobil, msn, icq, city, adresse, adresse2, telefon, postnr, gender, land, dato, ip) VALUES ('$_POST[brugernavn]','$kodeord_kryp','$kodeord2_kryp','$_POST[fornavn]','$_POST[efternavn]','$_POST[nickname]','$birthday','$_POST[email]','$_POST[mobil]','$_POST[msn]','$_POST[icq]','$_POST[city]','$_POST[adresse]','$_POST[adresse2]','$_POST[telefon]','$_POST[postnr]','$_POST[gender]','$_POST[land]',NOW(),'$ip')") or die(mysql_error());
        echo "<p class=\"text-style\" align=\"center\"><br><br>Du er nu oprettet i systemet...</p>";
        $showform = false;
        }
        }
       
        if ($showform) {
       
        ?>

Men jeg kan desværre ikke få det at virke. Den registrerer det ikke ordentligt. Så jeg håbede på I kunne hjælpe mig. Jeg ved ikke om jeg skal have fat i noget function checkLengt?

Tak for hjælpen! :D

Mvh. Lasse Jensen
Avatar billede coderdk Praktikant
26. februar 2005 - 20:01 #1
if (strlen($kodeord) < 4 && $kodeord2 != $kodeord) {
  if (strlen($kodeord) < 4) {
      echo "<ul><li><p class=\"profilopret_error\">Dit kodeord skal være mindst 4 tegn langt.</p></li></ul>";
  }
  else {
      echo "<ul><li><p class=\"profilopret_error\">De to kodeord matcher ikke hinanden.</p></li></ul>";
  }
  $showform = true;
}
Avatar billede coderdk Praktikant
26. februar 2005 - 20:01 #2
Og så drop dine to separate if statements
Avatar billede webweaver Praktikant
27. februar 2005 - 00:20 #3
Nej desværre denne kode den kan ikke bruges på den måde, fordi den er lavet sådan at den kun melder fejl hvis de 2 kodeord ikke er ens. Hvis de 2 kodeord er ens og kun 2 bogstaver lange fx, så melder den ikke fejl. Hvor imod hvis koderne ikke er ens, og 2 bogstaver lange, så kommer den med en besked om det mindst skal være 4 tegn langt. Så der er en eller ting der lige skal ændres. Beskeden om det mindst skal være 4 bogstaver langt, skal jo komme ligemeget om de 2 koder er ens eller ej.
Avatar billede coderdk Praktikant
27. februar 2005 - 11:03 #4
Lav din if om så:

if (strlen($kodeord) < 4 || strlen($kodeord2) < 4) {
Avatar billede coderdk Praktikant
27. februar 2005 - 11:05 #5
Men det er jo omsonst at give besked om at koden skal være 4 lang hvis de to ikke er ens, hvad ville din fejl så være "Kodeordet i 'gentag kode' skal være mindst fire tegn"?
Avatar billede webweaver Praktikant
27. februar 2005 - 11:54 #6
Nej, der skal self. ikke være nogen fejl i Gentag kodeordet, det er nok bare for den øverste. Hehe...
Avatar billede webweaver Praktikant
27. februar 2005 - 12:01 #7
Men jeg kan nu ikke se, hvorfor der ikke burde komme fejl hvis de 2 kodeord er ens med stadig for korte, som du synes er omsonst? Det virker da helt forkert efter min mening.
Avatar billede webweaver Praktikant
27. februar 2005 - 20:25 #8
Lav din if om så:

if (strlen($kodeord) < 4 || strlen($kodeord2) < 4) {

-------------

Ja det er jo meget godt, men det løser jo ikke rigtig den ting som jeg nævnte. Den vil stadig ikke komme med nogen fejl besked hvis de 2 kodeord er ens men under 4 tegn.

For det skal virke korrekt, skal det være noget ala:

if (strlen($kodeord) < 4 && $kodeord2 != $kodeord && $kodeord == $kodeord2) {
.....


Men det virker bare ikke. Men kan desværre ikke gøre det på den måde... Men hvilken så?

Mange tak for hjælpen! :D

Mvh. Lasse Jensen
Avatar billede coderdk Praktikant
27. februar 2005 - 20:34 #9
if (strlen($kodeord) < 4 ) {
  echo "<ul><li><p class=\"profilopret_error\">Dit kodeord skal være mindst 4 tegn langt.</p></li></ul>";
  $showform = true;
}
if ( $kodeord2 != $kodeord) {
  echo "<ul><li><p class=\"profilopret_error\">De to kodeord matcher ikke hinanden.</p></li></ul>";
  $showform = true;
}
Avatar billede webweaver Praktikant
01. marts 2005 - 01:40 #10
Okay hehe, det er bare lidt sjovt at se, fordi det er stort set det samme som vi startede med hvis du kigger i koden der er postet øverst.. Men nu har jeg fået det til at virke på en lidt anden måde...
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester