我如何回应JS重定向?

时间:2015-12-26 22:04:05

标签: javascript php

我想回应一个javascript移动设备重定向到移动网站 但我必须给出一个“身份证”。使用重定向链接。这是我现在的代码:

<?
  if (screen.width <= 800) {
    window.location("mplayer.php?id=" . $_GET['id'] . "");
  }
?>

但它给了我这个错误

  

注意:使用未定义的常量屏幕 - 假设&#39;屏幕&#39;在第16行的/home/jterweele/public_html/pack-simulator/16/player.php

     

注意:使用未定义的恒定宽度 - 假设&#39;宽度&#39;在第16行的/home/jterweele/public_html/pack-simulator/16/player.php

     

注意:使用未定义的常量窗口 - 假设&#39;窗口&#39;在第17行的/home/jterweele/public_html/pack-simulator/16/player.php

     

致命错误:在第17行的/home/jterweele/public_html/pack-simulator/16/player.php中调用未定义的函数位置()

希望有人可以帮助我。 谢谢!

1 个答案:

答案 0 :(得分:2)

JS和PHP是两种不同的动物,它们不会像你现在使用它们那样混合在一起,这解释了你得到的语法错误,因为你宣称PHP认为是常量。

你需要做的就是分开那些。

首先,JS / HTML:

<!DOCTYPE html>

<head>
   <title></title>
</head>

<body>
    <script type="text/javascript">

    <!--
    if (screen.width <= 800) {
       window.location = "redirection_page.php?set=true";
    }

    else {
       document.write ("Show them a message, or do something else.");
    }
    //-->
    </script>

</body>
</html>

然后PHP:(redirection_page.php)

<?php

if(isset($_GET['set']) && $_GET['set'] == true ){

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

exit;

}

所以,在你的情况下会读到这样的东西:

N.B。:(您需要对GET数组进行一些修改。)

<!DOCTYPE html>

<head>
   <title></title>
</head>

<body>

<?php 

$_GET['id'] = 2;

?>

    <script type="text/javascript">

    <!--
    if (screen.width <= 800) {
       window.location = "mplayer.php?id=<?php echo $_GET['id'] ?>";
    }

    else {

       document.write ("Show them a message, or do something else.");

    }

    //-->
    </script>

</body>

</html>

PHP:(mplayer.php)

<?php

if(isset($_GET['id']) && $_GET['id'] == 2 ){

   echo $id = $_GET['id'];

}

还要确保您没有在标题之前输出(这意味着PHP上方没有HTML,<?php标记之前的空格,Cookie等等。如果这对您不起作用,那么您的系统可能未设置为捕获/显示错误/通知/警告,因此启用错误报告。

如果您确实看到标题已发送通知,请阅读Stack上的以下内容:

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。