2012-03-09 19 views
0

私は動的な機能のためにクッキーを設定しようとしています。私はカスタムURL文字列を使用してすべての動的機能を挿入できるように、ページコードを正しく取得できました。PHP Cookieと動的挿入の問題

すなわち

http://mysite.com/dynamicpage.php?RA_kw=Keyword- 
keyword&RA_survey_id=survey_id&RA_id=123&RA_img=imgname 

限り、すべての変数が受信URLに存在するように、各変数のクッキーは、細かい設定します。帰宅時に、ユーザにはすべての動的なクッキー機能が表示されます。良い。

問題:すべてのPHP変数がURLに存在しない場合、Cookieは個別に設定されません。

すなわち

http://mysite.com/dynamicpage.php?RA_kw=Keyword-keyword 
http://mysite.com/dynamicpage.php?RA_id=123 

ここではPHPのコードです:

<?php 
/*kw = (Keywords) 
survey_id=survey_id (this variable doesn't change) 
id= (survey number id) 
img = (name of image to be pulled from php include.)*/ 

$kw = null; 
$survey_id = null; 
$id = null; 
$img = null; 

if (isset($_COOKIE['RA_kw']) 
    && isset($_COOKIE['RA_survey_id']) 
    && isset($_COOKIE['RA_id']) 
    && isset($_COOKIE['RA_img'])) 
{ 
    //if cookie variables are already set 

    //To Do Here: maybe redirect 
    $kw = $_COOKIE['RA_kw']; 
    $survey_id = $_COOKIE['RA_survey_id']; 
    $id = $_COOKIE['RA_id']; 
    $img = $_COOKIE['RA_img']; 
    $_GET['RA_kw'] = $kw; 
    $_GET['RA_survey_id'] = $survey_id; 
    $_GET['RA_id'] = $id; 
    $_GET['RA_img'] = $img; 
} 
else 
{ 
    //if cookie varialbes are not set yet 

    //set Cookies 
    if (isset($_GET['RA_kw'])){ 
     //kw parameter is set 
     setcookie('RA_kw', $_GET['RA_kw'], time() + 60*60*24*30); //expires in 30 days. 
     $kw = $_GET['RA_kw']; 
    } 
    if (isset($_GET['RA_survey_id'])){ 
     //survey_id parameter is set 
     setcookie('RA_survey_id', $_GET['RA_survey_id'], time() + 60*60*24*30); //expires in 30 days. 
     $survey_id = $_GET['RA_survey_id']; 
    } 
    if (isset($_GET['RA_id'])){ 
     //id parameter is set 
     setcookie('RA_id', $_GET['RA_id'], time() + 60*60*24*30); //expires in 30 days. 
     $id = $_GET['RA_id']; 
    } 
    if (isset($_GET['RA_img'])){ 
     //img parameter is set 
     setcookie('RA_img', $_GET['RA_img'], time() + 60*60*24*30); //expires in 30 days. 
     $img = $_GET['RA_img']; 
    } 

    //To Do Here: default page 
} 
?> 
+0

限りは、 @ user973254が正しいので、あなたの変数を定義する前に、それぞれの 'cookie'をその条件の後で別々にチェックするべきです。 '$ _COOKIE ['RA_ID']'が決まっていないときは、 '$ id = $ _COOKIE ['RA_ID'];'を実行するのは "いい" –

答えて

2

変更この:これに

if (isset($_COOKIE['RA_kw']) 
    && isset($_COOKIE['RA_survey_id']) 
    && isset($_COOKIE['RA_id']) 
    && isset($_COOKIE['RA_img'])) 

if (isset($_COOKIE['RA_kw']) 
    || isset($_COOKIE['RA_survey_id']) 
    || isset($_COOKIE['RA_id']) 
    || isset($_COOKIE['RA_img'])) 
+0

ありがとう、それはトリックでした。この問題を解決したもう一つの問題は、私は考えなかった。訪問を返します。ユーザーが別の動的URLを返すと、以前のCookieされた変数をどのように上書きできますか? すなわち dynamicpage.php?RA_kw =キーワード dynamicpage.php?RA_kw = New0Keyword または dynamicpage.php?RA_id = 123 dynamicpage.php?RA_id =あなたがあれば、古い値と新しい値を比較する必要が129 – Jay

+0

彼らは異なっています - var値を変更する。 – user973254

+0

ありがとう@ user973254 - どのように私はそれを行うだろう、配列? – Jay