PDA

View Full Version : سوال: یه مشکل عجیب در کوکی



fazelit
یک شنبه 12 دی 1389, 20:46 عصر
با سلام و خسته نباشید خدمت دوستان

من یه مشکل عجیب با کوکی دارم !!!!
من با سیستم آژاکس اومدم یه کوکی رو با کد زیر ذخیره کردم


if($CheckPolls->Kind=='cookie')
{
$NameR='response'.$rowQ['id'];
$NameQ='question'.$rowQ['id'];
setcookie($NameR,$idR,time()+(360*24*3600));
setcookie($NameQ,$rowQ['id'],time()+(360*24*3600));
}
بعدش اومدم یه کلاس تعریف کردم که خیلی چیزها رو میسنجه از جمله کوکی رو بررسی میکنه ببینم ذخیره هستش یا نه کد کلاس:



[/Pclass CheckPolls
{
var $Question='';
var $Check=true;
var $Response='';
var $ip;
var $Kind='';
//var $RNum=0;

function check_cookie()
{
?>
<script language="javascript" type="text/javascript">
if (navigator.cookieEnabled == 0)
{
alert("سیستم شما قادر به نظر سنجی نمی باشد");
}
</script>
<?php
}

function getRealIp()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}

##### چک کردن آیا نظر داده است یا خیر
function __construct($idQ)
{
$idQ=intval($idQ);
$ip=self::getRealIp();
################# Kind Check
$kind='cookie';
//$kind='ip';
$this->Kind=$kind;
////// End
if($kind=='cookie')
{
$NameR='response'.$idQ;
$NameQ='question'.$idQ;
print $this->Response=$_COOKIE[$NameR];
$this->Question=$_COOKIE[$NameQ];
if(($this->Response>0)||($this->Question>0))$this->Check=false;
else $this->Check=true;
}
elseif($kind=='ip')
{

$s=mysql_query("SELECT * FROM `polls_poll` WHERE `ip`='$ip' AND `question_id`='$idQ' LIMIT 0,1");
if($s)
{
if(mysql_num_rows($s)>0)
{
$row=mysql_fetch_assoc($s);
$this->Check=false;
$this->Response=$row['response_id'];
$this->Question=$row['question_id'];
}
else $this->Check=true;
}
}
}
//// پایان

###########/ مشاهده آمار
function Result($idQ)
{
$Res='';
$idQ=intval($idQ);
$sP=mysql_query("SELECT DISTINCT `response_id` FROM `polls_poll` WHERE `question_id`= '$idQ' ");
if($sP)
{
//$this->$RNum=mysql_num_rows($sP);
while($r=mysql_fetch_assoc($sP))
{
$Res["{$r['response_id']}"]=mysql_num_rows(mysql_query("SELECT * FROM `polls_poll` WHERE `response_id`= '{$r['response_id']}' "));
}
$this->Response=$Res;
}
}

//// پایان

}

########## Class Polls
class Polls_Index
{
var $rowP='';
var $NumResponse=0;
function Polls($id)
{
$id=intval($id);
if($id>0)
{
$selP=mysql_query("SELECT * FROM `polls_question` q, `polls_response` r WHERE r.question_id=q.id && q.id='$id' ORDER BY q.id DESC, r.swich ASC");
if($selP)
{
$num=0;
$this->NumResponse=mysql_num_rows($selP);
while($Polls=mysql_fetch_array($selP))
{
$num++;
$id=$Polls[0];
$this->rowP['idQ']=$Polls[0];
$this->rowP['question']=$Polls['question'];
if($Polls['active']==0)$active='';
$this->rowP[$num]=array(
'response'=>$Polls['response'],
'swich'=>$Polls['swich'],
'idR'=>$Polls['id'],
);
}
}

}
}
}

///// End ClassHP]


این هم بخش مورد نظر در کلاس:


$NameR='response'.$idQ;
$NameQ='question'.$idQ;
print $this->Response=$_COOKIE[$NameR];
$this->Question=$_COOKIE[$NameQ];
if(($this->Response>0)||($this->Question>0))$this->Check=false;
else $this->Check=true;
اما داستان از اینجا شروع میشه که من هروقت با آزاکس میام بررسی میکنم ببینم کوکی ذخیره شده درست کار میکنه اما وقتی بدون آژآکس تیت میکنم میگه کوکی خالیه
کد تست کوکی ذخیره شده:



$ChPolls=new CheckPolls($Polls[$i]->rowP['idQ']);
if($ChPolls->Check==true)
مشکل کجاست؟:متفکر::متفکر::متفکر:: تفکر:

fazelit
دوشنبه 13 دی 1389, 08:45 صبح
بالاخره تونستم خودم مشکل رو پیدا کنم
مشکل توی ذخیره کوکی بود
به جای :



$NameR='response'.$rowQ['id'];
$NameQ='question'.$rowQ['id'];
setcookie($NameR,$idR,time()+(360*24*3600));
setcookie($NameQ,$rowQ['id'],time()+(360*24*3600));

به اینصورت مینوشتم


$NameR='response'.$rowQ['id'];
$NameQ='question'.$rowQ['id'];
setcookie($NameR,$idR,time()+(360*24*3600),'/');
setcookie($NameQ,$rowQ['id'],time()+(360*24*3600),'/');


پس دوستان اگه شما هم با این مشکل برخورد کردید بدین صورت حل میشه
موفق باشید
:لبخندساده::لبخندساده::لبخن ساده::لبخندساده::لبخندساده:

امیـرحسین
دوشنبه 13 دی 1389, 11:43 صبح
بالاخره یکی پیدا شد که راه حل مشکلش رو هم گذاشت.
ممنون که به دیگران هم فکر میکنید.