# Autentisering
Author: 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??

## Comment 1
Author: [Borttaget]

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?

## Comment 2
Author: 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.

## Comment 3
Author: 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...

## Comment 4
Author: [Borttaget]

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
