8

Joomla コンポーネントで Cookie を使用するにはどうすればよいですか?

setcookie( JUtility::getHash('JLOGIN_REMEMBER'), false, time() - 86400, '/' );

誰でもこれがどのように機能するかを説明できますか?

4

1 に答える 1

29
// Get input cookie object
$inputCookie  = JFactory::getApplication()->input->cookie;

// Get cookie data
$value        = $inputCookie->get($name = 'myCookie', $defaultValue = null);

// Check that cookie exists
$cookieExists = ($value !== null);

// Set cookie data
$inputCookie->set($name = 'myCookie', $value = '123', $expire = 0);

// Remove cookie
$inputCookie->set('myCookie', null, time() - 1);

$expire価値に関するいくつかのルール

  • の戻り値のような、秒単位のUnix タイムスタンプtime()です。
  • $expire == 0: Cookie の有効期間はブラウザ セッションのものです。
  • $expire < time(): Cookie が削除されています (有効期限が過去に設定されています)。値をnullに設定することでCookieを削除できますが、明らかにIEはそうしません。

ノート

ヘッダーが送信される前 (通常は出力がエコーされる前) に Cookie を設定する必要があることに注意してください。

Cookie のキーと値は適切にエスケープする必要があります

文字列以外の値

セットの値をシリアル化する場合 ( などjson_encode($dataNode))、適切なフィルターを使用して後で取得することを忘れないでください。デフォルトはcmdで、これは aZ、0-9 以外のほとんどすべてを除外し、JSON 構造をクラックします。

// Get cookie data
$encodedString = $inputCookie->get('myCookie', null, $filter = 'string');

// Decode
$values = json_decode($encodedString);

// Encode and Set
$inputCookie->set('myCookie', json_encode($values));

思い出

于 2013-04-26T07:15:05.943 に答える