webForumDet fria alternativet

Inloggningsproblem: olika lösenord fungerar.

PHP

6 svar · 251 visningar · startad av Del Pero

Medlem sedan feb. 20003 785 inlägg
Frågan#1

Användaren jag loggar in med har lösenordet "0000" (fyra nollor).
Dock så kan jag även logga in med enbart "0" (en nolla) som lösenord. Varför?

if (isset($_POST['username']) && isset($_POST['password'])) {

$username = InputText($_POST['username']);
$password = InputText($_POST['password']);

$link = mysql_connect($db_host, $db_user, $db_pass); 
mysql_select_db($db, $link); 
$sql = "SELECT * FROM tblUsers WHERE username = '$username'"; 
$result = mysql_query($sql, $link); 

while($array = mysql_fetch_array($result)) 
	{
	
		if ($array["password"] == $password) {
		$_SESSION['uid'] = $array["id"];
		header("location: hey.php");
		break;
		} else {
		echo "wrong password";
		}
	
	}

}
Medlem sedan aug. 2002101 inlägg
#2

Hur ser mysql databasen ut?

Medlem sedan apr. 2002830 inlägg
#3

Om du har passwordfältet som en int så kanske 0 är samma sak som 00000, hur funkar det om du ändrar lösen till 123456, funkar det med 1 då?

/Niclas

Medlem sedan feb. 20003 785 inlägg
#4

Jag testade som du gjorde Niclas och det fungerar inte med 1 när lösenordet är 1234, inte heller med 1111.

Konstigt ändå att databasen tolkar en nolla likadant som fyra.
Passwordfältet är ingen int utan en varchar.

Jag får väl se det som löst då, tack för hjälpen!

Medlem sedan aug. 2002101 inlägg
#5

Ja det var väl lustigt, men exakt hur ser int posten i Mysql tabellen ut?

Medlem sedan apr. 2002830 inlägg
#6

mmm, det är skumt.. har tyvärr inga förslag om vad det kan vara som är galet!

/Niclas

Medlem sedan aug. 20002 975 inlägg
#7

Det är PHP:s typecasting som spökar. Jämför:

if( "0000" == 0){
  echo "Hej";
}

Hur blir det om du ställer din sql-fråga så här:

$sql = "SELECT * FROM tblUsers WHERE username = '$username' AND password='$password'";
260 ms totalt · 4 externa anrop · v20260731065814-full.20824b9f
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)