Příklady použití Message
Tato sekce ukazuje běžné scénáře práce se flash zprávami v aplikaci.
Základní použití
Přidání zprávy a vypsání v PHP
Nejjednodušší případ – přidat zprávu a vypsat ji v PHP:
use Petrovo\Message\Message;
// Přidej zprávu
Message::success('Operace byla úspěšná!');
// Vypiš a smaž zprávu
Message::print();
Praktický příklad z administrace
// app/Controllers/ADMIN/MenusController.php
use Petrovo\Message\Message;
use DB;
public function store() {
$name = $_POST['name'] ?? '';
if (empty($name)) {
Message::error('Název je povinný!');
Message::print();
return;
}
DB::query("INSERT INTO menus (name) VALUES (?)", [$name]);
Message::success('Menu bylo vytvořeno!');
Message::print();
}
Info a success zprávy
Rozlišení podle typu
use Petrovo\Message\Message;
// Info zpráva – informuje o něčem (s CSS třídou `info_message`)
Message::info('Stránka byla aktualizována.');
// Success zpráva – potvrzuje úspěch (s CSS třídou `message`)
Message::success('Změny byly uloženy!');
// Error zpráva – hlásí chybu
Message::error('Nepodařilo se načíst data.');
CSS styling
/* Info zpráva */
.message.info_message {
background-color: #d1ecf1;
border-color: #bee5eb;
color: #0c5460;
}
/* Success zpráva */
.message {
background-color: #d4edda;
border-color: #c3e6cb;
color: #155724;
}
/* Error zpráva */
.error_message {
background-color: #f8d7da;
border-color: #f5c6cb;
color: #721c24;
}
Bezpečnost – XSS ochrana
Pozor na HTML ve zprávách
Zprávy NEJSOU automaticky escapovány. Pokud přidáš uživatelský vstup, musíš jej escapovat:
use Petrovo\Message\Message;
// NEBEZPEČNÉ
$userInput = $_POST['name'];
Message::success('Vítej, ' . $userInput . '!');
// Útočník by mohl vložit: <script>alert('XSS')</script>
// BEZPEČNÉ
$userInput = $_POST['name'];
Message::success('Vítej, ' . htmlspecialchars($userInput) . '!');
// Nebo používej čistý text
Message::success('Vítej, ' . strip_tags($userInput) . '!');
HTML ve zprávách (záměrně)
Pokud chceš v zprávě HTML (odkaz, strong text), musíš jej sám vytvořit:
use Petrovo\Message\Message;
// Správně s HTML
Message::success('Profil byl aktualizován. <a href="/profile">Jít na profil</a>');
// Jen pokud wíš, že je obsah bezpečný
$template = 'Děkuji <strong>%s</strong>!';
$name = htmlspecialchars($_POST['name']);
Message::info(sprintf($template, $name));
Formát zpráv v session
Jak vypadá session data
$_SESSION = [
'user_id' => 42,
'message' => '<div class="message info_message">Profil aktualizován</div>' .
'<div class="message">Úspěšné uložení!</div>',
'error_message' => '<div class="error_message">Staré heslo je chybné</div>'
];
Po zavolání Message::print()
// Vrátí:
'<div class="error_message">Staré heslo je chybné</div>' .
'<div class="message info_message">Profil aktualizován</div>' .
'<div class="message">Úspěšné uložení!</div>'
// A session zůstane:
$_SESSION = [
'user_id' => 42
// message a error_message jsou smazány
];