2010-12-06 15 views
0

クッキーにもっと慣れさせようとすると、簡単なクッキー管理システムをセットアップして、ユーザーから保存したり取得できる情報をより詳細に管理することに決めました。クッキーを設定してクッキーの問題を修正する - PHP

アイデアは、存在しない場合はクッキーを設定し、すでに存在する場合はクッキーを更新することです。

クッキーが設定されると、セッションが開始された時刻と最後にアクセスされた時刻を記録するデータベースにも保存されます。

クッキーの作成は、最初はうまくいきました。しかし、突然それは動作を停止し、何も設定しませんでした。これは、のCreateSession()関数の現在のコードです:

function createSession() { 

// check to see if cookie exists 
if(isset($_COOKIE["test"])) { 
      // update time 
    $expire = time()+81400; 
    setcookie("test","$cookiekey",$expire,"/",false,0); 
} else { 
    // assign unique cookie id 
    list($msec,$sec)=explode(" ",microtime()); 
    $cookiekey = preg_replace("/./","",($msec+$sec)); 
      // set time 
    $expire = time()+81400; 

    // set cookie 
    setcookie("test","$cookiekey",$expire,"/",false,0); 

    // assign the unqiue id to $_COOKIE[] 
    $_COOKIE["test"]=$cookiekey; 
    unset($cookiekey);unset($msec);unset($sec);unset($expire); 
    } 

}

正しい方向に向かって私のアプローチですか、私は道何か間違ったことをしたのでしょうか。

+0

あなたが実際に名前 'NAME'と' $ _COOKIE [「テスト」] ' –

+0

*がそれを変更してチェックしてクッキーを作成しているが、クッキーはまだありませんブラウザによって検出されました – chad

答えて

3

Doing $_COOKIE["test"] = something;は、「テスト」Cookieを作成しません。 setcookieをもう一度使う必要があります。

私はなぜあなたがそれをしたいと思うか分かりません。 $ _COOKIE ["name"](のクッキーはです)をチェックしてみてください。

+0

アイデアは、後で他のクッキー情報と一緒にそれを印刷できるように、クッキーに 'microtime id'を割り当てることです。 – chad

0

PHPのbuilt in session management(例here)を使用することで、このようなすべての苦労を処理することもできます。

+0

私は単に行うことによって学ぶことを試みます。ところで、私はそれに飛び込みます。 – chad

+0

$ _SESSIONはとても役に立ち、クッキーに基づいているので、$ _SESSIONを使用するにはクッキーで遊ぶ方法を学ぶことが不可欠です。 – yannis

+1

セッションをまったく使用するためにクッキーで遊ぶ方法を習得する必要はありません。セッション管理がそれを自動的に処理します。 –

1

クッキーは、別のリクエストが行われたときにのみ使用できます。だからあなた自身で$_COOKIEを変更しないでください。

さらに、あなたのケースでクッキーが存在する場合(つまり、$_COOKIE['test']が設定されている場合)、$cookiekeyを値としてsetcookieを再度呼び出します。しかし$cookiekeyはその時点では定義されていないので、クッキーは空の文字列で上書きされます。私はあなたの代わりに$_COOKIE['test']を使用したいと思います:

if (isset($_COOKIE["test"])) { 
    // update time 
    $expire = time()+81400; 
    setcookie("test", $_COOKIE["test"], $expire, "/", false, 0); 
}