Forskellen mellem session og cookies

Nøgleforskel mellem session og cookie

  • Sessioner er filer på serversiden, der indeholder brugeroplysninger, hvorimod cookies er filer på klientsiden, der indeholder brugeroplysninger.
  • Session er afhængig af Cookie, men Cookie er ikke afhængig af en session.
  • En session slutter, når en bruger lukker sin browser, mens en cookie udløber afhængigt af den levetid, du har angivet for den.
  • Du kan gemme så mange data, som du vil i en session, men datalagerpladsen i en cookie er kun 4KB.
  • Alle de registrerede data i en session kan destrueres ved hjælp af Session_destroy() kommandoen. Der er dog ingen sådan kommando som unsetcookie() til at fjerne data fra en cookie.  

Forskellen mellem session og cookies
Forskellen mellem session og cookies

Her har jeg analyseret forskellen mellem Session og Cookie og vil grundigt evaluere deres fordele og ulemper.

Hvad er en session?

En session er en global variabel, der er gemt på serveren. Hver session tildeles et unikt ID, som bruges til at hente lagrede værdier. Hver gang en session oprettes, gemmes en cookie indeholdende det unikke sessions-id på brugerens computer og returneres med hver anmodning til serveren. Hvis klientbrowseren ikke understøtter cookies, vises det unikke sessions-id i URL'en. Sessioner har kapacitet til at lagre relativt store mængder data sammenlignet med cookies.

Sessionsværdierne slettes automatisk, når browseren lukkes. Hvis du vil gemme værdierne permanent, bør du gemme dem i database.

Ligesom $_COOKIE-arrayvariablen gemmes sessionsvariabler i $_SESSION-arrayvariablen. I lighed med cookies skal sessionen startes før eventuelle HTML-tags.

Hvorfor og hvornår skal jeg bruge Sessions?

Sessioner bruges til at overføre værdier fra en side til en anden. De gemmer vigtige oplysninger, såsom bruger-id'et, mere sikkert på serveren, hvor ondsindede brugere ikke kan manipulere med dem.

Det bruges også, når du ønsker et alternativ til cookies på browsere, der ikke understøtter cookies, for at gemme globale variabler på en effektiv og mere sikker måde. Det er bedre end at sende dem i URL'en, eller når du udvikler en applikation såsom en indkøbskurv, der midlertidigt gemmer information med en kapacitet større end 4KB.

Oprettelse af en session med PHP

For at starte en session skal du starte session_start-funktionen i PHP og efterfølgende gemme dine værdier i $_SESSION superglobal array.

Overvej det scenarie, hvor du vil spore hyppigheden af ​​sidebesøg. At bruge en session er en effektiv metode til dette formål.

Følgende eksempel viser, hvordan du etablerer og får adgang til værdier i sessioner:

<?php

session_start(); //start the PHP_session function 

if(isset($_SESSION['page_count']))
{
     $_SESSION['page_count'] += 1;
}
else
{
     $_SESSION['page_count'] = 1;
}
 echo 'You are visitor number ' . $_SESSION['page_count'];

?>
Output:
You are visitor number 1

Fordele ved session

Her er fordelene ved sessionen fra mit perspektiv.

  • Forbedrer brugerinteraktion ved at opretholde en kontinuerlig dialogtilstand på tværs af flere anmodninger.
  • Reducerer serverbelastning ved midlertidigt at gemme brugerdata.
  • Forbedrer sikkerheden gennem kontrolleret dataeksponering i begrænset varighed.
  • Tillader personlige oplevelser baseret på brugeradfærd og præferencer.
  • Letter komplekse transaktioner ved at holde styr på flere trin.
  • Øger webstedets ydeevne ved at minimere behovet for at gengodkende.
  • Understøtter skalerbarhed ved at administrere brugersessioner effektivt på tværs af distribuerede systemer.

Ulemper ved session

Efter min erfaring er disse ulemperne ved at bruge sessioner.

  • Øger risikoen for databrud, hvis sessionsdata opsnappes.
  • Forbruger serverhukommelse, hvilket potentielt reducerer den samlede systemydelse.
  • Det kan føre til inkonsekvente brugeroplevelser, hvis det administreres forkert.
  • Kræver yderligere serverressourcer for at vedligeholde og overvåge sessioner.
  • Sessionsudløb kan forstyrre brugeraktiviteter og forårsage frustration.
  • Sårbar over for sessionskapring og fikseringsangreb.
  • Det kan komplicere overholdelse af fortrolighedsbestemmelser på grund af vedvarende datalagring.

Hvad er en cookie?

En cookie er en lille fil med en maksimal størrelse på 4KB, som webserveren gemmer på klientcomputeren. Når en cookie er blevet indstillet, returnerer alle sideanmodninger, der følger, cookienavnet og -værdien. En cookie kan kun læses fra det domæne, den er udstedt fra. For eksempel kan et cookiesæt, der bruger domænet www.guru99.com, ikke læses fra domænet career.guru99.com. De fleste websteder på internettet viser elementer fra andre domæner, såsom annoncering. Domænerne, der betjener disse elementer, kan også indstille deres egne cookies. Disse er kendt som tredjepartscookies. En cookie oprettet af en bruger kan kun være synlig for dem. Andre brugere kan ikke se dens værdi. Mest webbrowsere har muligheder for at deaktivere cookies, tredjepartscookies eller begge dele.

Hvorfor og hvornår skal jeg bruge cookies?

HTTP er en statsløs protokol; cookies giver os mulighed for at spore applikationens tilstand ved hjælp af små filer gemt på brugerens computer. Stien, hvor cookies gemmes, afhænger af browseren. Internet Explorer gemmer dem normalt i mappen Temporal Internet Files.

