2

我有一个网站 (www.website.com) 和一个移动网站 (m.website.com),如果用户想从移动设备上查看,我正在尝试让他们“查看完整网站”。目前我正在使用一些 Javascript 来检查整个站点上的屏幕宽度,然后重定向到移动设备。

if (screen.width <= 699) {
document.location = "http://m.website.com";
}

这工作正常。在移动网站上有一个“查看完整网站”按钮。当您单击它时,它会将您重定向到我的脚本“force_desktop.php”,该脚本设置了一个 cookie,然后将您发送到主站点。

<?php
setcookie("force_desktop", "1");
header("Location: http://www.mywebsite.com");
?>

现在我们设置了一个 cookie 并重定向到主网站,我们需要检查 cookie 而不是只检查屏幕宽度。

逻辑

如果找到 Cookie force_desktop

然后退出

别的

运行屏幕尺寸测试

这是我尝试使用但不起作用的代码。此代码放置在我的 head.php 文件中,该文件将在每个页面上运行,并放置在脚本开始和结束标记之间。

尝试 1

if($_COOKIE['force_desktop'] == '1' {
exit;
} else if($_COOKIE['force_desktop'] != '1' {
if (screen.width <= 699) {
document.location = "http://m.website.com";
}
};

尝试 2

if(isset ($_COOKIE["force_desktop"])){
exit;
else
if (screen.width <= 699) {
document.location = "http://m.mywebsite.com";
};

可行的替代逻辑

IF Coo​​kie force_desktop 未找到且 screen.width <= 699

然后重定向到 m.myseite.com

别的

出口

笔记

我已经运行了以下脚本来确保放置了一个 cookie,并且确实是这样。

<?php
print_r($_COOKIE);
?>

我已经没有想法了,并且知道我的编码不正确,尤其是 If/Else 语句中的 If/Else 语句。我也不确定是否最好使用“isset”来查看是否正在使用 cookie 或 ($_COOKIES['variable'] == "#")。我真的很感谢对此提供一些好的反馈。

提前感谢您的帮助和建议,

马特

4

3 回答 3

2

您正在混合 JavaScript 和 PHP。您正在尝试screen.width在您的 PHP 脚本中使用,这没有任何意义。您需要使用 echo 语句将 JavaScript 输出到页面中。然后它将检查用户的屏幕分辨率并进行重定向。

试试这个:

if(isset ($_COOKIE["force_desktop"])){
    exit;
}
else
{
    echo '<script> 
    if (screen.width <= 699) {
    document.location = "http://m.mywebsite.com";}
    </script>'; 
};
于 2013-07-24T18:01:54.387 回答
0

你应该在 php 页面的顶部做这个测试,并且确保你不能像这样混合 php 和 java 脚本

您可以更改此代码,例如

<?php
 $flag = 0;
 if(isset($_COOKIE['force_desktop']))$flag++;
?>

页面稍后在<head>标签开始后立即使用代码

..
..
<head>
<?php
if(!$flag){
echo '<script> 
if (screen.width <= 699) {
document.location = "http://m.mywebsite.com";
</script>'; 
 }
?>
于 2013-07-24T18:55:18.720 回答
-1

你不能混合使用 javascript 和 PHP,javascript 是前端,PHP 是后端。尝试这样的事情:

if( $something ){

   Header("Location: somewhere.php");

}
于 2013-07-24T18:05:07.117 回答