Annons:
Etikettprojekt
Läst 6244 ggr
[Fibbe]
2011-05-19 19:13

Kom igång med Php (6/7)

HTML och Php kan utgöra en perfekt kombination när det gäller att spara data från användaren. I det här skedet ska vi enbart lära oss att spara data temporärt. Detta gör vi via sessioner (sessions). För att permanent spara data ska vi lära oss MySQL senare.

Post

Php har en väldigt användbar funktion som kan ta emot postad data från användaren. Vi kan göra ett formulär i HTML som, när skickats, kan hanteras av Php. Detta görs via en global variabel som heter $_POST. Att variabeln är global innebär att den kan kommas åt från alla våra php-filer utan att behöva deklareras. Så här fungerar det i enkelhet:

Man skapar input-fält i html och namnger dessa. Man skickar alla dessa input-fält med form-taggen.

När de är skickade kan vi hämta värdet på fälten med $_POST-variabeln i Php. $_POST är en array, varje värde som skickats har samma index i $_POST som namn i HTML.

Exempel:

"; echo "Förnamn: $\_POST\[post\_name\]
"; echo "Efternamn: $\_POST\[post\_surname\]
"; } ?>
Förnamn:
Efternamn:

Om vi testar exemplet ovan får vi först enbart 2 textfält och en knapp. Men skickar vi data en gång så ser vår Php-kod detta och visar texten:

Nu har nån skickat data från HTML till Php.
Förnamn: Mitt förnamn
Efternamn: Mitt efternamn

I koden ovan har jag valt att använda mig av ett dolt fält för att identifiera vad som skickats, fältet test_field. if-satsen, if(isset($_POST['test_field'])), kontrollerar om fältet test_field finns i $_POST-variabeln. Om det inte finns har inte formuläret skickats och vi kommer inte behöva hantera någon data. Detta kan vara väldigt smidigt i större webbsystem som ska hantera fler olika formulär i samma fil.

Man skulle även kunna använda koden så här:

"; echo "Förnamn: $\_POST\[post\_name\]
"; echo "Efternamn: $\_POST\[post\_surname\]
"; ?>
Förnamn:
Efternamn:

Men man kommer då att få en notis om att variablerna man försöker visa inte finns om användaren inte skickat någon data. Notisen ser ut så här:

Notice: Undefined index: post_name in C:\Program Files (x86)\EasyPHP-5.3.6.0\www\Index.php on line 3

För att undvika detta bör man göra enligt det ovanstående exemplet.

GET

Det finns även en annan funktion som ger oss möjlighet att kommunicera med användaren. Nämligen GET. Denna funktion fungerar liknande som post, variabel heter $_GET. Istället för att användaren skickar ett värde från HTML kan vi hämta ett värde från adress-fältet. Vi kan ändra detta värde med hjälp av länkar.

Exempel:

Gå tillbaka'; } } // Om page inte finns i adressfältet else { echo 'Du är på första sidan
Gå till sida 2'; } ?>

Som vi ser när vi klickar på länken så blir adressen:

http://localhost:8888/?page=page2

Det är det som står efter frågetecknet vi kommer åt med $_GET. Om vi vill ställa in fler GET-variabler så måste vi skriva ett &-tecken mellan varje:

http://localhost:8888/?page=page2&menu=menu1

I ovanstående adressrad kan vi alltså komma åt $_GET['page'] som har värdet page2, vi kan även komma åt $_GET['menu'] som har värdet menu1. Vi kan nu alltså, enligt kod-exemplet ovan, skapa fler sidor med hjälp av en fil. Vi kan även få sidor att bete sig olika beroende på vilka GET-värden som finns, till exempel ställa in en meny.

Vill vi länka till en anna fil än index.php, men ändå ange GET-variabler länkar vi enligt följande:

Länk

Sessioner

Sessioner används för att spara data om en användare för en kort tid. Så länge besökaren är inloggad på webbsidan eller låter webbläsaren vara öppen kan vi spara information i sessioner. Detta är väldigt användbart för att hålla en användare inloggad i vårt webbsystem. Användaren kan aldrig ändra på en session, det enda som kan göras utifrån är att avsluta sessionen, logga ut.

Sessioner används precis som poster, en global array. Sessionernas variabel heter $_SESSION. Men för att kunna skapa sessioner hos användaren måste vi först starta den funktionen.

Alla sidor som använder sessionsfunktionen måste ha detta funktionsanrop högst upp i koden:

session_start();

OBS! Inget får vara utskrivet innan denna funktion anropas. Om det finns html-kod ovanför kommer det att bli error.

När sessionerna är igång så kan vi enkelt skapa sessioner precis som när vi ändrar värde i en vanlig array:

$_SESSION['test_session'] = 1;

Nu har vi skapat en session med namn test_session, denna kan vi komma åt från alla våra webbsidor som har session_start() i toppen av koden. Vi kommer åt denna variabel precis som när vi ska komma åt ett värde i vanlig en array:

echo $_SESSION['test_session'];

Räkna uppdateringar

Nu ska vi göra ett enkelt script (php-kod) som räknar hur många gånger vi uppdaterar vår webbsida.

Detta kan till exempel Göras så här:

Testa gärna denna kod, den kommer att fortsätta räkna varje uppdatering tills webbläsaren stängs.

För att nollställa alla sessioner från php så ropar man på följande funktion:

session_destroy();

Då tar vi bort alla sessioner vi skapat. Vi kan få vår räknare att räkna till 5 och sedan börja om från 1 igen genom att göra så här:

Det finns fler funktioner som rör sessioner, dessa går att läsa om på php.net.

Cookies

Cookies eller kakor, som det kan översättas till, är små textfiler som vi kan lagra i våra besökares datorer. Med dessa kakor kan vi spara data hos en användare även när den slår av datorn, den finns sparad även när datorn startas igen. Det lite luriga med kakor är att dessa kan användaren modifiera hur som helst. De är därför inte så säkra som sessioner. I kakor kan man dock spara användarens lösenord och användarnamn, om användaren vill det, så att vi kan logga in användaren automatiskt, på vårt webbsystem, varje gång den besöker vår webbsida.

Vi kommer inte att gå in något djupare på cookies i denna artikelserie. Anledningen är att detta inte är speciellt nödvändigt att kunna i detta skede.

Prova själv

Vi kan nu ta emot data från användaren, vi kan även starta sessioner. Kan vi då göra ett väldigt enkelt inloggningssystem?

Testa att göra ett egen med hjälp av denna pseudokod:


Tips och diskussion i den här tråden

Nästa artikel i serien »

Annons:
Upp till toppen
Annons: