Autor Zpráva
cookies
Profil *
Ahoj, je nějaký rozdíl v použití těchto 2 zápisů? Je jejich funkčnost stejná? Popř. jaký je správný?
$styl = $_COOKIE['css'];        
if (!$styl) $styl = 'default.css';

$styl = $_COOKIE['css'];        
if (!isset($_COOKIE['css'])) $styl = 'default.css';
Joker
Profil
cookies:
Je jejich funkčnost stejná?
Není.
!$styl je true i v případě, kdy proměnná je naplněná, ale její hodnota je něco, co se vyhodnotí jako false (třeba false, 0, prázdný řetězec), zatímco !isset($styl) bude v takovém případě false.

Jinak "správnost" těch zápisů záleží na situaci (má se testovat jen existence proměnné, nebo i hodnota false?), tipoval bych jako "správnější" ten první, ale ani jeden z nich není úplně správný. Oba vyhodí poznámku v případě, že $_COOKIE["css"] nebude definované.

Dále jestli v té cookie je uložený název souboru se stylem, nebylo by od věci ověřovat, že tam skutečně je platná hodnota.

Pokud někde je něco jako: <link rel="stylesheet" href="$styl"... - tak abych si nemohl do cookie dát něco jako: "><script src="zly-skript.js"></script><!--
cookies
Profil *
Joker:
Jinak "správnost" těch zápisů záleží na situaci (má se testovat jen existence proměnné, nebo i hodnota false?)
V souboru index.php mám zápis stylu
<link rel="stylesheet" type="text/css" href="styl.php" media="screen,projection">

A ve styl.php
$styl = $_COOKIE['css'];         
if (!$styl) $styl = 'styles/styl.css';
header ("Location: $styl");                  
exit;

Co se ale uloží do $styl pokud vyprázdním cookies?
Joker
Profil
cookies:
Co se ale uloží do $styl pokud vyprázdním cookies?
Pro oba ty kódy v prvním příspěvku by to spadlo do toho, že se tam naplní "default.css".
Nicméně v obou případech to bude generovat poznámku, že $_COOKIE['css'] je neplatný index pole.
Lepší by možná bylo něco jako:
$styl = isset($_COOKIE["css"]) ? $_COOKIE["css"] : "default.css";

- to nebude generovat tu poznámku.
cookies
Profil *
Joker:
Díky to jsem potřeboval.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0