Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 移动到桌面重定向条件不适用';行不通_Javascript_Php_Jquery Mobile - Fatal编程技术网

Javascript 移动到桌面重定向条件不适用';行不通

Javascript 移动到桌面重定向条件不适用';行不通,javascript,php,jquery-mobile,Javascript,Php,Jquery Mobile,我无法根据屏幕大小在任何地方找到重定向的PHP版本,因此我需要使用组合方法从PHP中提取JS脚本,但我在这里的一个答案中找到的代码由于某种原因无法工作。一切看起来都很好,但不管怎样,链接还是会回到手机版本。我的桌面版本链接是(抱歉,无法在此处显示标记): 在我的index.php桌面版本的顶部,我有: <?php session_start(); if (isset($_GET['v']) && $_GET['v'] == 'desktop') { $_SESSION['

我无法根据屏幕大小在任何地方找到重定向的PHP版本,因此我需要使用组合方法从PHP中提取JS脚本,但我在这里的一个答案中找到的代码由于某种原因无法工作。一切看起来都很好,但不管怎样,链接还是会回到手机版本。我的桌面版本链接是(抱歉,无法在此处显示标记):

在我的index.php桌面版本的顶部,我有:

<?php session_start();

if (isset($_GET['v']) && $_GET['v'] == 'desktop') {
$_SESSION['v'] == 'desktop';
}

if (!isset($_SESSION['v']) || (isset($_SESSION['v']) && $_SESSION['v'] != 'desktop')) {
   echo "<script> if (window.screen.width < 1000) {window.location = '/mobile'; }</script>";
}
?>

在您的第一个if语句中,我很确定您想设置
$\u SESSION['v']
,而不是将其与
'desktop'
进行比较。我想您的括号是错的。您过早地关闭了if语句。如果您想测试设备大小,最好的方法是“仅javascript”方法。在加载所有附加脚本/css/字体等之前,可能会在head标记中添加此代码段。在您的第一个
if
语句中,我非常确定您希望设置
$\u SESSION['v']
,而不是将其与“桌面”进行比较。谢谢用户555。将comparison==更改为==后,它显然会起作用。会话变量是使用
=
操作符设置的。在控制语句之外比较它们是没有意义的。如果会话['v']='mobile'
我们将永远无法访问移动站点,因为您的
if
语句仅在未设置
$\u SESSION['v']
的情况下有效。其思想是脚本只需检测屏幕大小并重定向一次。重定向完成后,$\u会话['v']将相应地设置。一旦设置了$\u会话['v'],就不需要再检查了。
<?php session_start();

if (isset($_GET['v']) && $_GET['v'] == 'desktop') {
$_SESSION['v'] == 'desktop';
}

if (!isset($_SESSION['v']) || (isset($_SESSION['v']) && $_SESSION['v'] != 'desktop')) {
   echo "<script> if (window.screen.width < 1000) {window.location = '/mobile'; }</script>";
}
?>
<?php session_start();

if (isset($_GET['v']){
  if ($_GET['v'] == 'desktop') {
     $_SESSION['v'] = 'desktop';
  }
  if ($_GET['v'] == 'mobile') {
     $_SESSION['v'] = 'mobile';
  }

}

if (!isset($_SESSION['v'])) {
   echo "<script> if (window.screen.width < 1000) {window.location = '/?v=mobile'; } else {window.location = '/?v=desktop' }</script>";
}
?>