WALL-E Skrevet 22. januar 2013 Del Skrevet 22. januar 2013 (endret) <html> <h1>Register</h1> <?php $action = $_POST['action']; if ($action == "register") { /* Dette skjer dersom form-data er sendt, og variabelen action er satt til register */ $fullname = strip_tags($_POST['fullname']); $username = strip_tags($_POST['username']); $password = strip_tags($_POST['password']); $repeatpassword = strip_tags($_POST['repeatpassword']); $date = date("Y-m-d"); if (isset($fullname) && isset($username) && isset($password) && isset($repeatpassword)) { if (strlen($username)>25||strlen($fullname)>25) { echo "Length of username or fullname is too long!"; exit; } if (strlen($password)>25||strlen($pasword)<6) { echo "Password must be between 6 and 25 characters"; exit; } echo "success!"; $password = md5($password); $repeatpassword = md5($repeatpassword); if($password != $repeatpassword) { echo "The passwords did not match."; exit; } elseif($password == $repeatpassword) { /* DB tilkobling og input her */ } } } elseif(!isset($action) || $action == "") { /* Dette skjer dersom $action ikke er satt til register, eller er blank */ ?> <form action='register.php' method='POST'> <input type="hidden" name="action" value="register"> <table> <tr> <td> Your full name: </td> <td> <input type=text' name='fullname'> </td> </tr> <tr> <td> Choose a username: </td> <td> <input type=text' name='username'> </td> </tr> <tr> <td> Choose a password: </td> <td> <input type=password' name='password'> </td> </tr> <tr> <td> Repeat your password: </td> <td> <input type=password' name='repeatpassword'> </td> </tr> </table> <input type='submit' name='submit' value='Register'> </form> </html> <?php /* Denne avslutter if_elseif løkken */ } ?> probleme er at den sier bare ( Password must be between 6 and 25 characters ) når jeg prøver og registrere meg, og hvis jeg fjerner if (strlen($password)>25||strlen($pasword)<6) { echo "Password must be between 6 and 25 characters"; exit; } så kommer success! opp men den sender ikke noe til databasen Endret 26. januar 2013 av WALL-E Lenke til kommentar
etse Skrevet 23. januar 2013 Del Skrevet 23. januar 2013 Først og fremst: Bruk coda-tags. Slik det er nå er koden nesten uleselig. I tillegg må du fortelle litt hva som faktisk er feil? Hva skjer når du prøver koden din? Får du noen feilmeldinger? Og hva forventer du at skal skje? Lenke til kommentar
forvirretoggal Skrevet 23. januar 2013 Del Skrevet 23. januar 2013 Slik jeg tolker koden din, vil du at når man submitter formen i nederste del av skriptet, skal biten som setter inn dataene i databasen kjøre, samt utføre enkle if...else... setninger? <html> <h1>Register</h1> <?php $action = $_POST['action']; if ($action == "register") { /* Dette skjer dersom form-data er sendt, og variabelen action er satt til register */ $fullname = strip_tags($_POST['fullname']); $username = strip_tags($_POST['username']); $password = strip_tags($_POST['password']); $repeatpassword = strip_tags($_POST['repeatpassword']); $date = date("Y-m-d"); if (isset($fullname) && isset($username) && isset($password) && isset($repeatpassword)) { if (strlen($username)>25||strlen($fullname)>25) { echo "Length of username or fullname is too long!"; exit; } if (strlen($password)>25||strlen($pasword)<6) { echo "Password must be between 6 and 25 characters"; exit; } echo "success!"; $password = md5($password); $repeatpassword = md5($repeatpassword); if($password != $repeatpassword) { echo "The passwords did not match."; exit; } elseif($password == $repeatpassword) { /* DB tilkobling og input her */ } } } elseif(!isset($action) || $action == "") { /* Dette skjer dersom $action ikke er satt til register, eller er blank */ ?> <form action='register.php' method='POST'> <input type="hidden" name="action" value="register"> <table> <tr> <td> Your full name: </td> <td> <input type=text' name='fullname'> </td> </tr> <tr> <td> Choose a username: </td> <td> <input type=text' name='username'> </td> </tr> <tr> <td> Choose a password: </td> <td> <input type=password' name='password'> </td> </tr> <tr> <td> Repeat your password: </td> <td> <input type=password' name='repeatpassword'> </td> </tr> </table> <input type='submit' name='submit' value='Register'> </form> </html> <?php /* Denne avslutter if_elseif løkken */ } ?> Noe som dette bør fungere som du ønsker det. 1 Lenke til kommentar
WALL-E Skrevet 26. januar 2013 Forfatter Del Skrevet 26. januar 2013 jeg oppdaterte den men den virket fortsatt ikke Lenke til kommentar
::TeknoFoben:: Skrevet 8. mars 2013 Del Skrevet 8. mars 2013 MD5 er en veldig dårlig passordhasher. Hva er en dårlig passordhasher? En som er rask til å hashe. Hvorfor det? Da kan en cracker prøve mange kombinasjoner til han/hun finner den riktige. Derfor bør du bruke en treg passordhasher som bCrypt. Lenke til kommentar
Wackamole Skrevet 11. mars 2013 Del Skrevet 11. mars 2013 (endret) Du burde ikke bruke IF etter en IF, bruk : if (strlen($username)>25||strlen($fullname)>25) { echo "Length of username or fullname is too long!"; exit; } elseif(strlen($password)>25||strlen($password)<6) { echo "Password must be between 6 and 25 characters"; exit; } Du hadde også en skrivefeil, password ble stavet med èn "S" istedenfor 2. Burde også vurdere å bruke unix-timestamp istedenfor date for og registrere dato. unix-timestamp er mye mer anvendelig i utregninger om du ønsker og gjøre det senere. Endret 11. mars 2013 av Wackamole Lenke til kommentar
EX-adrin Skrevet 21. mars 2013 Del Skrevet 21. mars 2013 (endret) d Endret 21. mars 2013 av EX-adrin Lenke til kommentar
slacky Skrevet 17. april 2013 Del Skrevet 17. april 2013 (endret) MD5 er en veldig dårlig passordhasher. Hva er en dårlig passordhasher? En som er rask til å hashe. Hvorfor det? Da kan en cracker prøve mange kombinasjoner til han/hun finner den riktige. Derfor bør du bruke en treg passordhasher som bCrypt. Det er da veldig begrenset hvor lange ord/kombinasjoner vi klarer løse ved bruteforce. Klart bcrypt kan være en fordel å bruke, sett at den itererer over x antall hasher. Men, md5 er ikke dårlig. - Du kan lett iterere over md5 for å generere en ny hash. Skal litt til for å "konstruere" dupplikater, så tenker at dette er trygt nok. Men, en _lengre_ hash hadde ikke skadet, da md5 kun er 32 lowerchar, og tall. Hadde ikke skadet med 64+/- unicode tegn i hashen, og 256bit kryptering/hashing. function itermd5($pass, $iter) { for($i=0; $i < $iter; $i++) { $pass = md5($pass); } } $pass = "asdasd"; $hashpw = itermd5($pass, 3); ^ å gjøre dette på alle enkle og korte passord er ikke så dumt, men på lengre, evt veldig avanserte passord alà "a=%#"L*KF;lfhÆ" er helt bortkastet. Prinsippet fungerer nok bedre med hasher som produserer en hashverdi lengre en kun de 32 enkle tegna som md5 produserer, hvor de også tar i bruk mange flere unicode tegn. Endret 17. april 2013 av warpie Lenke til kommentar
Crowly Skrevet 18. april 2013 Del Skrevet 18. april 2013 Nå er strengt tatt ikke nødvendig å brute force md5 lengre, der er det ferdige rainbow tabeller. Ett lite google søk gir mer enn nok treff om emnet. 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å