
Musím podotknout, že tento seriál není a ani nechce být na způsob "kopiruj & pracuj". Jen postupně se dostává k funkčním kódům, jelikož si klade za cíl pokud možno chronologické popisování a vysvětlování! V zásadě jsme dospěli k tomu, že
začátečník by měl od počátku pracovat se superglobálním polem. Jiný přístup není bezpečný! Dnes si pakticky ukážeme, jak automatické superglobální proměnné pracují.
V minulém díle jsem končil větou, že "suberglobální/automatické proměnné používejme. Co všechno umí, se dočtete v dalších dílech tohoto seriálu.". Takže rychle dále... Superglobálních proměnných je celkem devět, bylo rovněž zdůrazněno, že máme pracovat s register_globals na off, což je také v php.ini ( a také v PHP 5) nastaveno. Jesliže provedeme zápis do superglobálního pole $_SESSION, ukládají se veškerá data na pevný disk počítače. Načež v cookie, které má vazbu na uživatele, je pak zaznamenán velmi důležity identifikační klíč "ID" každého uživatele. To tedy znamená, když byl uživatele identifikovan, skript PHP je informován o jakou session jde. Tím pádem si na klientově serveru vymezí prostor, do něhož bude pro každou session ukládat jednotlivé proměnné. A jak takové ukládání vypadá?
Jak vypadá automatický proces se session?
Jak jsem již v minulém díle zdůraznil, každý skript na volání session musí začínat funkcí session_start. Do skriptu pak zařazujeme session proměnné tak, že je umísťujeme do již zmíněného pole $_SESSION.
Ukázka: session_1.php
Nyní tedy demonstrační ukázka ve dvou skriptech. V prvním uvidíte, jak PHP session zjistí (zaregistruje) a ihned odešle do této session proměnnou user_name, která pro ukázku má na ř. č. 4 hodnotu "100".
<?php
session_start();
?>
<html>
<head>
<title>Ukázka 58/1</title>
</head>
<?php
//session_1.php
$_SESSION[`user_name`] = 100;
?>
<div>Právě byla proměnná zaregistrována.<br />
Ověřte si to <a href="session_2.php">ZDE</a>.
</div>
}
</body>
</html>
Ukázka: session_2.php
A tento následující PHP skript nám v souboru "session_2.php" proměnnou na ř. č.4 user_name vypíše.
<?php
session_start();
?>
<html>
<head>
<title>Ukázka 58/2</title>
</head>
<body>
<?php
//session_2.php
if (isset($_SESSION[`user_name`]))
echo `Session proměnná user_name = `,$_SESSION[`user_name`];
else
echo `Session proměnná a není zaregistrována.`;
?>
</body>
</html>
Ukázky k předvedení
ZDE
Resumé
Samozřejmě, ani tyhle ukázky nemůžeme nasadit pro ostrou www stránku! Možná také, že vám ukázky nebudou fungovat. Pouze půjdou na domácím intranetu/localhostu. Je třeba vyzkoušet! Nezapomeńte, že direktiva "register_globals" v php.ini je defaultně nyní nastavena na off, takže nelze "tahat" proměnné prostřednictvím "$proměnná"!! Pro studijní účely si tím pádem nastavte register_globals = on. To ale není pro učení záčatečníků nejšťastnější, takže prioritu by mělo dostat přece jen nastavení register_globals = off. V tom případě budeme k proměnným přístupovat ve tvaru $_POST["proměnná"]. O tom blíže v příštím díle seriálu. Někdy před Vánocemi se pak dostaneme také k zabezpečení hashováním a dalším užitečným věcem pro autentizaci/autorizaci uživatele.
Autor: Květoslav Vícha
Aby jste mohli přidávat komentáře, musíte být přihlášený.
A pak učit nováčky, aby měli register_globals OFF. Jinak se nadějí problémů. Tedy ne , jak Kosek doporušuje zapnout na ON. To snad jen pro zkoušení na intranetu! Jiank ani pomyšlení.