连接jQuery mobile +设置cookies + PHP =主要头痛。请帮忙

时间:2013-03-24 18:24:00

标签: php jquery jquery-mobile

长话短说,我有一个主站点和移动版本。我试图创建一个“查看完整站点”按钮,单击它时,它执行2个功能。他们是

1。设置一个cookie,以便主页可以跟踪是否点击了“查看完整网站”按钮。

2。点击后导航到主要的父(而非移动)网站。

我尝试了很多东西,所以我不会堵塞页面(我的大脑到处都是)。无论如何 我努力工作的最后一种方式是我通过 Loooooong 方式打破了这一切

-1。创建按钮

-2。点击,导航到处理器页面,使用php设置cookie,然后重定向到主站点

-3。主站点有php检查“查看完整站点是否已被点击”

并且它仍然无效。

下面是对我尝试做什么以及我正在做什么的一个很好的描述:

- jQuery Mobile(网站在此内构建)

- PHP移动检测(http://code.google.com/p/php-mobile-detect/

- jQuery Cookie(https://github.com/carhartl/jquery-cookie

注意:就设置cookie和测试它们的存在而言,它单独起作用。

在主站点的索引上,在开头HTML标记上方的标题中,我有这个 PHP:

if(!isset($_COOKIE['dontDoMob'])){

    //its not set so check for device type.
    include("Mobile_Detect.php");
    $detect = new Mobile_Detect();



    if ($detect->isMobile() ) {
        //"its some kind of mobile device so redirect to mobile";
        header("Location:http://myforecyte.com/m/");
        exit();
    }
}

在移动网站的索引上,我有一个按钮(“查看完整网站”),点击该按钮应该通过jQuery设置cookie(单独工作),然后重定向到主页,这将是刚刚保留从那时起加载主站点,然后就会设置cookie。

因为所有这些都不起作用(它甚至不会重定向),(不确定它是否因为jQuery Mobile),并且假设它然后我将所有内容分开,

我做的是这个(下面)

我在jQuery mobile中设置了 视图完整网站 链接,以转到像这样的单独处理器页面(等)。那个处理器页面有这个

PHP:

setcookie('dontDoMob', 'yes');

header("Location:http://www.myforecyte.com");

现在当我用这样的基本内容检查cookie时(确保设置了cookie) PHP:

if(isset($_COOKIE['dontDoMob'])){

    echo "its set yo";

} else {

echo "its not set";
}

它有效,告诉我“它的设置哟”哈哈(我不得不笑)。当我删除所有cookie并用firebug重新测试时,它总是相应的。

所以我删除了所有废话并简单地离开了 PHP:

setcookie('dontDoMob', 'yes');

header("Location:http://www.myforecyte.com");

之后会发生什么......好吧......它总是回到移动设备上。我看到主要网站的URL瞬间,然后再次重定向到移动设备。就像饼干没有设置一样。

PS / HINT - 我认为这与在全球范围内设置cookie或类似的东西有关...不确定如何去做。贝恩是混乱的。

我迷失了!

任何帮助,逻辑调整....任何我能让我谦虚的欣赏。

先谢谢。

2 个答案:

答案 0 :(得分:1)

我一直在努力做同样的事情,我终于让它发挥作用了。我使用了和你一样的方法,所以我不确定你为什么不工作......

在我的移动网站上,我有一个按钮可以查看完整的网站。此按钮链接到www.fullsite.com/setmobile.php

setmobile.php是一个简单的php文件,如下所示:

<?php
    setcookie("mobile", "full", time()+3600);
    header("Location:http://www.fullsite.com");
?>

设置cookie并转到主站点。主站点有以下php代码:

<?php
if (!isset($_COOKIE["mobile"])){
    (...detect mobile script)
}
?>

它适用于我,但它看起来与您使用的方法相同,所以我不确定为什么你的工作不起作用......

您现在可能已找到解决方案,但如果没有,我希望这可以帮助您:)

祝你好运, 安德鲁

答案 1 :(得分:0)

Cookie具有“域名”限制,

e.g。默认情况下,http://mobile.example.com的Cookie 可供http://www.example.com使用。

但是, 可用于创建cookie的域的所有子域。例如。 http://a.mobile.example.comhttp://b.mobile.example.com

您可以指定在设置Cookie时应为哪个域创建Cookie。在这里阅读PHP手册:

http://php.net/manual/en/function.setcookie.php

不确定这是否是您问题的完整答案,但由于您提到多个域名,这可能是问题的部分

希望这有帮助