Sessions i PHP

Tags:    php
Skrevet af Bruger #479 @ 18.08.2002
Session i PHP

Når det drejer sig om at gemme oplysninger om brugeren, kommer sessions som sent fra himlen. Det er langt lettere at bruge end cookies, og når session tilmed et langt mere sikret at arbejde med må lykken være nået. I denne artikel vil jeg gennemgå brugen af sessions med PHP. Artiklen er skrevet efter PHP 4.2.0 standarten, men vil også gennemgå ældre metoder.


Hvad er session?


Med session for du som PHP programmør mulighed for at overføre informationer imellem forskellige sider på dit website. Session kan altså sammenlignes med superglobale variabler, som kan overføres mellem forskellige sidder. Sessions kunne for eksempel bruges til at lave et login-system, som jeg vil vise dig til sidst i denne artikel.

Hvordan bruger jeg session?


Som skrevet tidligere er denne artikel baseret på PHP 4.2.0 standarten. Dette betyder at register_globals er slået fra. Bruger du 4.1.0 kan du med fordel, selv sætte register_globals til off. Se evt. PHPs egen release note http://dk.php.net/release_4_1_0.php
Selvom jeg først vil gennemgå den mere tekniske del af session senere, bliver du nødt til allerede nu at åbne din php.ini. Du skal finde linjen session.save_path som angiver hvor php skal gemme nogle oplysninger. Tænk ikke så meget over det endnu, men set dens værdi til en eller anden mappe hvori du vil gemme oplysningerne. Fx C:\\session
Og lad os så komme i gang med at kode :o)

Eksempel1:
<?php
session_start(); //Starter session.
$_SESSION['test'] = "Session er smart"; 
//Vi tildeler test i session arrayet værdien, session er smart. echo $_SESSION['test']; //Session er smart, vil denne kommando skrive på skærmen. ?>

Her kommer en gennemgang af koden:
session_start()
Session_start funktionen starter sessions. Dette er nødvendigt for at du kan arbejde med sessions. Husk det nu.

$_SESSION['test']
$_SESSION er et array som kan bruges til gemme session værdier. Bruger du en ældre PHP version end 4.1.0 så brug $HTTP_SESSION_VARS istedet. En af de lækre ting ved at bruge session arrayet, er at du kan behandle det som et normalt array. Førhen var det noget mere besværligt at bruge session, da man skulle bruge specielle session funktioner. Hvis du bruger $_SESSION er arrayet, som en ekstra feature, automatisk globalt, det er det ikke hvis du benytter $HTTP_SESSION_VARS. Dette betyder at du kan lave følgende kode:
<?php
function eksempel1()
{
    echo $_SESSION['test'];   // Virker, 'global $SESSION' er ikke nødvendigt
    echo $HTTP_SESSION_VARS['test']; //Virker IKKE, 'global $HTTP_SESSION_VARS' er nødvændigt
}
?> 

Dette gør arbejdet med $_SESSION lettere.

echo
Echo kommandoen kender du allerede. Som du kan se skal du bare udskrive værdier i session arrayet, som om det var et normalt array.

Nu var eksempel1 ikke et særligt brugbart eksempel. Vi kunne have brugt et ganske normalt array i stedet, men nu vil jeg vise dig sessions virkelige kræfter:
Eksempel2:
Side1.php
<?php
session_start(); //Starter session
$_SESSION['var'] = "Session"; 
//Tildeler en vædrdi til var. Brug $HTTP_SESSION_VARS i ældre versioner end 4.1.0. ?> <a href="Side2.php">Gå nu til Side2.php</a>
Side2.php
<?php
session_start(); //Starter session
echo $_SESSION['var']; //Vil skrive, Session, på skærmen. Brug $HTTP_SESSION_VARS i ældre versioner end 4.1.0.
?>

