creAtiive Skrevet 20. juli 2008 Del Skrevet 20. juli 2008 (endret) Jeg har litt problemer med brukerregistreringen jeg jobber med nå.. Feil meldingene vil ikke vises :s Kan dere se i koden min under å forklare meg hva jeg har gjort det feil ? <?php if(array_key_exists('registrer', $_POST)) { $brukernavn = $_POST['bruker']; $passord = $_POST['pass']; $passord2 = $_POST['passord2']; $email = $_POST['email']; $regdato = date("d, m, y || H:i:s"); $ip = $_SERVER['REMOTE_ADDR']; //brukernavn if(empty($brukernavn)) { $error['bruker'] = 'Du fylte ikke inn et brukernavn!'; } if(strlen($brukernavn) < 3) { $error['bruker'] = 'Brukernavnet må inneholde minst 3 tegn!'; } if(strlen($brukernavn) > 20) { $error['bruker'] = 'Brukernavnet kan ikke inneholde mer enn 20 tegn!'; } //passord if(empty($passord) || empty($passord2)) { $error['pass'] = 'Du fylte ikke inn begge passord-feltene!'; } if(strlen($passord) || strlen($passord2) < 5) { $error['pass'] = 'Passordet må inneholde mindre enn 5 tegn!'; } if(strlen($passord) || strlen($passord2) > 20) { $error['pass'] = 'Passordet kan ikke inneholde mer enn 20 tegn!'; } //mail if(empty($email)) { $error['email'] = 'Du fylte ikke inn en e-mail!'; } $monster = '/^[^@]+@[^\s\r\n\'";,@%]+$/'; if(!preg_match($monster, trim($email))) { $error['email'] = 'Mailen du skrev inn er ikke gyldig!'; } if(!$error) { mysql_connect("$host", "$bruker", "$pass"); mysql_select_db($db); $regi = "INSERT INTO brukere (id, bruker, nick, pass, rank, peng, gjeng, liv, gunner, beskytt, fritekst, kills, krim, gta, oc, bosted, livopp, reis, bank, tidbank, online, moderator, datoreg, email, ip) VALUES('', '$brukernavn', '$passord', '100', '1000000', '0', '100', '0', '0', '', '0', '0' ,'0', '0', '0', 'Oslo', '0', '0', '5000000', '0', '0', '0', '$regdato', '$email', '$ip'"; $ok = mysql_query($regi) or die (mysql_error()); echo 'Din brukerkonto er nå registrert hos oss, og du kan nå logge inn!'; } } else { if (isset($error['bruker'])) { echo "<span class=\"error\">".$error['bruker']."</span>"; } ?> <form action="" method="post"> <table align="center" width="400" style="margin-top:50px;"> <tr> <td width="150">Ønsket brukernavn:</td> <td><input type="text" name="bruker" /></td></tr> <tr> <td width="150">Ønsket passord:</td> <td><input type="password" name="pass" /></td></tr> <tr> <td width="150">Passord igjen:</td> <td><input type="password" name="passord2" /></td></tr> <tr> <td width="150">Din e-mail:</td> <td><input type="text" name="email" /></td></tr> <tr> <td> </td><td><input type="submit" name="registrer" value=" Fullfør Registreringen " /></td></tr> </table> </form> <?php } ?> Endret 20. juli 2008 av creAtiive Lenke til kommentar
Runar Skrevet 20. juli 2008 Del Skrevet 20. juli 2008 Jeg antar at resten av koden fungerer som den skal? Slik at hvis du fyller ut alle feltene, blir brukere opprettet? Lenke til kommentar
Harald B Skrevet 20. juli 2008 Del Skrevet 20. juli 2008 if(strlen($passord) || strlen($passord2) < 5) { $error['pass'] = 'Passordet må inneholde mindre enn 5 tegn!'; } if(strlen($passord) || strlen($passord2) > 20) { $error['pass'] = 'Passordet kan ikke inneholde mer enn 20 tegn!'; } Prøv dette i stedet. if(strlen($passord) <5 || strlen($passord2) < 5) { $error['pass'] = 'Passordet må inneholde mindre enn 5 tegn!'; } if(strlen($passord) > 20 || strlen($passord2) > 20) { $error['pass'] = 'Passordet kan ikke inneholde mer enn 20 tegn!'; } Dessuten bør du bruke mysql_real_escape_string() før du bruker inndata i spørringen din for å beskytte mot sql injection. Lenke til kommentar
usbkalkis Skrevet 20. juli 2008 Del Skrevet 20. juli 2008 Jeg må bare... hvorfor skal dere ikke tillate så mange tegn i passordet folk vil? Dere skal vel hashe passordet uansett? Lenke til kommentar
kpolberg Skrevet 20. juli 2008 Del Skrevet 20. juli 2008 (endret) Hehe, jeg fant jeg fant if(strlen($passord) || strlen($passord2) < 5) { $error['pass'] = 'Passordet må inneholde mindre enn 5 tegn!'; Riktignok bare en skriveleif(regner med det skal være mer enn 5 tegn, og mindre enn 20). Endret 20. juli 2008 av kpolberg Lenke til kommentar
loathsome Skrevet 20. juli 2008 Del Skrevet 20. juli 2008 He-he, håper du er klar over at du er fullstendig åpen for SQL-injection. Lenke til kommentar
Harald B Skrevet 20. juli 2008 Del Skrevet 20. juli 2008 Ser jeg har vel ikke svart akkurat på det du spurte om. Nedenfor er et lite sammendrag av programflyten i koden din: <?php if(array_key_exists('registrer', $_POST)) { // feilsjekking og registrering } else { if (isset($error['bruker'])) { echo "<span class=\"error\">".$error['bruker']."</span>"; } // Vis skjema ?> Årsaken til at feilmeldingene ikke vises er at du skriver dem ut sammen med skjemaet, og skjemaet skrives kun ut dersom det ikke er sendt inn fra før. Lenke til kommentar
creAtiive Skrevet 20. juli 2008 Forfatter Del Skrevet 20. juli 2008 (endret) Jeg fikset det selv igårnatt Men, takk for svarene <?php if(array_key_exists('registrer', $_POST)) { $brukernavn = mysql_real_escape_string($_POST['bruker31']); $passord = mysql_real_escape_string($_POST['pass3']); $email = mysql_real_escape_string($_POST['email']); $regdato = date("d, m, y || H:i:s"); $ip = $_SERVER['REMOTE_ADDR']; //brukernavn if(empty($brukernavn)) { $error['bruker'] = 'Du fylte ikke inn et brukernavn!'; } if(strlen($brukernavn) < 3) { $error['bruker'] = 'Brukernavnet må inneholde minst 3 tegn!'; } if(strlen($brukernavn) > 20) { $error['bruker'] = 'Brukernavnet kan ikke inneholde mer enn 20 tegn!'; } $sjekk = mysql_query("SELECT * FROM brukere WHERE `nick`='$brukernavn'"); $tell = mysql_num_rows($sjekk); if($tell > 0) { $error['bruker'] = 'Brukernavnet er <u>opptatt</u>! Venligst velg et annet.'; } //passord if(empty($passord)) { $error['pass'] = 'Du fylte ikke inn passord-feltet!'; } if(strlen($passord) < 5) { $error['pass'] = 'Passordet må inneholde mer enn 5 tegn!'; } if(strlen($passord) > 100) { $error['pass'] = 'Passordet kan ikke inneholde mer enn 100 tegn!'; } //mail if(empty($email)) { $error['email'] = 'Du fylte ikke inn en e-mail!'; } $monster = '/^[^@]+@[^\s\r\n\'";,@%]+$/'; if(!preg_match($monster, trim($email))) { $error['email'] = 'Mailen du skrev inn er ikke gyldig!'; } if(!$error) { $regi = "INSERT INTO brukere (id, nick, pass, rank, peng, gjeng, liv, gunner, beskytt, fritekst, kills, krim, gta, oc, bosted, livopp, reis, bank, tidbank, online, moderator, datoreg, email, ip) VALUES('', '$brukernavn', '" . md5($passord) . "', '100', '1000000', '0', '100', '0', '0', '', '0', '0' ,'0', '0', '0', 'Oslo', '0', '0', '5000000', '0', '0', '$regdato', '$email', '$ip')"; $ok = mysql_query($regi) or die (mysql_error()); } } if(isset($ok)) { ?> <span class="velykket"><a href="index.php">Din brukerkonto er nå registrert hos oss, og du kan nå logge inn!</a></span> <?php } else { if (isset($error['bruker'])) { echo "<span class=\"error\">".$error['bruker']."</span>"; } if (isset($error['pass'])) { echo "<span class=\"error\">".$error['pass']."</span>"; } if (isset($error['email'])) { echo "<span class=\"error\">".$error['email']."</span>"; } ?> <form action="" method="post"> <table align="center" width="400" style="margin-top:50px;"> <tr> <td width="150">Ønsket brukernavn:</td> <td><input type="text" name="bruker31" <?php if(isset($error)) {echo "value=\"$brukernavn\"";} ?> /></td></tr> <tr> <td width="150">Ønsket passord:</td> <td><input type="password" name="pass3" <?php if(isset($error)) {echo "value=\"$passord\"";} ?> /></td></tr> <tr> <td width="150">Din e-mail:</td> <td><input type="text" name="email" <?php if(isset($error)) {echo "value=\"$email\"";} ?> /></td></tr> <tr> <td> </td><td><input type="submit" name="registrer" value=" Fullfør Registreringen " /></td></tr> </table> </form> <?php } ?> Endret 20. juli 2008 av creAtiive Lenke til kommentar
Harald B Skrevet 20. juli 2008 Del Skrevet 20. juli 2008 if (isset($error['bruker'])) { echo "<span class=\"error\">".$error['bruker']."</span>"; } if (isset($error['pass'])) { echo "<span class=\"error\">".$error['pass']."</span>"; } if (isset($error['email'])) { echo "<span class=\"error\">".$error['email']."</span>"; } Eller: if (isset($error)) { foreach($error as $errortext) { echo "<span class=\"error\">$errortext</span>"; } } 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å