Maison >développement back-end >tutoriel php >TP5 détermine entre le téléphone mobile et le PC
Cet article présente principalement le jugement du téléphone portable et du PC dans TP5. Il a maintenant une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer
Écrivez d'abord la méthode ismobile pour déterminer la connexion de l'appareil dans le application>common.php
fichier public :
function ismobile() { // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) return true; //此条摘自TPM智能切换模板引擎,适合TPM开发 if (isset ($_SERVER['HTTP_CLIENT']) && 'PhoneClient' == $_SERVER['HTTP_CLIENT']) return true; //如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息 if (isset ($_SERVER['HTTP_VIA'])) //找不到为flase,否则为true return stristr($_SERVER['HTTP_VIA'], 'wap') ? true : false; //判断手机发送的客户端标志,兼容性有待提高 if (isset ($_SERVER['HTTP_USER_AGENT'])) { $clientkeywords = array( 'nokia', 'sony', 'ericsson', 'mot', 'samsung', 'htc', 'sgh', 'lg', 'sharp', 'sie-', 'philips', 'panasonic', 'alcatel', 'lenovo', 'iphone', 'ipod', 'blackberry', 'meizu', 'android', 'netfront', 'symbian', 'ucweb', 'windowsce', 'palm', 'operamini', 'operamobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile' ); //从HTTP_USER_AGENT中查找手机浏览器的关键字 if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) { return true; } } //协议法,因为有可能不准确,放到最后判断 if (isset ($_SERVER['HTTP_ACCEPT'])) { // 如果只支持wml并且不支持html那一定是移动设备 // 如果支持wml和html但是wml在html之前则是移动设备 if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) { return true; } } return false; }
Réécrivez ensuite la méthode fetch dans le contrôleur de classe de base Base du application>index>controller>Base.php
module d'index frontal :
/** *加载模板输出(电脑和手机) * @accessprotected * @paramstring$template模板文件名 * @paramstring$mobiletemplate手机模板文件名 * @paramarray$vars模板输出变量 * @paramarray$replace模板替换 * @paramarray$config模板参数 * @returnmixed */ protected function fetch($template = '', $mobiletemplate = '', $vars = [], $replace = [], $config = []) { if (ismobile()) { return $this->view->fetch($mobiletemplate, $vars, $replace, $config); } else { return $this->view->fetch($template, $vars, $replace, $config); } }
Enfin dans application>index>controller>Index
Dans la méthode index du contrôleur Index qui hérite de la classe de base Base, il suffit de passer respectivement le chemin du côté PC et le chemin du côté mobile.
return $this->fetch('default/index/index','mobile/index/index');
Le devant
default/index/index
est le chemin correspondant au côté PC, et le suivantmobile/index/index
est le chemin correspondant au côté mobile.
Grâce à la méthode ci-dessus, nous pouvons voir que même si cela fonctionne , mais il est très fastidieux de passer à chaque fois sur deux chemins.
Écrivez d'abord les constantes utilisées pour déterminer la connexion de l'appareil dans le application>common.php
fichier public VIEW_PATH
:
if (\think\Request::instance()->isMobile()) { define('VIEW_PATH', __DIR__ . '/../application/index/view/mobile/'); } else { define('VIEW_PATH', __DIR__ . '/../application/index/view/default/'); }
Remplacez ensuite les variables du modèle dans le fichier de configuration config.php de l'index du module application>index>config.php
:
return [ "template"=>[ // 模板路径 'view_path' => VIEW_PATH, ], ];
Enfin, dans la méthode contrôleur uniquement Vous venez besoin de récupérer un chemin directement.
return $this->fetch();
Astuce : La structure des répertoires de la page d'accueil est telle qu'elle est illustrée dans la figure :
Notez que la structure des répertoires sous default et mobile est cohérente
Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !
Recommandations associées :
Comment attribuer des valeurs dans un tableau à un ensemble de variables en PHP
Laravel dans le terminal Comment afficher les journaux dans
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!