Сессии и куки в PHP

Активный
Статус
Сообщения
516
Лайки
32

8

месяц на сайте

Сессии и куки позволяют хранить данные между запросами. Разберем использование.

Работа с сессиями
Код:
<?php
session_start();

// Установка переменных сессии
$_SESSION["username"] = "John";
$_SESSION["logged_in"] = true;
$_SESSION["user_id"] = 123;

// Использование
if(isset($_SESSION["logged_in"]) && $_SESSION["logged_in"]) {
    echo "Добро пожаловать, " . $_SESSION["username"];
}

// Удаление переменной
unset($_SESSION["username"]);

// Уничтожение сессии
session_destroy();
?>

Настройка сессий
Код:
<?php
// Безопасные настройки сессий
ini_set("session.cookie_httponly", 1);
ini_set("session.cookie_secure", 1);
ini_set("session.use_strict_mode", 1);
ini_set("session.cookie_samesite", "Strict");

session_start();
?>

Работа с куками
Код:
<?php
// Установка куки
setcookie("username", "John", time() + 3600, "/");

// Чтение куки
if(isset($_COOKIE["username"])) {
    echo "Username: " . $_COOKIE["username"];
}

// Удаление куки
setcookie("username", "", time() - 3600, "/");
?>

Безопасные куки
Код:
<?php
// Безопасная установка куки
setcookie(
    "session_id",
    $sessionId,
    [
        "expires" => time() + 3600,
        "path" => "/",
        "domain" => "",
        "secure" => true,
        "httponly" => true,
        "samesite" => "Strict"
    ]
);
?>

Валидация сессий
Код:
<?php
session_start();

function validateSession() {
    if(!isset($_SESSION["user_id"])) {
        header("Location: login.php");
        exit;
    }
    
    // Проверка таймаута
    if(isset($_SESSION["last_activity"]) && 
       time() - $_SESSION["last_activity"] > 1800) {
        session_destroy();
        header("Location: login.php");
        exit;
    }
    
    $_SESSION["last_activity"] = time();
}

validateSession();
?>

Важные моменты:
- Используйте безопасные настройки
- Валидируйте данные сессий
- Устанавливайте таймауты
- Защищайте от CSRF атак

Правильная работа с сессиями обеспечивает безопасность!
 

1 человек читают эту тему (Всего: 1, Пользователей: 0, Гостей: 1)

Сверху