设置cookie第一次失败但在刷新时有效

时间:2013-08-31 06:42:31

标签: php cookies

虽然在阅读有关设置cookie的解释并且第一次没有工作后,我发现很难解决以下问题,因为我是php和cookies的新手。

我有一个网页,其中包含(例如)cp.php,login.php,header.php,maindata.php,bottom.php。每当我登录网页时,将从那里处理cp.php 1.header.php将首先被调用2.maindata.php将被调用并且3.bottom.php将被调用。

所以我在maindata.php设置我的cookie,代码就像,

      <?php
      $cid =  $_GET["id"];
      $XmlPath =  $_GET["path"];
      $numpath  = $_GET["numpath"];
      $finepath =$_GET["finepath"];
      $Tech =$_GET["tech"];
      $read_str="";


    function read($Path)
    {
            $temp="";
            if(file_exists($Path))
            {
             $library = new SimpleXMLElement($Path,null,true);  

                            foreach($library->children("SAS") as $info){        
                                foreach($info->children("SAS") as $attributes){                             
                                    $nameVal  = $attributes->Name."=".$attributes->Value;                       
                                     $str_temp .=$nameVal."#";              
                                }
                            }
            }else
            {
                $str_temp ="NA";                
            }
            return  $str_temp;
    }

    $arrpath =explode(",",$XmlPath);
    /*Reading and storing  arrpath[0] has the path of xml to be parsed*/ 
         $strG=read($arrpath[0]);
         $strC=read($arrpath[1]);
         $strB =read($arrpath[2]);

    setcookie($cid.'strE',$strG);
    setcookie($cid.'comstr',$strC);
    setcookie($cid.'basstr',$strB);

            (....)

在同一个文件中使用以下代码读取cookie,

$read_str =$_COOKIE[$cid.'strE'].$_COOKIE[$cid.'comstr'].$_COOKIE[$cid.'basstr'];

完成此过程后,将调用bottom.php并且第一次加载完成。正如我第一次说的那样,$ read_str中没有任何值,但如果我刷新页面并执行所有过程我再次获得了价值。

由于SETCOOKIE将返回TRUE,成功设置cookie我尝试将其置于if循环中,即使是第一次也返回false。

请帮助我找出问题所在!

2 个答案:

答案 0 :(得分:0)

利用isset检查Cookie是否存在,然后尝试设置一个。

像这样。

if(!isset($_COOKIE['yourcookie'])) {
    setcookie('yourcookie', 'Some data !');
    $_COOKIE['yourcookie'] = 'Some data !';
}
echo $_COOKIE['yourcookie'];

答案 1 :(得分:0)

我也来到这里寻找答案。这是交易。

设置cookie时,只能在下一页加载时访问它,这就是为什么在设置cookie后就无法访问它。如果您确实需要立即使用Cookie数据,则可以直接在全局Cookie中设置值,例如:

$_COOKIE['my_cookie'] = 'i am a cookie';

使用相同的setcookie(),以便您可以设置到期时间,域等。