虽然在阅读有关设置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。
请帮助我找出问题所在!
答案 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()
,以便您可以设置到期时间,域等。