PHP

Hantera inloggning

För att punkt 4 ska fungera måste vi också skriva den kod som tar hand om formulärets data. Vi lägger alltså in följande kod i login.php (som ska ligga i samma katalog som login.html):

<?php
// Här läser vi in värdena som skickas till sidan. 
// Det här är bara en kommentar på sidan
$username = $_POST ['username'];
$password = $_POST ['password'];


echo "Välkommen " . $username;
?>

Det blev ett par rader kod men inte allt för komplicerat hoppas jag. Först på sidan kommer en kommentar som kan vara bra att känna till hur den skrivs. Allt som kommer efter // på en rad räknas som en kommentar i PHP och körs då inte genom PHP-tolken. Det kommer heller inte att visas i den HTML som blir resultatet. Skriv gärna mycket kommentarer i koden så att du kan hålla reda på vad du gör. Det är mycket lätt att glömma vad man tänkte när man skrev ett visst kodavsnitt dagen innan.

Efter kommentaren hämtar vi ut de värden som blivit skickade till sidan. Detta görs genom att plocka ut dem ur HTTP-förfrågan med hjälp av PHP-variabeln $_POST som skapas när data skickas med metoden POST. $_POST är en slags behållare för flera värden och vi säger att vi vill plocka ut värdena med variabelnamn username respektive password. Dessa sparar vi i lokala variabler med namnen username och password. Det här med behållare och variabler ska vi förklara lite senare. Tänk lite på hur de används i det här avsnittet så att du får en bild om hur det fungerar så förstår du förmodligen förklaringen bättre senare.

Till sist skrivs texten "Välkommen" och användarnamnet ut med hjälp av funktionen echo(). Echo kan skriva ut både en sträng som man anger direkt eller värdet på en variabel. Funktionen kan dessutom ta emot en sammansatt sträng, som blir resultatet av att använda operatorn "punkt" för att sammanfoga strängen "Välkommen " med värdet på $username.

Testa formuläret!

Resultat

Som du märker är det inte så mycket som händer med den data som skickas just nu. Det enda som syns är att användarnamnet skrivs ut i en välkomsthälsning. I nästa steg är det dags att verkligen kontrollera inloggningen och undersöka om det är rätt användarnamn och lösenord. Vi ska göra på enklast möjligast sätt och ha dessa data i samma fil, men egentligen ska användarnamn och lösenord finnas i en databas eller i en skyddad fil.

För görs en enkel kontroll av användarnamn och lösenord, och om dessa är rätt ges tillgång till sidan men om de är fel skickas användaren tillbaka till inloggningsformuläret. Kontrollen av användarnamnet/lösenordet är ett enkelt test i en if-sats.

if (($username == "webbmaster") && ($password == "secret")) {
    echo "Du är inloggad!";
}

Självklart ska det hända mer än att bara texten "Du är inloggad" skrivs ut, men dit kommer vi lite senare. Det som händer om villkoret i if-satsen inte är uppfyllt är följande.

else
{
	header("Location: login.html");
}

header är en PHP-funktion som skickar en HTTP-header (kort förklarat en HTML-sida) till webbläsaren. Här skickas alltså sidan med formuläret (login.html) tillbaka och användaren fortsätter att vara icke inloggad. Användaren får inte veta vad som var fel, utan får snällt försöka logga in igen. Vill man hjälpa sina användare (vilket egentligen är allt man ska tänka på inom programmering) bör man skriva ut vad som var fel med inloggningen på ett informativt sätt. Prova gärna att göra det själv om du vill, men det finns inte med i just det här exemplet. Om du vill logga in så är det användarnamn webbmaster och lösenordet secret som gäller.

Resultat

Kod