2012-03-19 12 views
0

私はセッションをデータベースに保存しようとしています。それをシリアル化してテーブルのTEXTフィールドに挿入することができます。私はそれを取り戻すこともできますし、それを「直列化しない」こともできます。私はそれを私のセッションに戻すことはできません。

私は基本的にテーブルからそれをつかみ、$ _SESSIONをそれに置き換えたいので、セッションのすべての値はこの$ _SESSION ['somevalue']のように再び利用可能になります。

私はそれをシリアル化:その後、

if(!empty($_POST)){ 
    unset($_POST['submit_x'],$_POST['submit_y'],$_POST['submit']); 
    foreach ($_POST as $key=>$value) { 
     $_SESSION[$key] = $value; 
    } 
    $serialized_data = serialize($_SESSION); 
    setSession($userID,$serialized_data); 
} 

し、それを保存します。

function setSession($userID,$data){ 
    //is there a row? 
    if(getSession($userID)){ 
     $sql = "UPDATE session_data SET session = '".mysql_real_escape_string($data)."' where user_id = ".$userID; 
    }else{ 
     $sql = "INSERT into session_data VALUES('',".$userID.",'".mysql_real_escape_string($data)."')"; 
    } 
    $result = mysql_query($sql) or die(mysql_error()); 

    return $result; 
} 

、その後、私はそれで私の$ _SESSIONを交換する必要がある部分に来ます。

foreach(unserialize($serialized_data) as $key=>$value){ 
     $_SESSION[$key] = $value; 
    } 

このようにforeachに入れることはできませんか?私は困惑していて、どこのステージで間違っているのかわからない。

+1

あなたは 'session_start()'を思い出しましたか? – Ryan

+0

あなたは絶対に 'foreach'を使うことができます - 問題は他の場所にあります! – rjz

+0

データベースにセッションデータを格納する際のポイントは何ですか?*このように*?なぜ$ _SESSION配列を使ってみませんか? –

答えて

1

あなたは

$ DBSTRING = json_encode($ _ REQUEST)(深いレベルが保証されて)の代わりにシリアル化のJSONを使用することができます。 $ _REQUEST = json_decode($ dbstring、true);

+0

すばらしい、ありがとう! –

関連する問題