Gå til innhold

[Løst] eg har et problem med en register.php fil kan noen hjelpe meg?


Anbefalte innlegg

<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 av WALL-E
Lenke til kommentar
Videoannonse
Annonse

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.

  • Liker 1
Lenke til kommentar
  • 1 måned senere...

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 av Wackamole
Lenke til kommentar
  • 2 uker senere...
  • 4 uker senere...

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 av warpie
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...