标题到移动网站和标题到正常页面

时间:2012-12-27 12:42:47

标签: php javascript

我已经选择与数据库相同的移动设备,因此它无法获取我的页面/代码,不知道这是一个好主意还是你有一个想法? ..

我希望它能够确定它是否是移动设备,或者它是否只是您登录的浏览器。

function db_c()
     {
         $link = @mysqli_connect('localhost', '..', '..', '..');
         if(!$link)
         {
             die('Connect Error: ' . mysqli_connect_errno());
         }
         mysqli_set_charset($link, "utf8");
         $this->mysqli = $link;


         function detect_mobile($ua=null) {
             $ua = ($ua) ? $ua : $_SERVER['HTTP_USER_AGENT'];    
             return (preg_match('/(alcatel|amoi|android|avantgo|blackberry|benq|cell|cricket|docomo|elaine|htc|iemobile|iphone|ipad|ipaq|ipod|j2me|java|midp|mini|mmp|mobi|motorola|nec-|nokia|palm|panasonic|philips|phone|playbook|sagem|sharp|sie-|silk|smartphone|sony|symbian|t-mobile|telus|up\.browser|up\.link|vodafone|wap|webos|wireless|xda|xoom|zte)/i', $ua));    
         }


         if(detect_mobile($ua) ) {
            header('Location: http://mobil.blabla.dk/');
         }
         else{
             header('Location: http://www.blabla.dk/');
         }
 }

误解了她:

注意:未定义的变量:第39行/home/jesperbo/public_html/blabla.dk/inc/function_php/function.php中的ua警告:无法修改标头信息 - 已经发送的标头(输出从/ home / jesperbo开始) /public_html/blabla.dk/inc/function_php/function.php:39)第43行/home/jesperbo/public_html/blabla.dk/inc/function_php/function.php

第39行在这里:

 if(detect_mobile($ua) ) {

第43行在这里:

header('Location: http://www.blabla.dk/');

我试着把它拿到手里,但接着继续,页面上没有任何内容显示http://dk1.php.net/manual/en/function.ob-start.php

如果我这样做了:

function detect_mobile($ua=null) {
             $ua = ($ua) ? $ua : $_SERVER['HTTP_USER_AGENT'];    
             return (preg_match('/(alcatel|amoi|android|avantgo|blackberry|benq|cell|cricket|docomo|elaine|htc|iemobile|iphone|ipad|ipaq|ipod|j2me|java|midp|mini|mmp|mobi|motorola|nec-|nokia|palm|panasonic|philips|phone|playbook|sagem|sharp|sie-|silk|smartphone|sony|symbian|t-mobile|telus|up\.browser|up\.link|vodafone|wap|webos|wireless|xda|xoom|zte)/i', $ua));    
         }


         if(detect_mobile() ) {
            header('Location: http://mobil.blabla.dk/');
         }
         else{
             header('Location: http://www.blabla.dk/');
         }

你会看到它显示如下:

Denne webside har et loop ved omdirigering Websidenpåblabla.dk/ harfor forrsaget for mange omdirigeringer。 Dette kanmuligvisløsesvedat rydde dine cookies for dette website eller ved at tillade tredjepartscookies。 Hvis detteikkehjælper,ligger problemet muligvis i din serverkonfigurationen og ikke din computer。 她的nors forslag: Genindlæsdennewebside senere。 Fålerereoplysninger om dette问题。 Fejl 310(net :: ERR_TOO_MANY_REDIRECTS):用于管理omdirigeringer的Der var。

http://billedeupload.dk/images/fOUIQ.png

所以,如果我花费$ ua更好,但最后我在这里展示:

希望你能帮助我:))

3 个答案:

答案 0 :(得分:1)

要检测其移动设备还是常规设备,您应该检查http://detectmobilebrowsers.com/您可以在大多数编码中下载检测器。

请记住,这绝不是100%肯定的。移动计算机上的用户可以像常规浏览器一样进行浏览。此外,即使移动浏览是移动的,用户也可能希望看到常规网站。

检测很好,但尝试给用户一个选择。

标头已发送意味着有输出到浏览器。您可以使用ob_start();之类的输出缓冲来捕获所有输出,因此不会发生此问题。但更好的是确保没有输出。这也意味着在任何包含的文件的<?php ?>标记之外没有SPACE或新行。

答案 1 :(得分:0)

更改行:

if(detect_mobile($ua) ) {

要:

if(detect_mobile() ) {

如果您自己不提供,detect_mobile方法将为您提供用户代理。

答案 2 :(得分:0)

首先,需要在任何实际输出之前完成重定向。

在您的情况下,已经有一些内容已发送给客户端,这就是您无法重定向用户的原因。

所以不要这样做:

<? 
db_c();
detect_mobile();
// other stuff
?>

这样做:

<?
    detect_mobile();
    db_c();
    //other stuff
?>

要检查用户是否使用桌面浏览器或他的手机/平板电脑等,请使用此课程:php-mobile-detection

然后你可以像这样使用它:

include 'Mobile_Detect.php';
$detect = new Mobile_Detect();
if ($detect->isMobile()) {
    // redirect here
}