Dette eksempel viser hvad session virkelig kan. Værdien 'var' bliver overført gennem forskellige sidder. Vi kunne have lavet så mange sidder vi ville, alle sidder hvor session_start bliver kaldt har vi adgang til session variablerne. Behandling af session variabler er meget let. Vi kan bruge normale funktioner til det, her er et eksempel:
Eksempel3:
<?php
session_start(); //Den kender du allerede
If (!isset($_SESSION['var'])) { 
//Husk, igen, at bruge $HTTP_SESSION_VARS i ældre versioner end 4.1.0. //isset tjekker om en variabel findes $SESSION['var'] = 1; } else { unset($_SESSION['var']); //Vi unsetter variablen var. } ?>
Jeg håber du forstod det meste af denne kode. Isset funktionen tester om en variabel er sat (bemærk: Der er et ! foran isset, så hvis variablen ikke er sat, bliver udsagnet sandt), og unset funktionen "sletter" en variabel.
Du har nu set nogle eksempler på brugen af sessions, og jeg håber at du begynder at forstå hvordan det virker.

Hvad med session_register?


session_register bør ikke bruges sammen med $_SESSION eller $HTTP_SESSION_VARS hvis register_global er slået fra (ifølge the PHP group). Og eftersom PHP fra og med version 4.2.0 som standart ikke har register_global slået til, vil jeg heller ikke gennemgå denne metode.
I stedet vil jeg nu vise dig en lidt mere teknisk side af sessions:

Hvordan fungere sessions?


For at sessions kan kende forskel på forskellige brugere, giver den vær computer et id. Dette id kan gemmes på to måder:

  • Via cookies
  • Via URL

    At bruge cookies er klart det bedste, men brugeren kan vælge at igonere dem. Derfor findes der også en anden måde at gemme id'et på computeren. Den overføre simpelthen id'et via URL parameter. Men hvis du fx har en DHTML menu, virker denne teknik ikke. Du skal derfor kun bruge denne metode hvis din side består af rene links, altså ikke noget med JavaScript. Her er en liste over de indstillinger du kan bruge med sessions: (De findes i din php.ini fil)

    session.save_handler
    Bestemmer hvordan dine sessionsfiler skal gemmes. Som standart files (Man kunne fx bruge en database).


    session.save_path
    Den har vi allerede kigget på. Den bestemmer hvor dine sessions oplysninger skal gemmes (Altså dine filer hvis du har valgt filer i session.save_handler)


    session.name
    Bestemmer det navn cookien der gemmes på brugerens computer, og som indeholder pc'ens id skal hede. Som standart PHPSESSID


    session.auto_start
    Hvis du er lidt glemsom, og har svært ved at huske session_start hver gang du arbejder med sessions, kan du sætte denne til 1 så starter session af sig selv. Som standart 0


    session.cookie_lifetime
    Bestemmer hvor lang tid der skal gå, inden den cookies der indeholder PHPSESID skal slettes. Som standart 0 hvilket betyder at cookien slettes når browseren lukkes.


    session.use_cookies
    Bestemmer om PHP skal bruge cookie til at gemme PHPSESSID'et på brugerens computer. Som standart 1


    session.use_only_cookies
    Bestemmer om session kun skal bruge cookies til at gemme brugerens PHPSESSID. Dette fjerne muligheden for at overføre id'et via URL. Som standart 0


    session.cookie_path
    Bestemmer hvor session skal gemme cokkiene. Som standart /


    session.use_trans_sid
    Bestemmer om PHP selv skal tilføje PHPSESSID'et på dine links. Som standart 1


    url_rewriter.tags
    Bestemmer hvilke html tag der skal få PHPSESSID'et. Som standart a=href,area=href,frame=src,input=src,form=fakeentry


    Alle andre
    Disse vil jeg ikke gennemgå. Se evt. PHP's manual


  • Lav et login system

    Som lovet vil jeg nu vise dig hvordan du kan lave et loginsystem. MySQL bruges som database:
    Først skal databasen oprettes, kør denne SQL kommando:
    CREATE TABLE `brugere` (
    `Id` INT NOT NULL, 
    `Brugernavn` TEXT NOT NULL, 
    `Password` TEXT NOT NULL,
    PRIMARY KEY (`Id`)
    ); 
    
    Jeg vil ikke gennemgå at lave en opret bruger side, så vi indsætter selv tingende i databasen:
    INSERT INTO `brugere` (`Id`, `Brugernavn`, `Password`) VALUES ('1', 'Jesper', 'Admin');  
    
    Det var det, og lad os så begynde at kode PHP.
    Først vil vi naturligt nok lave en login side:
    login.html
    <form name="Login" method="POST" action="login-test.php">
    Brugernavn: <input type="text" name="Brugernavn"><br>
    Password:   <input type="password" name="Password"><br>
    <input type="submit" name="Submit" value="Login">
    </form>
    
    Det er bare noget html kode.
    Her har du login-test.php
    
    
    <?php
    session_start();
    $conn = mysql_connect("localhost", "brugernavn", "password");
    mysql_select_db("database"); //Indtast selv de rigtige oplysninger
    
    if(!isset($_POST['Submit'])) { //Tester om brugeren kom fra  login.html
        echo "Du skal komme fra login.php";
        }else{
            $postbruger = $_POST['Brugernavn'];
            $postpass = $_POST['Password']; 
    //For læservenligheden overføres post variablerne til normale variabler $resultat = mysql_query("SELECT Id FROM `brugere` WHERE Brugernavn = '$postbruger' AND
    Password = '$postpass'");//Spørger efter ID $number = mysql_num_rows($resultat);//Tæller antaller af resultater if($number == 1) { //Hvis der kun er et resultat, bliver brugeren logget in $_SESSION['loget_in'] = 1; $_SESSION['Brugernavn'] = $postbruger; $_SESSION['Password'] = $postpass; //Sætter session variablerne echo "Du er nu logget in"; }else echo"De indtastede oplysninger er ikke korrekte"; } ?> </body> </html>
    Koden er ikke særlig avanceret, brugerens input burde blive valideret og meget andet. Men her er det mest basale for et login system. Der bliver sat nogle session variabler, som vi skal bruge i næste eksempel.
    Denne kode skal indsættes på alle sidder, hvor login kræves:
    <?php
    session_start();
    if(!$_SESSION['loget_in'] == 1) {//Hvis brugeren ikke er logget in
    header("Location: http://www.domain.dk/login.html");//Sender brugeren videre
    exit;//Sørger for at resten af koden, ikke bliver udført
    }
    
    //Al din kode
    ?>
    
    Hvis brugeren ikke er logget in, bliver han smidt til loginsiden. exit sørger for at resten af din kode ikke bliver udført.

    Jeg håber at du har lært noget af at læse denne artikel, så den ikke er skrevet helt forgæves. Så snart jeg finder en server at uploade eksemplerne på, kan de findes i download sektionen.



    Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

    Del også gerne artiklen med dine Facebook venner:  

    Kommentarer (44)

    User
    Bruger #2529 @ 10.01.03 21:16
    God artikel men jeg har lige et spørgsmål:
    Kan man få computeren til at glemme sessions variablerne så når man trykker på logud (eller noget) så glemmer den det så man ikke bare er logget ind igen? Eller skal man bare tømme variablerne?
    User
    Bruger #479 @ 13.01.03 16:31
    Ja, du skal bare tømme variablerne:
    $_SESSION['noget'] = "";
    User
    Bruger #479 @ 03.02.03 09:13
    claus, du kan godt sætte alt din kode uden for ?>, koden vil sende brugeren væk hvis han ikke har adgang til siden, før noget andet kode hentes.
    User
    Bruger #2256 @ 30.01.03 19:46
    Det var selvfølgelig ikke en tuborgklamme jeg mente, men ?>
    User
    Bruger #2256 @ 30.01.03 19:57
    Det var selvfølgelig ikke en tuborgklamme jeg mente, men ?>
    User
    Bruger #2256 @ 30.01.03 19:44
    Rigtig god artikel... Har lige et enkelt spørgsmål:

    Du siger man skal sætte den sidste kode i din artikel øverst på alle de sider man vil have beskyttet... Dvs. at alt det man vil have med, skal stå inden den sidste tuborgklamme i session-kontrollen... Men hvad så hvis man har noget HTML midt i koden... Skal der så skrives echo foran al det kode ??? Hvis man skal hvordan klarer man den ?
    User
    Bruger #2159 @ 21.01.03 14:31
    Meget fin artikel jeg kom til at tænke på hvorfor det engtligt er godt at skrive $_post['test'] og $_session['test'] for så vidt jeg ved kan man også bare skrive $test til dem begge to
    User
    Bruger #479 @ 21.01.03 21:56
    Per> http://dk.php.net/release_4_1_0.php
    User
    Bruger #1162 @ 24.01.03 21:29
    god artikkel men jeg syntes bare at når man laver sådna en god artikkel så laver man den færdig. det jeg mener er at du godt kunne ha lavet en opret funktion til også så man fik det hele med
    User
    Bruger #479 @ 26.01.03 12:05
    Martin, dette er en artikel om session, og derfor lavede jeg ikke et opret script. Prøv at læse artiklerne om MySQL.
    User
    Bruger #1162 @ 05.02.03 19:54
    så nu har ejg fået det til at virker men at lige en rettelse til artiklen din db burte nok at se sådan ud

    CREATE TABLE `brugere` (
    id int(10) unsigned DEFAULT '0' NOT NULL auto_increment,
    `Brugernavn` TEXT NOT NULL,
    `Password` TEXT NOT NULL,
    PRIMARY KEY (`Id`)
    );


    kunne i vært fald ikke få det andet til at virke
    så hvis der e rnogen der vil han en opret funktion til deres script findes det her
    http://www.udvikleren.dk/eforum/thread.php?f=5&t=465
    User
    Bruger #479 @ 21.02.03 15:03
    Det har du ret i, men det var fordi tabellen ikke var bygget til et opret script.
    User
    Bruger #2421 @ 24.05.03 14:07
    Du kan slette en session således:
    unset($_SESSION['noget']);
    User
    Bruger #1162 @ 22.06.03 21:56
    til dem der gerne ville ha en opret funtion
    http://www.udvikleren.dk/thread.php?f=6&t=465&searchword=opret%20bruger
    User
    Bruger #4224 @ 19.07.03 02:02
    Warning: open(C:\\apache\\php\\sessions\\sess_9355d6fc231e857ac1b580c850a38bc9, O_RDWR) failed: m (2) in C:\\apache\\htdocs\\sessions.php on line 2
    Session er smart
    Warning: open(C:\\apache\\php\\sessions\\sess_9355d6fc231e857ac1b580c850a38bc9, O_RDWR) failed: m (2) in Unknown on line 0

    Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (C:\\apache\\php\\sessions) in Unknown on line 0

    ^den besked får jeg, når jeg tester det.. Hvad gør jeg galt? Jeg har lavet en copy & paste med koden, så jeg kan da ikke ha skrevet forkert?
    User
    Bruger #3667 @ 22.07.03 01:39

    Warning: Cannot send session cookie - headers already sent by (output started at /var/www/hotels/1go/clangangsta/html/login-test.php:2) in /var/www/hotels/1go/clangangsta/html/login-test.php on line 3

    Warning: Cannot send session cache limiter - headers already sent (output started at /var/www/hotels/1go/clangangsta/html/login-test.php:2) in /var/www/hotels/1go/clangangsta/html/login-test.php on line 3
    De indtastede oplysninger er ikke korrekte

    Den får jeg =(
    hva hulen er det?
    Ellers fed artikel :)
    User
    Bruger #3667 @ 22.07.03 02:10
    nah...løst...død over webwriter-progs ;(
    User
    Bruger #3710 @ 26.07.03 19:33
    Jeg syntes at det var en meget god artikel du havde skrevet, jeg lærte ihvert fald meget af den.. Blive endelig ved med det..
    User
    Bruger #4346 @ 28.08.03 09:52
    2tal nice aktile ;) enligt fandt jeg den aktile jeg har lete så lang tid efter ;) 1000 takker til dig ;D
    User
    Bruger #1151 @ 14.09.03 18:23
    Synes han gennemgår det meste, men ret lige artiklen så der med stort kommer til at stå at session er case sensitive!!! Det har voldt mig store problemer.
    Synes også han mangler at forklare hvordan man logger ud! Eller sagt på en anden måde, hvordan man sletter sn session!
    User
    Bruger #4302 @ 27.09.03 23:17
    hvordan gør man så man kan ændre bruger navn og kode som man vil uden at skal bruge mysql ?(jeg mener logge ind og alt det der)
    User
    Bruger #4003 @ 11.11.03 12:19
    @ Shaft: Bare lige en kommentar til dit problem = session_start(); SKAL kaldes INDEN der output'es nogen form for html til browseren, hvad enten det er html echo'et fra php eller html skrevet udenfor php tags...ellers får du din "headers already sent" fejl.

    I øvrigt: Mht. logout, så kunne man jo bare nedlægge sessionen, i stedet for at unset'e session variablene: session_destroy();
    User
    Bruger #4925 @ 21.12.03 11:13
    Helt sikkert en god artikel, jeg har længe kigget skævt på session og dens brug, men den her artikel har gode eksempler og viser dens brug..

    Tak for hjælpen :)
    User
    Bruger #2270 @ 26.12.03 17:15
    Alt i alt en god artikel! Den hjalp mig en del med sessions.

    Men, hvordan får man login systemet til at logge en ud når man lukker vinduet?
    User
    Bruger #4940 @ 30.12.03 09:07
    Udmærket artikel.

    Kan man ikke også bruge følgende kode; først til at sætte session og derefter slette den:

    <?php
    $var = "jesper"; // Indholdet bestemmes

    session_start(); // Starter sessions
    session_register(var); //Sætter session 'var'

    session_unregister(var); // Session slettes
    ?>
    User
    Bruger #4887 @ 30.12.03 16:07
    Når jeg logger ind står der bare at jeg skal komme fra login siden?
    User
    Bruger #4887 @ 30.12.03 16:08
    Har fundet ud af det nu.
    User
    Bruger #4887 @ 30.12.03 16:08
    Eller nej det har jeg ik :/
    User
    Bruger #4887 @ 30.12.03 16:13
    Eller nej det har jeg ik :/
    User
    Bruger #4874 @ 18.02.04 04:07
    En virkelig glimrende artikel!! Dog syntes jeg du bør køre den igennem en stavekontrol, eller få en til at hjælpe dig med teksten; jeg bliver i hvert fald lidt irriteret over at alle de stavefejl, og det forstyrrer læsningen en smule :| Meneh, fortsæt endelig det gode arbejde!
    User
    Bruger #5910 @ 16.12.04 22:32
    Jeg er meget glad for din artikel og den har hjulpet mig meget tak!
    5 fra mig
    User
    Bruger #7168 @ 09.02.05 20:32
    Jeg får den fejl når jeg prøver "INSERT INTO `brugere` (`Id`, `Brugernavn`, `Password`) VALUES ('1', 'Jesper', 'Admin');

    "Parse error: parse error, unexpected T_STRING in /var/www/hotels/.dk/mik-web/html/session.php on line 28"

    Nogle der kan hjælpe ?
    User
    Bruger #6731 @ 12.05.05 15:29
    Jaaaaaa........ Det er da fedt nok.
    User
    Bruger #6686 @ 24.05.05 17:46
    Rigtigt god artikel. Kendte slet ikke til session før :O
    Jeg synes også det er rigtig godt, du giver et eksempel på, hvad det kan bruges til!
    Men.. Det der "isset" synes jeg godt, du kunne forklare bedre. Ville du ikke lige forklare det til mig? :)
    User
    Bruger #7964 @ 10.08.05 15:57
    Rigtig god artikel, lærte meget om session...
    User
    Bruger #8096 @ 21.12.05 12:25
    Super fed artikel, jeg lærte at bruge session, nu er jeg tilfreds.. :) Og jeg fik lavet et loginsystem, nuer jeg ved at lave glemt kodeords funktion osv.. :o)
    User
    Bruger #8692 @ 25.01.06 22:01
    En rigtig god artikel, der forklare hvordan sessions kan bruges, fint med login system eksemplet. Jeg vil nu gå igang med at få mit login system til at virke :)

    Ang. med at tømme / slette sessions, der har jeg læst andre steder at man kan bruge session destroy, et link til de dovne:
    http://dk.php.net/function.session-destroy

    Kan man bruge den?


    User
    Bruger #10667 @ 10.10.06 20:25
    Fint artikel - jeg har fået åbnet mine øjne for sessions.

    Problemet jeg har, er at med den kode der, så uanseet hvad jeg gør siger den bare at jeg ikke har indtastet korrekte oplysninger. Og jeg forstår det simpelt hen ikke
    User
    Bruger #12441 @ 11.09.07 12:54
    Hjææælp ?,. hvad skal jeg gøre her :
    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/hotserv.dk/users/kase/login-test.php:9) in /var/www/hotserv.dk/users/kase/login-test.php on line 10

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/hotserv.dk/users/kase/login-test.php:9) in /var/www/hotserv.dk/users/kase/login-test.php on line 10

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/hotserv.dk/users/kase/login-test.php on line 24
    De indtastede oplysninger er ikke korrekte
    User
    Bruger #12441 @ 11.09.07 13:00
    Hjææælp ?,. hvad skal jeg gøre her :
    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/hotserv.dk/users/kase/login-test.php:9) in /var/www/hotserv.dk/users/kase/login-test.php on line 10

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/hotserv.dk/users/kase/login-test.php:9) in /var/www/hotserv.dk/users/kase/login-test.php on line 10

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/hotserv.dk/users/kase/login-test.php on line 24
    De indtastede oplysninger er ikke korrekte
    User
    Bruger #12242 @ 21.10.07 10:21
    Genialt
    du har løst 2 af mine problemer!
    jeg ville have evt. et logiin system
    og jeg ville have at alle mine sider deles om noget indhold som står på en anden side men den del er svær at forklare
    User
    Bruger #14227 @ 03.10.08 12:45
    Warning: open(C:\\apache\\php\\sessions\\sess_9355d6fc231e857ac1b580c850a38bc9, O_RDWR) failed: m (2) in C:\\apache\\htdocs\\sessions.php on line 2
    Session er smart
    Warning: open(C:\\apache\\php\\sessions\\sess_9355d6fc231e857ac1b580c850a38bc9, O_RDWR) failed: m (2) in Unknown on line 0

    Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (C:\\apache\\php\\sessions) in Unknown on line 0

    ^den besked får jeg, når jeg tester det.. Hvad gør jeg galt? Jeg har lavet en copy & paste med koden, så jeg kan da ikke ha skrevet forkert?


    Har samme problem.. help!?
    User
    Bruger #14837 @ 31.03.09 11:10
    Mange tak for denne gode artikel, du glemmer ikke at forklare om noget af det du laver, og det er en god ting, så man ikke bliver smidt af sporet midt i det hele.
    Og lækkert du har dit login eksempel med så man kan tage koden.
    Dog kun en rate på 4 da som mange andre skriver der er nogle stavefejl som faktisk ødelægger koden, den er ikke brugbar med de fejl, men så kan det lære folk at gå det igennem eller selv skrive koden men have din som guideline :)

    Mange tak.
    Nu vil jeg forsøge mig om jeg kan få det til at fungere.
    User
    Bruger #16644 @ 27.05.11 04:22

    Hej kære,
    komplimenter af dagen, håber jeg, Ur fint derovre, jeg vil gerne præsentere mig selv til dig, mit navn er Natasha fra Monrovia, det er mig en fornøjelse at skrive til dig efter at have set din profil i (www.udvikleren.dk), som virkelig interesserer mig i, at venskab med dig, hvis du har lyst til mig, så vi kan komme til at kende hinanden bedre og se, hvad der skete i future.i vil være meget glad, hvis du kan skrive mig via min e-mail for nemmeste kommunikation og til at fortælle dig mere om mig selv og sende dig mit billede, vil jeg være venter på at høre fra dig tak og har en god dag, din nye ven.
    Natasha
    Her er min e-mail, (natashajohnson@she.com)


    _________
    Hello My Dear,
    compliments of the day, I hope Ur doing fine over there, I would like to introduce myself to you, my name is Natasha from Monrovia, it is my pleasure to write you after viewing your profile in(www.udvikleren.dk)which really interest me in, to friendship with you if you have the desire with me so we can get to know each other better and see what happened in future.i will be very glad if you can write me through my email for easiest communication and to tell you more about myself and send you my picture, I will be waiting to hear from you thanks and have a good day, your new friend.
    Natasha
    Here is my Email,(natashajohnson@she.com)
    Du skal være logget ind for at skrive en kommentar.
    t