Tilpasning af brugeroplevelsen: Dette opnås ved at give brugerne mulighed for at vælge deres præferencer. Sideforespørgslerne, der følger, er personlige baseret på de indstillede præferencer i cookies. Sporing af sider besøgt af en bruger.

Oprettelse af cookies med PHP

Lad os nu dykke ned i den grundlæggende syntaks, der er nødvendig for oprettelse af cookies.

<?php

setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]);

?>
  • I PHP, setcookien funktion bruges til at generere en cookie. "cookie_name" repræsenterer identifikatoren for cookien, hvilket er vigtigt for serveren, når den skal hente cookiens værdi fra $_COOKIE-arrayet. Dette navn er obligatorisk.
  • "cookie_value" angiver cookiens indhold og er også påkrævet.
  • Parameteren "[udløbstid]" er valgfri og kan indstilles til at diktere cookiens levetid, ligesom at indstille den til at udløbe om 1 time. Dette gøres ved at tilføje eller trække sekunder fra PHP time()-funktionen, for eksempel time() + 3600 for at indstille 1 time.
  • "[cookie_path]" er en anden valgfri parameter, der bestemmer serverstien, hvor cookien er tilgængelig. Brug af en skråstreg "/" angiver, at cookien er tilgængelig på tværs af hele domænet, mens angivelse af undermapper begrænser adgangen til disse underdomæner.
  • Parameteren "[domæne]", også valgfri, bestemmer, hvor der kan tilgås cookien. For eksempel at indstille den til www.cookiedomain.com gør det tilgængeligt på tværs af hele domænet, hvorimod www.sub.cookiedomain.com begrænser det til det underdomæne og dets underdomæner. Husk, at et underdomæne også kan have sine egne underdomæner, så længe domænets samlede længde ikke overstiger 253 tegn.
  • Parameteren "[sikker]" er valgfri, og standardindstillingen er falsk. Den specificerer, om cookien skal transmitteres over HTTPS (hvis sand) eller HTTP (hvis falsk).
  • Indstillingen "[Httponly]" er også valgfri. Når den er sat til sand, kan cookien ikke tilgås af scriptsprog på klientsiden som f.eks JavaScript .

Bemærk: PHP setcookie-funktionen skal kaldes, før nogen HTML-tags udlæses.

Lad os overveje et praktisk eksempel, der involverer cookies.

I dette tilfælde udvikler vi et simpelt program, der gemmer et brugernavn i et cookiesæt til at udløbe efter ti sekunder.

Følgende "cookies.php"-kode viser, hvordan dette implementeres.

<?php
     setcookie("user_name", "Guru99", time() + 60,'/'); // expires after 60 seconds
     echo 'the cookie has been set for 60 seconds';
?>
Output:
the cookie has been set for 60 seconds

Fordele ved cookies

Fra min erfaring er her fordelene ved cookies:

  • Forstærker overraskelseselementet i smagsopdagelse.
  • Tilbyder en minimalistisk æstetik, ideel til moderne branding.
  • Reducerer emballagerod og fokuserer opmærksomheden på produktet.
  • Eliminerer skævhed baseret på ingredienspræferencer eller mærkeopfattelse.
  • Tilskynder til smagning uden forudfattede meninger, hvilket fører til upartisk feedback.
  • Potentielt sænker printomkostningerne til emballage.
  • Forenkler overholdelse af lovgivning på markeder med mindre strenge mærkningslove.

Ulemper ved Cookie

Baseret på hvad jeg har set, er disse ulemper ved cookies.

  • Kunder kan ikke identificere allergener eller diætrestriktioner.
  • Mangler ernæringsinformation, hvilket er vigtigt for sundhedsbevidste forbrugere.
  • Savner muligheden for at fremhæve unikke eller førsteklasses ingredienser.
  • Det kan skabe forvirring blandt lignende produkter på hylderne.
  • Forhindrer mærkegenkendelse og loyalitetsopbygning.
  • Forringer informeret forbrugerbeslutningstagning.
  • Dette kan føre til juridiske problemer i regioner med strenge mærkningslove.

Session vs Cookie: Forskellen mellem dem

Her er de vigtige forskelle mellem en session og en cookie, som jeg har observeret i min praksis:

Session vs Cookie
Session vs Cookie

Session
Cookie

Sessioner er filer på serversiden, som indeholder brugeroplysninger

Cookies er filer på klientsiden, der indeholder brugeroplysninger

En session slutter, når en bruger lukker sin browser

Cookien slutter afhængigt af den levetid, du har angivet for den

In PHP, før du bruger $_SESSION, skal du skrive session_start(); Ligeledes for andre sprog

Du behøver ikke at starte cookien, da den er gemt på din lokale maskine

Inden for en session kan du gemme så mange data, du vil. Den eneste grænse, du kan nå, er den maksimale hukommelse, et script kan forbruge på én gang, hvilket er 128 MB som standard

Den officielle maksimale cookiestørrelse er 4KB

En session er afhængig af Cookie

En cookie er ikke afhængig af sessionen

Session_destroy() bruges til at ødelægge alle registrerede data eller til at deaktivere nogle

Der er ingen funktion ved navn unsetcookie()

Konklusion

Jeg anbefaler at bruge sessioner, når kravene til datasikkerhed og kapacitet overstiger, hvad cookies kan tilbyde. Cookies er dog uovertrufne af hensyn til brugervenlighed og til implementering af letvægts, vedvarende brugertilstandssporing.