Tutorial - Koppla inloggningsapplikationen till en databas

1. Introduktion

I denna tutorial kommer jag att bygga om den tidigare inloggningsapplikationen som jag byggt och se till att denna kopplas till den databas som du byggt upp under moment05.

1.1 Uppgiften

Uppgift inloggningsapplikationen, grund

Du skall nu bygga vidare på uppgiften i Moment04 och koppla din inloggningsapplikation till den databas som du har designat och implementerat tidigare i detta moment.

Uppgiften är att skapa en fullt fungerande applikation där det går att logga in som användare. Väl inloggad skall du kunna skapa nya användare, ta bort befintliga användare och uppdatera användarnamn och lösenord på befintliga användare.

1.2 Förutsättningar

För att kunna följa denna tutorial så behöver du ha en fungerande inloggningsappliktion enligt den tutorial som vi använde när vi byggde upp den. Om du har byggt vidare på tutorial eller om den ser lite annorlunda ut så borde du ändå kunna följa denna tutorial och implementera det som jag gör fast med lite ändringar.

1.2.1 Databastabellen user

Under moment05 har vi byggt upp en databastabell, user, där information om användare lagras. Tanken är att du skall använda den tabell som du själv har skapat men för säkerhets skull visar jag koden här för min tabell.

Kodexempel: sql för tabellen user

