用PHP读取Javascript cookie

时间:2014-04-21 21:54:37

标签: javascript php cookies

我有一些设置cookie的javascript代码,当我尝试用php读取该cookie时,它说它是未定义的。

Notice: Undefined index: scorecount in C:\xampp\htdocs\Contest\score.php on line 44

我正在使用xamp在我的计算机上运行和测试php,这可能是它没有读取cookie的原因吗?

这是我的代码

<!DOCTYPE html>
<html>
    <head>
        <title>PHP Written Test</title>
    </head>
    <body style="background-color:#ADD8E6; margin-left:25%;">
        <?php include 'variables.php';?>
        <?php include 'functions.php';?>
        <?php     
            session_start();   
            $x = 1;
            $y = 0;
            $score = 0;

            while ($x <= 20) {  
                $a = $_POST["question" . $x];
                $b = $_SESSION['correct'][$y];
                $c = $_SESSION['question'][$y];

                if (trim($a) == trim($b)){      
                    $score++;   
                } else {
                    echo "$c<br>Your answer was: $a<br>The correct answer is: $b<br><br>";  
                }

                $x++;
                $y++;
            }

            echo "$score/20";
            echo $_COOKIE["scorecount"]; 
    ?>
    </body>
</html>

我会发布一张图片来证明cookie设置正确,但我没有足够的代表。 当我在网络浏览器中查看所有cookie时,cookie&#34; scorecount&#34;在那里并且设置正确,如果有人可以请告诉我我做错了什么,非常感谢!

我的JS设置了cookie

function getCookie(c_name)
{
   alert("Im in getCookie");
   var i,x,y,ARRcookies=document.cookie.split(";");
   for (i=0;i<ARRcookies.length;i++)
  {
     x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
     y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
     x=x.replace(/^\s+|\s+$/g,"");
     if (x==c_name)
    {
    return unescape(y);
    }
  }
}

function setCookie(c_name,value,exdays)
{
   alert("Im in setCookie " );
   var exdate=new Date();
   exdate.setDate(exdate.getDate() + exdays);
   var c_value=escape(value) + ((exdays==null) ? "" : ";               

   expires="+exdate.toUTCString());  
   document.cookie=c_name + "=" + c_value;
   alert("Cookie Set");
}

function checkCookie(end)
{
   alert("Im in checkCookie");
   document.getElementById('full').ondragstart = function noDrag() { return false; };
   var score=getCookie("scorecount");
if (score!=null && score!="")
  {
     if(end == 'yes')
     {

     score = score - 1;




    return score;

     alert("Your score is " + score);

    }
    else 
    {

     score=1;
  if (score!=null && score!="")
    {

       setCookie("scorecount",score);
       //alert("Your score is " + score);
    }
  }
}

function correct(pgnmbr)
{
   var val;


   val = getCookie('scorecount');
   val = parseInt(val)+ 1;
   setCookie('scorecount',val);
   location.href = loc();
   alert(val);

}
function correct2(pgnmbr)
{
   var val;


   val = getCookie('scorecount');
   val = parseInt(val)+ 1;
   setCookie('scorecount',val);
   location.href = loc2();


}

   var clicks = 0;
function wrong(pgnmbr)
{   

   clicks++;
 if(clicks < 3)
 {

   alert("wrong try again");

 }
 else
 {  
   alert("you have exceeded your amount of trys");


    location.href = loc();
}
}

document.getElementsByClassName('box1')[0].addEventListener('click', correct, false);

document.getElementsByClassName('bg')[0].addEventListener('click', wrong, false);

2 个答案:

答案 0 :(得分:1)

好的,我解决了我的问题,显然你只能读取在同一个域上设置的cookie ...#Duh#Noobie感谢你们的建议!

答案 1 :(得分:0)

尝试使用ajax调用将cookie内容发送到要用于读取cookie的php函数,祝你好运