9. Użycie cookie
<?php
// Sprawdzenie czy istnieje zmienna cookie $LastTime
if ( !empty( $LastTime ) )
{
$aMessage = "Ostatnia wizyta miała miejsce ";
$aMessage .= date( "d F Y", $LastTime );
$aMessage .= " o ";
$aMessage .= date( "h:i:s a", $LastTime );
}
else
{
$aMessage = "Nie byłeś tu przez ostatnie ";
$aMessage .= "dwa tygodnie.";
}
// Ustawienie cookie ważnego przez dwa tygodnie
$aTwoWeeks = time() + ( 60 * 60 * 24 * 14 );
setcookie( "LastTime", time(), $aTwoWeeks );
// sprawdzenie istnienia niezwykle ważnej tablicy z cookie
$aValMessage = "";
if ( !empty( $CookieArray ) )
{
$aValMessage = "Wartości: " . $CookieArray[0];
$aValMessage .= ", " . $CookieArray[1];
49
PHP – Kompendium wiedzy
$aStartValue = $CookieArray[1] + 1;
}
else
{
$aValMessage = "Wartości nie są dostępne!";
$aStartValue = 0;
}
// usunięcie niezwykle istotnej tablicy wartości
setcookie( "CookieArray[0]" );
setcookie( "CookieArray[1]" );
// dodanie niezwykle istotnej tablicy wartości
setcookie( "CookieArray[0]", $aStartValue, $aTwoWeeks );
setcookie( "CookieArray[1]", $aStartValue + 1, $aTwoWeeks );
?>
<html>
<head>
<title>Użycie cookie</title>
</head>
<body>
<?php
print( $aMessage . "<br><br>" . $aValMessage );
?>
</body>
</html>
Wydruk 3.10. Użycie setcookie() razem z buforowaniem wyjścia
<?php
/*
Uruchomienie buforowania wyjścia. Jeżeli funkcja ob_start()
jest zakomentowana, skrypt spowoduje błąd.
*/
ob_start();
?>
<html>
<head>
<title>Użycie setcookie() wraz z buforowaniem wyjścia</title>
</head>
<body>
<?php
setcookie( "anyname", "anyvalue", time() + 60 );
?>
Działa świetnie.
</body>
</html>
<?php ob_end_flush(); ?>
Ostatnia uwaga na temat cookie
W poprzedniej wersji PHP jeżeli chciałeś ustawić wiele cookie za pomocą jednego skryptu, musiałeś wywoływać setcookie() w odwrotnej kolejności do tej, w jakiej chciałeś obsługiwać cookie. Na przykład, jeżeli chciałeś usunąć cookie a następnie ustawić nowe o tej samej nazwie, należało najpierw wywołać setcookie(), aby ustawić nową wartość a następnie usunąć poprzednią wartość. W
PHP4 zostało to usunięte. Należy wywoływać setcookie() w takiej kolejności jak się spodziewasz, że będą przetwarzane przez przeglądarkę. Proces ten jest pokazany na wydruku 3.9.
Mimo, że debata na temat tego, czy należy używać cookie będzie nadal trwała, ich tworzenie w PHP jest łatwe i proste. Dalsze rozważania na temat cookie będą kontynuowane w rozdziale 7 „Sesje i stan aplikacji”.
Ważne zagadnienia programowania dla WWW
Część ta zawiera niektóre tematy, jakie muszą brać pod uwagę programiści przechodzący z pisania zwykłych aplikacji na aplikacje oparte o WWW. Problemy te powstają zwykle w czasie przetwarzania i wykorzystywania danych przesłanych z formularza HTML.
Obsługa nieprawidłowych danych
Pierwszym problemem jest sposób obsługi nieprawidłowych danych. W tradycyjnych aplikacjach dane wprowadzone przez użytkownika są często kontrolowane natychmiast po ich wprowadzeniu. Pozwala to natychmiast informować o nieprawidłowych danych. W aplikacjach WWW nie ma niezawodnego mechanizmu kontroli danych po wyjściu z poszczególnych pól, więc cała kontrola poprawności jest przeprowadzana na serwerze. Oznacza to, że jeżeli istnieje błąd w danych, użytkownik nie będzie o nim wiedział aż do chwili Rozdział 3 – Formularze i cookie
50
przesłania danych formularza. Dlatego w trakcie tworzenia aplikacji musisz się zdecydować, w jaki sposób reagować na błędy.
|