-- Created by Vertabelo (http://vertabelo.com)
-- Last modification date: 2018-12-07 10:59:39.599

-- tables
-- Table: user
CREATE TABLE user (
    userId int NOT NULL AUTO_INCREMENT,
    username varchar(30) NOT NULL,
    password varchar(60) NOT NULL,
    CONSTRAINT user_pk PRIMARY KEY (userId)
);

-- End of file.

Denna tabell behöver du nu lägga i en databas i din databasserver, mySQL, som du når via phpMyAdmin på din dator. phpMyAdmin når du via adressen http://localhost/phpmyadmin/ (http://localhost:8888/phpmyadmin/ om du kör MAMP) och du måste ha både Apache och mySQL igång från XAMPP's kontrollpanel för att kunna nå databasen.

Jag döper min databas till login i denna tutorial, jag rekommenderar dig att göra samma sak.

Kommer du inte ihåg hur du skapar eller jobbar i en en databas med phpMyAdmin så finns det väldigt mycket information att få på nätet oavsett om du vill se en skriftlig guide eller se en instruktionsfilm.

1.2.2 Populera tabellen user

Det enklaste sättet att populera tabellen user med data är att göra det via phpMyAdmin men det går naturligtvis också att göra det med SQL. Här kommer två kodsnuttar, den första skapar två användare och den andra kodsnutten skapar ytterligare en.

Kodexempel: sql för tabellen user

INSERT INTO `user` (`username`, `password`) VALUES
('admin', 'admin'),
('user', 'user');
INSERT INTO `user` (`username`, `password`) VALUES ('johan', 'johan');

1.3 Planering

Eftersom vi redan har en fungerande applikation så är fokus i början på att ersätta befintliga funktioner så att de fungerar uppkopplade till databasen. När vi har ersatt allt detta så kommer jag bygga vidare på de nya funktioner, lägga till användare, som uppgiften kräver.

Hade vi byggt applikationen från början så hade vi fått göra en plan som liknar den vi gjorde i vår tidigare tutorial.

Innan jag gör några förändringar i den befintliga applikationen så kopierar jag hela mappen och skapar en exakt kopia som jag döper till något lämpligt. I mitt fall döper jag mappen till inloggdb.

2. Bygga om applikationen så att den kopplas mot databasen

Om vi kikar på applikationen just nu så består den av fem filer. Det är endast i filen login.php som vi kollar info från användaren. Därför är det bara denna filen vi behöver göra om för att kunna logga in en användare som finns i databasen.

Lösenord "root" eller "" till databasen?

I denna tutorial så har jag genomgående använt lösenordet "root" till databasen men beroende på vilken webbserver du använder så kanske du behöver använda "" istället. Testa, utvärdera och hitta din lösning.

2.1 login.php

Det första jag gör är att kommentera bort de två anropen till header('location') så att vi inte skickas vidare tillbaka till index.php eller till admin.php. Jag ser också till att alla variabler som finns tillgängliga skrivs ut på sidan.

Koden blir då så här;

Kodexempel: login.php

kod

Vi har tidigare tittat på vad som krävs för att koppla upp mot en databas och det är i runda slängar 20 rader som behöver skrivas/kopieras på varje sida där vi vill kommunicera med databasen. Därför vill jag lägga dessa kodrader i en egen fil som är lätt att inkludera där det behövs. Det finns två huvudsakliga anledningar till att göra på detta sätt;

  1. Det tar väldigt mycket plats på varje sida och vi vill hålla ner kodens storlek om det är möjligt.
  2. Allt som görs flera gånger vill vi ha i en egen fil, eller i en funktion, för att det skall vara lätt att administrera. Tänk om vi gör databaskopplingen på 20 sidor och sedan bestämmer oss för att ändra namn på databasen eller lösenordet. Detta kommer du märka att vi blir tvungna till när vi sedan skall flytta databasen till din domän på Binero. Då kommer du vara tacksam att alla ändringar görs i en fil.

2.2 database_connection.php

Då lägger jag allt som hänger ihop med databasuppkopplingen till en egen fil som jag döper till database_connection.php.

Koden blir då så här;

Kodexempel: database_connection.php

kod

Lägg märke till att jag har tagit bort den avslutande ?>-tagen som stänger php-kodblocket. Det är tillåtet att göra och kan faktiskt vara att föredra. Det finns annars en risk för att det gömmer sig ett osynligt mellanslag i slutet på filen som gör att jag senare inte kan använda header('location') på någon sida där jag har inkluderat database_connection.php och det tar en stund att hitta var detta tecken kommer från.

Du minns väl att det inte går att använda header('location') om du har börjat skriva ut text på en sida. Tyvärr har din webbserver en mer tolerant inställning till detta än webbservern hos Binero. Därför är det viktigt att testa hela applikationen noggrant på produktionservern innan vi är klara.

I min kodbild står lösenordet angivet till root. Antingen är det root som är lösenordet till användaren root, men det kan också vara tomt och då skriver du $pwd = "".

2.3 login.php

I denna fil så läser jag först in filen med databasuppkopplingen och sedan börjar jag bygga upp min SQL-sats. Det är informationen från formuläret som skall kopplas. Vi har tidigare läst av dessa men jag vill lägga till en sak och det är funktionen trim() som tar bort eventuella mellanslag och tabbar som matats in i formuläret. Mellanslag inne i en text rör den inte utan bara det som är innan och efter inmatad text.

Jag kommenterar också hela if-blocket eftersom det där används variabler som inte längre finns på sidan. Det blir bara förvirrande om det skrivs ut massa felmeddelande.

Koden blir då så här;

Kodexempel: login.php

kod

Rad 18-28 har jag dolt, detta block innehåller ändå bara kommentarer och bortkommenterad kod.

När jag nu testar att logga in så ser jag följande händer. Jag får många fler variabler i min utskrift men det är denna som är intressant.

Variabelutskrifter

kod

Lyckad inloggning ger arrayen $res som innehåller tre index, varav ett som heter userId.

Variabelutskrifter

kod

Misslyckad inloggning skapar arrayen $res men den är tom och har framförallt inget index som heter userId.

Där har jag lösningen. Om det finns en variabel som heter $res['userId'] så har användarnamnet och lösenordet varit korrekt för en inloggning. Nu gäller det att kolla om denna variabel finns, om den finns så är en användare korrekt inloggad och då kan vi sätta en sessionsvariabel och skicka användaren till admin.php. Om variabeln inte finns så skall vi precis som tidigare skickas till index.php med ett meddelande att inloggningen misslyckades.

Koden blir då så här;

Kodexempel: login.php

kod

Att sätta $_SESSION['username'] till ett värde från databasen eller från formuläret spelar ingen roll, de skall ju ha samma värde.

Testa nu att det fungerar som det är tänkt, jag testade att logga in som admin och då skrevs det ut på admin.php att jag var inloggad som admin. När jag gjorde samma sak med användaren user så fungerade det också. När jag angav en felaktig kombination av användarnamn och lösenord så fick jag meddelande om att jag hade angivit felaktiga inloggningsuppgifter.

Perfekt, nu har vi helt ersatt vår tidigare inloggningsapplikation så att den är kopplad till en databas och vi har dessutom flera olika användare som kan logga in.

3. Vidare funktionalitet

I uppgiften så skulle vi nu bygga vidare på inloggningsapplikationen så att det går att lägga till en användare, ta bort en användare och även ändra info om en användare och detta skall göras i inloggat läge. Jag kommer göra alla funktioner i sina egna sidor, allt för att det skall vara lättare att följa processen och hålla koll på alla sidor. Det finns andra alternativa sätt att göra detta på men denna gången gör vi så här. Jag tror det är bra att börja med en mockup för att enklare kunna se hur allt hänger ihop.

Variabelutskrifter

Mockup

Jag gjorde en hyggligt snabb mockup i draw.io där jag fick fram en bild på det jag vill göra. Att tabellen skall vara grön är inte helt säkert, det var den färgen som var förvald och inte helt enkel att ändra. Men då har jag något att jobba vidare ifrån.

Det viktigaste är att alla användare listas i en tabell, det finns länkar till de olika funktionerna, att lägga till en ny användare, uppdatera information om en användare och att ta bort en användare.

3.1 Lägga till en användare

När jag skall lägga till en användare behöver jag skapa en sida med ett formulär där jag kan mata in användarnamn och lösenord. När jag klickar på knappen i formuläret så skall jag gå till en ny sida där användaren läggs till i databasen. Jag brukar namnge dessa filer utifrån vad de skall göra. Den första sidan, den med formuläret, skall lägga till användare därför får den heta addUser.php och den sidan som lägger in användaren i databasen får heta insertUser.php eftersom det är det nyckelord som används mot databasen.

Skapa först en länk i admin.php så att vi kan komma till addUser.php.

Koden blir då så här;

Kodexempel: admin.php

kod

3.1.1 addUser.php

Vad behöver vi tänka på här? Vi behöver ingen uppkoppling mot databasen eftersom vi inte behöver kommunicera med den på denna sidan. Däremot behöver vi läsa in filen check_login.php eftersom en användare som inte är inloggad inte skall kunna komma åt denna filen. Slutligen kan vi kopiera formuläret som vi använder när vi loggar in i vår applikation då det bara är username och password vi skall använda oss av. Däremot behöver vi ändra action i formulärhuvudet så att vi istället går till sidan insertUser.php

Koden blir då så här;

Kodexempel: addUser.php

kod

3.1.2 insertUser.php

Följande funktionalitet vill jag ha på denna sidan;

  • Läs in check_login.php eftersom att här måste en användare vara inloggad för att få köra denna filen. Skulle användaren skriva check_login.php i adressfönstret så kommer ändå ingen användare att läggas in men det skulle genereras lite error och det är onödigt att ens köra filen ifall användaren inte är inloggad.
  • Databasuppkopplingen, database_connection.php måste läsas in.
  • Ta hand om det som matas in från formuläret.
  • Bygg upp en SQL-sats för insert i databasen.
  • Kör SQL-satsen.
  • Kolla vilket userId posten som har skapats har.
  • Skicka tillbaka till admin.php med ett meddelande om att det har lagts till en användare och vilket id denna användare har.

Koden blir då så här;

Kodexempel: insertUser.php

kod

När jag testar detta så läggs det till en användare. Det som jag saknar är först och främst att meddelandet inte skrivs ut när jag kommer till admin.php. Vi löser det först.

3.1.3 admin.php

Vi bygger in så att meddelandet skrivs ut.

Koden blir då så här;

Kodexempel: admin.php

kod

Rad 6 och 22 är de som jag har ändrat/lagt till. Jag fick också bredda kolumnen som styrs på rad 20 för att slippa en väldigt smal kolumn.

Testa nu att lägga till några användare. Det du kommer märka är att det läggs till i databasen och att det kommer skrivas nya id för varje användare som läggs till i databasen. Det vi behöver göra nu är att bygga upp tabellen i filen admin.php för att enklare kunna se vad som händer i databasen.

3.2 Tabellen för att lista alla användare

På sidan admin.php så behöver vi nu bygga upp tabellen som visar alla användare. Det vi behöver göra är följande;

  • Koppla upp mot databasen.
  • Hämta all info om alla användare.
  • Loopa igenom det resultset vi får från databasen och bygg upp tabellen.
  • Skriv ut tabellen.

Koden blir då så här;

Kodexempel: admin.php

kod kod

Är det något som behöver förklaras här? Tabellen som byggs upp i raderna 17-29 är inte superavancerat men det blir en hel del htmlkod som behöver skrivas rätt. Funkar du inte som du vill så behöver du kika på den genererade html-koden och felsöka i den. Då kan det vara en hjälp att använda \n och \t för att skapa radbrytningar och tabbar i källkoden. Tabellen skrivs sedan ut på rad 50.

Testa att det fungerar som det är tänkt. Hos mig fungerar det och utseendet blir såhär;

admin.php

skärmklipp

3.3 Ta bort en användare

Vi har redan förberett en kolumn i vår tabell i sidan admin.php och i den skissen som jag gjorde tidigare så har jag dessutom skapat en länk. Då är ju frågan vart denna länk skall ta oss. Min tanke är att skapa en sida som heter deleteUser.php och till denna sidan skicka med userId för den användare som skall tas bort. Ett lämpligt sätt att göra detta på är då att skapa en länk med en GET-variabel som ser ut på detta sätt, deleteUser.php?userId=3. Vi börjar med att skapa länken.

3.3.1 admin.php

Vi har redan tillgång till allt vi behöver eftersom vi har hämtat all information om varje användare från databasen. Då återstår bara att bygga upp länken. Den koden ser ut så här;

Kodexempel: admin.php

kod

Allt som är ändrat syns på rad 26. För att vara säker på att det ser bra ut så kikar vi i webbläsaren;

admin.php

skärmklipp

Där ser det ju helt ok ut. Det viktigaste är dock att vi har kopplat rätt userId till rätt länk. Vi får kika i webbläsarens källkod.

admin.php

skärmklipp

Det ser rätt ut men tabellen borde kunna snyggas till för att underlätta vårt framtida arbete. Vi lägger två minuter på detta.

Kodexempel: admin.php

kod

Det enda jag har gjort är att lägga in ett antal \n (radbrytningar) och \t (tabbar) för att göra tabellen mer lättläst.

Det jag gjorde nu gör ingen skillnad för utseendet i webbläsaren men det gör stor skillnad när vi kikar i källkoden.

admin.php

skärmklipp

3.3.2 deleteUser.php

Vad skall hända på denna sidan?

  • Kolla att användaren får vara på sidan.
  • Koppla upp mot databasen.
  • Läs av vilket userId som skall tas bort.
  • Skapa SQL-satsen och kör den mot databasen.
  • Skicka tillbaka till admin.php med ett meddelande om att användaren är borttagen.

Då blir koden så här;

Kodexempel: deleteUser.php

kod

Här borde det inte vara några konstigheter, allt har vi sett tidigare. När allt har lyckats så ser det ut så här på sidan admin.php.

admin.php

skärmklipp

3.4 Uppdatera en användare

Dags för den sista funktionaliteten som jag skall lägga till. Jag vill nu se till att vi kan uppdatera användarnamn och lösenord för en användare. Hur det skall fungera? Först skall en länk läggas till på admin.php bredvid länken där vi kan ta bort en användare. Denna länken skall leda oss till en sida med ett formulär där det går att skriva in ny information för användaren. Denna sida döper jag till editUser.php och slutligen så skickas formuläret information till updateUser.php som lagrar den nya informationen till databasen. När detta är klart så skall användaren skickas tillbaka till admin.php med ett meddelande att användaren är uppdaterad.

3.4.1 admin.php

På denna sida så skapas en ny länk på samma sätt som länken för att ta bort en användare. Så jag gör på samma sätt, det enda som skiljs åt är att jag länkar till sidan editUser.php.

Då blir koden så här;

Kodexempel: admin.php

kod

Sidan ser ut så här i webbläsaren.

admin.php

skärmklipp

Och den färdiga källkoden ser ut så här.

admin.php

skärmklipp

3.4.2 editUser.php

Denna sidan skall innehålla ett formulär för att mata in ny information om en användare. För att kunna veta vad som skall ändras så borde vi ju veta vad som är lagrat om användaren just nu och skriva ut detta i formuläret från början. Formuläret skall förresten se ut som det formulär vi har skapat i addUser.php. Det innebär att vi kopierar innehållet i den sidan och ändrar det som vi behöver ändra istället för att börja om från början.

Det som skall läggas till är;

  • En databasuppkoppling.
  • Hämta information om den user som användaren vill ändra info om.
  • Skriv ut informationen i de två formulärelement som finns, användarnamn och lösenord.
  • På något sätt skicka med userId i formuläret utan att vi kan ändra detta.
  • Länka formuläret till updateUser.php.

Mycket av denna kod har vi tidigare skrivit på andra sidor så här finns alternativet att skriva allt från början eller att kopiera och klistra in det som redan är skrivet. Jag är en copy-paste-utvecklare och letar gärna efter kod som jag vet fungerar sedan tidigare och som jag kan återanvända.

Koden jag skrivit ser ut så här;

Kodexempel: editUser.php

kod

Allt som ligger uppe i php-blocket har vi använt oss av tidigare så det borde inte vara några konstigheter med.

I formulärdelen kanske vissa saker behöver förklaras.
På rad 31 finns det ett formulärelement som har typen hidden vilket innebär att denna är dold för användaren som ser webbsidan i webbläsaren. Detta är dock ett bra sätt att skicka med variabler som vi behöver men som inte skall, eller behöver, synas. Alla kan dock se den i källkoden, så skriv inget hemligt här.
På rad 33 och 35 så har jag lagt till attributen value till input-elementen som gör att jag kan lägga in värden i elementen när jag skapar dem. Det är fortfarande enkelt för användaren att ändra dessa men det som redan är lagrat är nu förifyllt för användaren.

Sidan ser ut så här i webbläsaren.

admin.php

skärmklipp

Och tabellens källkoden ser ut så här. Lägg märke till hur typen hidden och de förifyllda värdena är skrivna i den färdiga källkoden.

admin.php

skärmklipp

Klicka nu på knappen och se till att du hamnar på adressen updateUser.php även om sidan inte finns. Den skall vi skapa nu.

3.4.3 updateUser.php

Dags för sista steget och denna sida är väldigt lik insertUser.php eftersom vi skall;

  • Kolla om användaren får vara på sidan.
  • Koppla upp mot databasen.
  • Hämta information från formuläret.
  • Bygga upp och köra SQL-satsen mot databasen.
  • Skicka användaren vidare till admin.php med ett meddelande om att användarens info har uppdaterats.

Koden jag skrivit ser ut så här;

Kodexempel: updateUser.php

kod

Här är det nog inga andra nya saker som behöver förklaras.

Resultatet i webbläsaren blir då;

admin.php

skärmklipp

4. Testa applikationen

Nu har jag gjort allt som jag talade om att jag skulle göra och vi har en fungerande applikation där vi kan lägga till, ta bort och uppdatera användare.

Det har blivit dags att testa igenom koden och snygga till den innan vi skall flytta applikationen till vårt webbhotell.

4.1 Testschema

En sak som är viktig att veta om är att alla webbservrar har sina egna inställningar. Den webbserver du kör lokalt på din dator är inställd på att vara en utvecklingsserver vilket gör att den är lite mer tolerant mot fel. Den server som finns på vårt webbhotell är inställd i produktionsläge och är mindre tolerant. Därför är det viktigt att testa igenom applikationen ordentligt först lokalt och sedan när den ligger uppe på webbhotellets server. För att vi inte skall missa något test så är det viktigt att skapa ett testschema så att allt testas innan vi är nöjda och redo att leverera vår applikation. Ett testschema består av ett antal punkter som vi testar en och en.

  • Testa att logga in med korrekt användarnamn och lösenord.
  • Testa att logga in med felaktigt användarnamn och/eller lösenord.
  • Testa att lägga till en ny användare. Kolla också att det inte godkänns att skicka ett formulär med tomma värden.
  • Testa att ta bort en användare.
  • Testa att uppdatera en användare. Kolla också att det inte godkänns att skicka ett formulär med tomma värden.
  • Logga ut och försök nå följande sidor genom att skriva in deras adress i URL-rutan. I alla fall så skall du skickas till index med ett meddelande om att du inte har rätt att vara där.
    • addUser.php
    • admin.php
    • deleteUser.php
    • editUser.php
    • insertUser.php
    • updateUser.php

Om något av våra tester fallerar så måste vi åtgärda detta innan vi går vidare.

4.2 Problem som finns i vår applikation

Eftersom detta är en ganska enkel applikation så har vi inte fixat ett antal problem. Hade detta varit en applikation som skulle gå i produktion så hade vi fått lösa detta innan en kund är sugen på att betala för vårt arbete. Följande problem vet jag om att vi har i vår applikation.

Skapa en ny användare.
Det går att lägga till en användare som har samma namn som någon annan. Den kontrollen kan/bör man lägga till på något sätt innan en sådan här applikation skall gå i produktion. Antingen lägger vi till ett index i databasens tabell för attributet username så att det inte går att skapa dubbletter. Då behöver vi också kolla ifall det returneras något id från databasen, annars har något gått fel och så bör detta skrivas ut. Alternativet är att innan vi testar att skapa en ny användare kolla ifall detta användarnamn redan finns. Om så är fallet så ger vi ett meddelande och försöker inte skapa användaren.

Uppdatera användarens användarnamn.
Problemet är samma som vid skapande av en användare. Lösningen görs på samma sätt eller så gör vi det ej möjligt att ändra namn på en användare.

Ta bort en användare.
Just nu är det väldigt enkelt att ta bort en användare, ofta är det mer intressant att göra en användare inaktiv. Vill vi ändå ta bort användaren i systemet så bör vi få en möjlighet att konfirmera detta innan borttag görs. Denna konfirmation kan göras med PHP där vi på en sida får en fråga om vi vill ta bort användare med id X? Ett ännu bättre alternativ är att koppla ett JavaScript till den länken som vi redan har. Via det JavaScriptet kommer det fram en konfirmationsruta där användaren måste svara att hen vill ta bort användaren. Detta är inte speciellt svårt men det är saker som ligger utanför kursen. Vill du testa själv så går det ganska enkelt att googla efter en lämplig lösning.

Vill du lösa dessa problem på egen hand så varsågod, vi kommer inte göra det gemensamt.

4.3 Snygga till koden

Gå nu igenom koden en gång till och se till att bortkommenterad kod tas bort och att koden är kommenterad på ett sätt som du är nöjd med. Du kan ha synpunkter på att jag inte kommenterat koden allt för mycket, då har du chansen att göra detta bättre.

Hade detta varit ett skarpt projekt hade det varit önskvärt om du hade presenterat en sitemap så att en utvecklare som tar över sidan från dig vet hur den är uppbyggd. Är filnamnen bra så går det ganska snabbt att förstå hur allt hänger ihop, men det är ändå tacksamt att ärva en bra dokumenterad applikation.

Om du inte har lagt till CSource till applikationen tidigare så gör det nu och kolla också igenom koden via CSource så att alla lösenord till databasen döljs, det är väldigt viktigt när vi nu är redo att lägga upp applikationen på Bineros server.

5. Flytta projektet till webbhotellet

Hösten 2023 gäller följande

Applikationen skall läggas upp i en egen mapp på din domän som finns på Miss Hostings webbhotell. På Miss Hosting har du tillgång till en enda databas och denna används för tillfället av WordPress. Det går att lägga till egna tabeller i denna databas men det är lite riskabelt att låta eleverna röra i denna databas, risken är för stor att WordPress då slutar att fungera.

Via Google Chat har du fått användarnamn, lösenord och en länk till phphMyAdmin som kan användas online. Denna databasen ligger fysiskt hos Oderland vilket är ett annat webbhotell. Det går dock att koppla ihop en applikation som ligger hos Miss Hosting med en databas som ligger hos Oderland.

Inställningar för att koppla upp mot databasen på Oderland

$host = "server1.serverdrift.com";   // Den server där databasen ligger
$user = "alstromerh_username";       // Ditt användarnamn
$pwd  = "hemligt";                   // Ditt lösenord
$db   = "alstromerh_username";       // Databasen vi vill jobba mot

Problem med att koppla upp?

Det finns en säkerhet hos Oderland som gör att jag manuellt måste öppna ip-adresser som kan nå databaserna. De öppna IP-adresserna är för tillfället 193.%.%.% och 185.%.%.% och det är dessa IP-adresser som använts tidigare.

Om det skulle uppstå problem att koppla upp mot databasen så kan du kolla vilken ip-adress som din server har. Du kollar det enklast genom att skapa en php-fil med koden nedan och kör denna från din domän.

Kod för att kolla serverns ip-adress

<?php
  echo $_SERVER['SERVER_ADDR'];
    

5.1 Ändra database_connection.php

I den bästa av världar så testar vi applikationen lokalt på vår webbserver och sedan så ändrar vi informationen i database_connection.php så att den fungerar på webbhotellet och sedan behöver vi aldrig ändra något eller vidareutveckla vår applikation igen. Tyvärr så fungerar det oftast inte så. Att byta databasinformation hela tiden mellan webbhotellet och vår lokala databasserver skapar bara irritation. Att skapa två filer, en lokalt och en på webbhotellet server, och sedan aldrig skriva över den ena eller den andra brukar heller inte fungera. Då är en bättre lösning att bygga in i php-filen att den läser av servernamnet och om det är localhost så används viss information, annars används annan information. Detta är ganska enkelt fixat, koden kommer här.

Kodexempel: database_connection.php

kod

5.3 Flytta databas

Det är dags att gå till din lokala databas och exportera hela tabellen user som sql-skript.

Logga sedan in på den phpMyAdmin som är kopplad till din databas på webbhotellet. Kör sql-skriptet så att tabellen med allt innehåll hamnar i den databasen.

5.4 Flytta applikationen

Då är det dags att flytta hela mappen med din applikation till webbhotellets server. Gör detta med FileZilla och var noggrann så att mappen hamnar på det ställe där du vill ha den.

5.5 Testa applikationen på din domän

Kör nu igenom testschemat som jag skapade under punkt 4.1 tidigare. Detta är viktigt, först nu vet du om din applikation fungerar fullt ut på din server.

5.5.1 Truncate table

När du har testat så är det inte helt osannolikt att du har lite testdata som ligger och skräpar i din databas. Kanske retar du dig också på nummerserier för automatskapade nummer som inte är vad du vill att de skall vara. Du kanske inte vill att när din kund skall skapa sin admin att hen får userId 22. Det finns ett bra sql-kommando för detta.

Kodexempel: truncate

TRUNCATE table user;

Det kommandot tar bort allt innehåll i den tabellen som du har trunkerat och nollställt alla nycklar så att nästa användare får id 1.

6. Hela applikationens kod

Här kommer alla koder till den fungerande applikationen.

I mina koder och filnamn finns det lite saker som kunde varit bättre, det handlar främst om inkonsekvens i namngivning, ex. insertUser.php och check_login.php, dessa borde ha samma namn men det beror främst på tidigare tutorials som jag arbetat vidare på. Sedan så blandar jag mellan # och // som kommentarer. För php spelar det ingen roll, bägge är korrekta men jag vill helst ha # och det är främst för att endast den färgas som en kommentar i CSource.

Det finns säkert fler saker i min kod som går att diskutera och saker som jag inte är konsekvent kring.

addUser.php

kod

admin.php

kod kod

check_login.php

kod

database_connection.php

kod

deleteUser.php

kod

editUser.php

kod

index.php

kod

insertUser.php

kod

login.php

kod

logout.php

kod

updateUser.php

kod