0

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

我希望它做的是找出它是移动的还是只是您正在登录的浏览器。

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)在 /home/jesperbo/public_html/blabla.dk/inc/function_php/function.php 第 43 行

第 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 Websiden på blabla.dk/ har forårsaget for mange omdirigeringer。Dette kan muligvis løses 在 rydde 为 dette 网站 eller ved 在tillade tredjepartscookies 提供的饼干。Hvis dette ikke hjælper, ligger problemet muligvis i din serverkonfigurationen og ikke din computer。Her nogle forslag:Genindlæs denne webside senere。Få flere oplysninger om dette 问题。Fejl 310 (net::ERR_TOO_MANY_REDIRECTS):用于 mange omdiriginger 的 Der var。

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

因此,如果我花 $ua 更好但我在这里展示的最后一个:

希望你能帮我 :)

4

3 回答 3

1

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

请记住,这永远不是 100% 确定的。移动计算机上的用户可以像普通浏览器一样浏览。即使在移动设备上浏览是移动设备时,用户也可能希望查看常规站点。

检测是好的,但尽量给用户一个选择。

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

于 2012-12-27T12:46:20.503 回答
0

换行:

if(detect_mobile($ua) ) {

到:

if(detect_mobile() ) {

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

于 2012-12-27T12:47:05.330 回答
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
}
于 2012-12-27T12:49:24.367 回答