2011-06-14 132 views
-4

誰能告訴我爲什麼我一直得到elsealert根本沒有被觸發? Cookie正在瀏覽器打開時設置。PHP瀏覽器內檢測的Javascript

<?php 
$setcookie = setcookie('version', 'nova'); 
$browser = get_browser(null, true); 
    if(!isset($setcookie)){ 
     if($browser["MSIE"] < 8.0){ 
     // display message or alert! 

       echo "<script language=\"JavaScript\">\n"; 
       echo 'alert("Please upgrade to version 8.0+ in order to view this site.");'; 
       echo "</script>"; 
     } 
     } 

     else 

     { 
      echo "Browser is current:"; 
     } 

?> 
+5

這需要進行基本的調試。 '$ browser'包含什麼?做一個'print_r($ browser);'並在這裏發佈結果(如果他們沒有回答你的問題) – 2011-06-14 13:24:00

+0

嘗試使用'<8'而不是'8.0'並且執行var_dump($ browser)而不是print_r查看它將返回的var類型。 – Rufinus 2011-06-14 13:26:50

+0

print_r什麼都不返回。 var_dump返回bool(false)。謝謝 – bollo 2011-06-14 13:35:13

回答

3

if條件是錯誤的。你想檢查$_COOKIE數組,而不是返回值setcookie

if(!isset($_COOKIE['version'])) { 
    ... 
} 
1

PHP的get_browser()方法很慢。更好地利用類似

$useragent = $_SERVER['HTTP_USER_AGENT']; 

,那麼你可以做一些的preg_match如下

if(preg_match('/MSIE/i',$useragent)){ 
    //echo something here 
} 
else{ 
    //do something else 
} 
+0

仍然顯示瀏覽器是最新的。這是多麼的眨眼。顯然我的邏輯在某個地方是錯誤的,但我看不見它。謝謝 – bollo 2011-06-14 13:39:39

+0

這是正確的瀏覽器版本在您的代碼?如果(preg_match('/ MSIE 7.0/i',$ useragent))謝謝 – bollo 2011-06-14 13:47:17

+0

取決於$ useragent給出的輸出。您將需要以MSIE \ 7.0 – 2011-06-14 13:51:51