2012-03-09 53 views
0

我正在尝试为动态功能设置Cookie。我已经能够获得正确的页面代码,允许我使用自定义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”之后检查条件。 '$ id = $ _COOKIE ['RA_ID'];'$ _COOKIE ['RA_ID']'没有设置时'不是很好。 – 2012-03-09 21:36:24

回答

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返回,我该如何覆盖以前的烹饪变量? 即 dynamicpage.php?RA_kw =关键字 dynamicpage.php?RA_kw = New0Keyword 或 dynamicpage.php?RA_id = 123 dynamicpage.php?RA_id = 129 – Jay 2012-03-09 21:54:46

+0

你需要的,如果比较新旧值,他们是不同的 - 改变var值。 – user973254 2012-03-10 08:59:18

+0

thanks @ user973254 - 我该怎么做,数组? – Jay 2012-03-10 20:09:32