Annons:
Etikettphp-mysql
Läst 1890 ggr
LinneaChristina
1/23/12, 5:21 PM

Autentisering

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:

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??

//Linnea

Välkommen att titta in på min blogg!

Annons:
[Fibbe]
1/23/12, 5:34 PM
#1

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?

LinneaChristina
1/24/12, 9:22 AM
#2

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.

//Linnea

Välkommen att titta in på min blogg!

LinneaChristina
1/24/12, 9:46 AM
#3

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

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…

//Linnea

Välkommen att titta in på min blogg!

[Fibbe]
1/24/12, 10:46 AM
#4

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:

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

Upp till toppen
Annons: