Метод flush
Метод flush класса Session предназначен для полной очистки всех данных, хранящихся в текущей сессии. В отличие от метода forget, который удаляет только конкретные ключи, flush удаляет все ключи без возможности восстановления. Метод не принимает параметров и возвращает void. Обычно применяется при выходе пользователя из системы или при полной очистке сессионных данных.
Синтаксис
<?php
session()->flush();
// или с использованием фасада Session
use Illuminate\Support\Facades\Session;
Session::flush();
?>
Пример
Давайте добавим несколько значений в сессию, а затем полностью очистим их с помощью метода flush:
<?php
use Illuminate\Support\Facades\Session;
// Добавляем данные в сессию
Session::put('user_id', 10);
Session::put('user_name', 'JohnDoe');
Session::put('user_role', 'admin');
// Проверяем наличие данных
echo session()->has('user_id') ? 'true' : 'false'; // "true"
echo "\n";
echo session()->has('user_name') ? 'true' : 'false'; // "true"
echo "\n";
// Очищаем всю сессию
Session::flush();
// Проверяем, что данные удалены
echo session()->has('user_id') ? 'true' : 'false'; // "false"
echo "\n";
echo session()->has('user_name') ? 'true' : 'false'; // "false"
?>
Результат выполнения кода:
"true"
"true"
"false"
"false"
Пример
Рассмотрим использование метода flush в контроллере для выхода пользователя из системы:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Session;
use Illuminate\Http\Request;
class AuthController extends Controller
{
public function logout(Request $request)
{
// Очищаем все данные сессии
Session::flush();
// Перегенерируем ID сессии для безопасности
$request->session()->regenerate();
return redirect('/login')->with('status', 'Вы вышли из системы');
}
}
?>
Пример
Сравним методы flush и forget для удаления данных из сессии:
<?php
use Illuminate\Support\Facades\Session;
// Добавляем данные
Session::put('product_id', 555);
Session::put('product_price', 999);
Session::put('product_qty', 3);
// forget удаляет только указанные ключи
Session::forget(['product_price', 'product_qty']);
echo session()->has('product_id') ? 'true' : 'false'; // "true"
echo "\n";
echo session()->has('product_price') ? 'true' : 'false'; // "false"
echo "\n";
// flush удаляет все оставшиеся данные
Session::flush();
echo session()->has('product_id') ? 'true' : 'false'; // "false"
?>
Результат выполнения кода:
"true"
"false"
"false"
Смотрите также
-
метод
get,
который получает значение из сессии по ключу -
метод
put,
который сохраняет данные в сессию -
метод
forget,
который удаляет указанные ключи из сессии -
метод
regenerate,
который перегенерирует ID сессии