2013-06-06 4 views
7

私はコードをリファクタリングしています。今私は、私は基本的にphp.netに応じて同じことを行いsetcookie機能を使用することを計画していたコードをリファクタリングするために割り当てられてきたことをヘッダー( "Set-cookie")とsetcookie()関数を使ってクッキーを設定する

function setUserCookie($name, $value) { 
    $date = date("D, d M Y H:i:s",strtotime('1 January 2015')) . 'GMT'; 
    header("Set-Cookie: {$name}={$value}; EXPIRES{$date};"); 
    } 

:機能は次のような場合に、ユーザーがログインにクッキーを設定するために、ユーザーのために使用されています。

私の質問です:2つの間に違いがあり、どちらを使用する必要がありますか?

注:このコードは長い時間前に書かれていたので、私はその時にsetcookieが存在しないと仮定していますか?

+0

「新しいCookie($ name)」](https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L51)が参考になる場合があります。 [このスタンドアロンライブラリ](https://github.com/delight-im/PHP-Cookie)これは、クッキーを設定するための3番目のオプションです。正直なところ、HTTPヘッダーを直接設定しないでください。自動的に構築されたヘッダ値を使用して適切にエスケープされた値でクッキーを設定するには、組み込みのPHP関数またはここで引用したコンストラクタを使用します。 – caw

答えて

3

setcookieを使用しない理由はありません。上記のコードでは名前と値が正しくエンコードされないため、リファクタリングのメリットは少なくとも1つです。

+0

32ビットシステムでsetcookie()が2038を渡しません。組み込みプラットフォーム上のWebサーバーの問題です(更新されません)。 – Simon

1

setcookie()は具体的にはSet-Cookieヘッダーを設定するのに対し、header()はHTTPヘッダーを設定する一般的な機能です。 setcookie()は、いくつかのクッキー固有の引数を取り、その後、それらからSet-Cookieヘッダを作成しながら

header()したがって、完全なヘッダを含む文字列をとります。

関連する問題