session start()

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

session_start

(PHP 4, PHP 5, PHP 7, PHP 8)

session_start — Starta en ny session eller återuppta en befintlig session

Beskrivning

session_start(array $options = []): bool session_start() skapar en session eller återupptar den aktuella baserat på ett sessions-ID som skickas via en GET- eller POST-begäran, eller som skickas via en cookie.

När session_start() anropas eller när en session startar automatiskt, kommer PHP att anropa de öppna och läsa-session spara-hanterare. Dessa kan antingen vara en inbyggd spara-hanterare som tillhandahålls som standard eller av PHP-tillägg (såsom SQLite eller Memcached); eller så kan det vara en anpassad hanterare som definieras av session_set_save_handler(). Läsåterkopplingen kommer att hämta eventuella befintliga sessionsdata (lagrade i ett speciellt serialiserat format) och kommer att unserialiseras och användas för att automatiskt fylla $_SESSION-superglobalen när läsåterkopplingen returnerar de sparade sessionsdata tillbaka till PHP:s sessionhantering.

För att använda en namngiven session, anropa session_name() innan du anropar session_start().

När session.use_trans_sid är aktiverad, kommer session_start()-funktionen att registrera en intern utdataledare för URL-omskrivning.

Om en användare använder ob_gzhandler eller liknande med ob_start(), är funktionsordningen viktig för korrekt utdata. Till exempel måste ob_gzhandler registreras innan sessionen startas.

Parametrar

  • options:
 Om det tillhandahålls är detta en associativ array med alternativ som kommer att åsidosätta de för närvarande inställda sessionskonfigurationsdirektiven. Nycklarna ska inte inkludera session.-prefixet.
 Förutom den vanliga uppsättningen av konfigurationsdirektiv kan ett read_and_close-alternativ också tillhandahållas. Om det är inställt på true, kommer detta att resultera i att sessionen stängs omedelbart efter att ha lästs, vilket undviker onödig låsning om sessionsdata inte kommer att ändras.

Returvärden

Denna funktion returnerar true om en session startades framgångsrikt, annars false.

Ändringslogg

Version 7.1.0
session_start() returnerar nu false och initierar inte $_SESSION när det misslyckades med att starta sessionen.

Exempel

Ett grundläggande sessionsexempel
Exempel #1 page1.php
<?php
// page1.php

session_start();

echo 'Välkommen till sida #1';

$_SESSION['favcolor'] = 'grön';
$_SESSION['animal']   = 'katt';
$_SESSION['time']     = time();

// Fungerar om sessionskakan accepterades
echo '<br /><a href="page2.php">sida 2</a>';

// Eller kanske skicka med sessions-ID om det behövs
echo '<br /><a href="page2.php?' . SID . '">sida 2</a>';
?>

Efter att ha tittat på page1.php, kommer den andra sidan page2.php magiskt att innehålla sessionsdata. Läs sessionsreferensen för information om att överföra sessions-ID:n eftersom den till exempel förklarar vad konstanten SID handlar om.

Exempel #2 page2.php
<?php
// page2.php

session_start();

echo 'Välkommen till sida #2<br />';

echo $_SESSION['favcolor']; // grön
echo $_SESSION['animal'];   // katt
echo date('Y m d H:i:s', $_SESSION['time']);

// Du kanske vill använda SID här, som vi gjorde i page1.php
echo '<br /><a href="page1.php">sida 1</a>';
?>
Tillhandahålla alternativ till session_start()
Exempel #3 Åsidosätta kakan livslängd
<?php
// Detta skickar en ihållande kaka som varar i en dag.
session_start([
    'cookie_lifetime' => 86400,
]);
?>
Exempel #4 Läsa sessionen och stänga den
<?php
// Om vi vet att vi inte behöver ändra något i
// sessionen, kan vi bara läsa och stänga direkt för att undvika
// att låsa sessionsfilen och blockera andra sidor.
session_start([
    'cookie_lifetime' => 86400,
    'read_and_close'  => true,
]);
?>

Noteringar

Notera: För att använda kakbaserade sessioner måste session_start() anropas innan något skickas till webbläsaren.

Notera: Användning av zlib.output_compression rekommenderas istället för ob_gzhandler().

Notera: Denna funktion skickar ut flera HTTP-rubriker beroende på konfigurationen. Se session_cache_limiter() för att anpassa dessa rubriker.

Se även

Sidslut

Orginalhemsidan på Engelska :


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webserver.