Php & MySQL

Autentisering

2012-01-23 17:21 #0 av: LinneaChristina

Jag har helt kört fast och skulle bli väldigt tacksam för tips... :)

Jag tänkte ha en adminsida på en webbplats jag byggt, som kräver inloggning med hjälp av en autentiserings-promt och en databastabell. Jag har gjort detta förut och då har det funkat...

Den här gången utgick jag från instruktionerna i boken Beginning with PHP and MySQL och fick följande kod:

<?php

function authenticate_user() {

header('WWW-Authenticate: Basic realm="Authentication"');

header("HTTP/1.0 401 Unauthorized");

exit;

}

if (! isset($_SERVER['PHP_AUTH_USER'])) {

authenticate_user();

} else {

mysql_pconnect("**censur**","**censur**","**censur**")

or die("Can't connect to database server!");

mysql_select_db("hotellcarlxii_s")

or die("Can't select database!");

$query = "SELECT username, pswd FROM logins

WHERE username ='$_SERVER[PHP_AUTH_USER]' AND

pswd=MD5('$_SERVER[PHP_AUTH_PW]')";

$result = mysql_query($query);

if (mysql_num_rows($result) == 0) {

authenticate_user();

} else {

echo "Welcome to the secret archive!";

}

}

?>

Det som sedan händer när jag försöker logga in på sidan är att autentiserings-promten dyker upp igen med meddelandet att jag angett fel användarnamn eller lösenord (vilket jag inte har!).

Vad skulle kunna vara fel??

Anmäl
2012-01-23 17:34 #1 av: [Fibbe]

Jag tog bort lösenorden till databasen och ersatte med : **censur** i din kod. Kanske inte var dina inloggningsuppgifter men för säkerhets skull ;)

 

Har du stoppat in md5-hashet av ditt lösenord i databasen?
Hur gjorde du det hashet?

Mvh Felix

Intresserad av Php, MySQL eller övrig webbprogrammering?
Välkommen till webbprogrammering.ifokus.se

Anmäl
2012-01-24 09:22 #2 av: LinneaChristina

Haha, OJ!! Tack!!! Går in och byter lösenord med en gång, för säkerhets skull.

Jag lade in lösenordet i databasen genom att skriva md5('lösenordet') så att det krypterades till en lång sträng av siffror och bokstäver.

Anmäl
2012-01-24 09:46 #3 av: LinneaChristina

Samma problem uppstår med denna hårdkodade autentiseringskod:

<?php

if (($_SERVER['PHP_AUTH_USER'] != 'admin') ||

($_SERVER['PHP_AUTH_PW'] != 'password')) {

header('WWW-Authenticate: Basic realm="Authentication"');

header("HTTP/1.0 401 Unauthorized");

print('You must provide...');

exit;

}

?>

Så det verkar inte ha något med databasen/MySQL-koden att göra i alla fall...

Anmäl
2012-01-24 10:46 #4 av: [Fibbe]

Har du testat att skriva ut vad $_SERVER[PHP_AUT_USER] och $_SERVER[PHP_AUT_PW] är för något?

De kanske är tomma? I så fall är problemet tidigare:

Testa så här:

<?php

if (($_SERVER['PHP_AUTH_USER'] != 'admin') ||

($_SERVER['PHP_AUTH_PW'] != 'password')) {

var_dump($_SERVER['PHP_AUTH_USER']);

var_dump($_SERVER['PHP_AUTH_PW']);

//header('WWW-Authenticate: Basic realm="Authentication"');

//header("HTTP/1.0 401 Unauthorized");

//print('You must provide...');

exit;

}

?>

 

Då får du se vad servern tror du har skrivit

Mvh Felix

Intresserad av Php, MySQL eller övrig webbprogrammering?
Välkommen till webbprogrammering.ifokus.se

Anmäl

Bli medlem på iFokus

För att kunna delta i diskussionen måste du bli medlem på iFokus. Det går snabbt, enkelt, och kostar ingenting. Medlemskapet ger dig tillgång till över 300 sajter.