2013-08-31 55 views
0

儘管在閱讀關於設置cookie並且第一次不工作的解釋之後,我發現很難將下面的問題解決爲php和cookie的新問題。第一次設置cookie失敗,但在刷新時工作

我有一個用於(例如)cp.php,login.php,header.php,maindata.php,bottom.php的網頁。每當我登錄到網頁cp.php將從那裏處理1.header.php將首先被調用2.maindata.php將被調用並且3.bottom.php將被調用。

所以我設置我的cookie在maindata.php和代碼是這樣,

 <?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。

請幫助我找出存在的問題!

+1

'setcookie'只設置一個你的瀏覽器會收到的cookie,它不*修改'$ _COOKIE'。 – DCoder

+0

@DCoder請你解釋一下。 – user2572985

+1

'setcookie'用於*發送cookie至瀏覽器*,'$ _COOKIE'表示服務器*已經收到的cookie *。瞭解差異。如果您需要通過'$ _COOKIE'訪問新設置的cookie,則必須手動將其放置在那裏。 – DCoder

回答

0

利用isset檢查cookie是否存在,然後嘗試設置一個。

就是這樣。

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

我在設置cookie之前嘗試過isset,但它返回false,未設置cookie。爲什麼我第一次沒有收到價值,但是在我重新加載頁面之後獲得價值? – user2572985

+0

當您第一次檢查使用'isset'的cookie時,它肯定會返回false(當代碼第一次運行時),第二次,isset返回true,並且您可以修改cookie價值或做你想做的。 –

+0

這意味着我設置cookie的同一頁面必須再次調用以檢索值?或任何其他途徑我可以得到我提到的價值? – user2572985

相關問題