2017-09-24 7 views
0

Cookieにユーザー検索を格納して、ユーザーに「Recent Searches」を表示しようとしています。PHP Cookieストアユーザーフォームの検索 - 複数の検索結果が格納されています

  1. キーワード
  2. 場所

私は何の問題クッキーを作成することはできませんが、私はそれを更新し、1件の以上の検索を格納することはできません:フォームは、2つのparamsが含まれています。あなたは複数のUNIQUE検索を保存実際に見ることができるように

"q=carpenter&l=london&ts=1506177856392:q=bricklayer&l=Southwark&ts=1506008036065:q=labourer&l=Southwark&ts=1506007988029" 

:彼らは、以下の形式でクッキーで検索を保存Indeed.co.uk。

私はPHPを使用しています。どのようにレプリケートする方法を知っていますか?ユーザーフォーム検索をどのように格納するのですか?私は配列としてクエリを持って来る必要があります。

おかげ

ジョン

UPDATEは - コードを試し:

if (isset($_COOKIE["RS"])) { 

    // Get cookie value 
    $new = "key=$keyword&loc=$locationKey:"; 
    //"q=carpenter&l=london&ts=1506177856392:q=bricklayer&l=Southwark&ts=1506008036065:q=labourer&l=Southwark&ts=1506007988029" 
    $prev_value = $_COOKIE["RS"]; 

    $prev_value = stripslashes($prev_value); 
    $prev_value = json_decode($prev_value, true); 
    // Add current value to array and set cookie again 

    $prev_value = $prev_value."".$new; 

    $new_value = json_encode($prev_value, true); 

    setcookie('RS', $new_value, time()+3600); 

}else { 

    // Set cookie to current value 
    $init_value = "key=$keyword&loc=$locationKey:"; 
    $init_value = json_encode($init_value, true); 
    setcookie('RS', $init_value, time()+3600); 

} 
+0

)そして、あなたがしようとしたものを持っているあなたは、あなたがクッキーに保存することができ、$のsearches_by_key内で一意のキーを持つことになります。このことにより、

//after explode $searches_by_key = array(); foreach($searches as $search){ list($keyword, $location) = explode('&', $search); $searches_by_key[$keyword] = $search; } 

はそれが役に立てば幸い? –

+0

Mr Pro Pop - コードで更新された質問 –

+0

だから、複数の値を保存しようとしていますか? –

答えて

0

が1枚のクッキーの中に多くの検索を保存するには、まずあなたは、新しい検索を追加し、クッキーから実際の値を読み取ることがあります。

このような何か:

<?php 
$cookie_name = "searches"; 
$stored_searches = isset($_COOKIE[$cookie_name]) ? $_COOKIE[$cookie_name] : null; 

$new_search_value = "keyword:asdf&location=http://example.com"; 

if($stored_searches){ 

    $searches = explode('|',$stored_searches); 

    $searches[] = $new_search_value; 

    $searches_to_store = implode('|', $searches); 

} else { 
    $searches_to_store = $new_search_value; 
} 


setcookie($cookie_name, $searches_to_store, time() + (86400 * 30), "/"); 

あなたのクッキーので、場合が存在するかどうか、このコードをチェックし、配列にすべての検索を解析します。次に、新しい検索と埋め込みをクッキー文字列に追加します。 検索は区切られます。 (パイプ)文字 そして、それを保存します。..

私はしかし、セッション値に検索について、それらのデータを保存することをお勧め

、そのサーバー上に保存され、ユーザが操作することはできません

$_SESSION['searches'] = $searches_to_store; 

EDIT: ユニークな検索のみを保存するには、保存された検索をいくつかのキーで配列に割り当てることができます。

このように、たとえば:;

+0

ジミー、これはありがとう、それは動作します!私の唯一の問題は今停止することです。複製されたフォームの検索は、クッキーに追加され、ユニークなキーワード+位置の組み合わせのみを保存します。 –

+0

ユニーク検索に関するヒントを含む回答を編集しました – Jimmmy

関連する問題