我已经选择与数据库相同的移动设备,因此它无法获取我的页面/代码,不知道这是一个好主意还是你有一个想法? ..
我希望它能够确定它是否是移动设备,或者它是否只是您登录的浏览器。
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更好,但最后我在这里展示:
希望你能帮助我:))
答案 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
}