2015-10-14 78 views
0

我有PHP的头一个问题重定向不工作的Safari浏览器有条件的JS重定向

if (!isset($lang)) 
{ 
header('Location: http://domain.com/en/home'); 
} 

我已阅读,这可能是与JS相当简单的做,但不知道如何使用,如果条件做$ lang已设置。

应该,我只是在“php if”中执行js,或者有一个更好/更聪明的方法来做到这一点。

谢谢。

if (!isset($lang)) 
{ 
    header('Location: http://domain.com/en/home'); 
    exit; 
} 

注:这个正常工作,你需要在任何其他与设置任何doctype之前设置这个头

+2

您正在编写一个运行在后端(服务器)上的php代码,并且您觉得有重定向的浏览器问题。请详细说明您的问题,我认为浏览器对于php重定向没有任何问题。 –

+1

你说“有问题”,但你没有说出什么问题。我简直无法相信Safari不理解“位置”标题。自从20世纪80年代后期以来,它一直是HTTP协议的一部分,所以这将是一个史诗般的错误! –

+0

问题是,该网站显示几秒钟,然后Safari说:“网站反复出现问题......”。我做了一些搜索,看到过去有/ php的头和Safari问题。所以,我认为这是我的问题所在。 – lStoilov

回答

1

首先,如果你设置一个重定向头,你应该停止PHP执行。此外,exit可防止其他任何内容发送到浏览器(内容,其他标题等)。混合标题可能会导致不需要的行为。

其次,你可以这样做:

if (!isset($lang)) 
{ 
    ?> 
    <script> 
    window.location = "http://domain.com/en/home"; 
    </script> 
    <?php 
} 
+0

谢谢,不知何故,我错过了退出部分。我想我应该停止夜间工作:)现在已经修好了! – lStoilov

1

使用Java Script

if (!isset($lang)) 
{ 
    ?> 

    <script> 
    location.href = "http://domain.com/en/home"; 
    </script> 

    <?php 
} 
1

您可以ob_start()

ob_start()//Define at the top of the php page. 
if (!isset($lang)) 
{ 
header('Location: http://domain.com/en/home'); 
exit; 
} 
1

尝试可以使用echo打印HTML标签<script>,把你的t中的JavaScript代码他的标签。

if (!isset($lang)){ 
    echo " 
     <script> 
      window.location = "http://domain.com/en/home"; 
     </script> 
    "; 
}