0

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

我有一个网页,其中包含(例如)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 将在成功设置 cookie 的情况下返回 TRUE,因此我尝试将其放入 if 循环中,即使是第一次也返回 false。

请帮助我找出问题所在!

4

2 回答 2

0

使用isset来检查 cookie 是否存在,然后尝试设置一个。

像这样的东西。

if(!isset($_COOKIE['yourcookie'])) {
    setcookie('yourcookie', 'Some data !');
    $_COOKIE['yourcookie'] = 'Some data !';
}
echo $_COOKIE['yourcookie'];
于 2013-08-31T06:46:04.227 回答
0

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

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

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

使用setcookie()相同的,这样您就可以设置到期、域等。

于 2019-05-06T16:25:09.280 回答