← Tutoriais

[PHP] Direcionador - WAP / WEB

Lida 7379 vezes

Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Bem antes de me dedicar a sites WEB, já eu trabalhava com WAP (wml) e então houve necessidade de desenvolver um script  que destinguisse quem acedia por PC e quem acedia por telemóvel.

No caso de alguem não ter ainda reparado, se tentarem aceder com Firefox ou Internet Explorer a um site em linguagem WML não conseguem pois o navegador vai-lhes pedir fazer o download de um ficheiro. É impressionante como estes senhores programadores não terem previsto a compatibilidade dos seus navegadores com a linguagem WML... Mas pronto, isto já é uma opinião pessoal. No navegador Opera isso não acontece, felizmente!!

Para resolver isto e se tiveres uma página WAP, ou se pretendes dar as boas vindas se alguem tentar aceder ao site por telemóvel eis a minha solução, alterada principalmente para quando o site principal não é WAP, mas funciona em ambas as direções:

Ficheiro: direcionador.php
Código: [Seleccione]
<?php
//////////////////////////////////////////////////////////////////////
//                     DIRECIONADOR  WAP / WEB                      //
//          *   *   *  Elaborado por =IceBurn=   *   *   *          //
//     ---->      W W W . T E N H A M E D O . N E T      <----      //
////////////////////////////////////////////////////////////////////// 

#-------------------// CONFIGURAÇÃO //---------------------#

$WAP "http&#58;//meusite.com/menu.wml"/* URL da página WAP*/

//---- A PARTIR DAQUI NÃO É NECESSÁRIO ALTERAR + NADA ----//

if &#40; eregi&#40;$_SERVER['HTTP_ACCEPT'&#93;, "vnd.wap.wml"&#41; &#41; &#123; 
  
  /* Se o navegador enviar headers WML não perdemos mais tempo
     e definimos a variavel $wml como true */
  
  
$wml true;

&
#125; else &#123;

$navegador substr&#40;trim&#40;$_SERVER['HTTP_USER_AGENT'&#93;&#41;,0,4&#41;;

/* Caso contrário vamos procurar se o User Agent é
   um simulador wap ou mesmo uma aplicação no telemóvel */ 
   
$tele = array&#40;"Noki",
              
"Eric",
              
"WapI",
              
"MC21",
              
"AUR ",
              
"R380",
              
"UP.B",
              
"upsi",
              
"UPG1",
              
"upsi",
              
"QWAP",
              
"Jigs",
              
"Java",
              
"Alca",
              
"MITS",
              
"MOT-",
              
"My S",
              
"WAPJ",
              
"fetc",
              
"ALAV",
              
"Wapa"/*,"Opera"*/&#41;; /* Quando o teu site é em WML,
                        convem aceitar Opera e tirar
    o comentáriocaso contrário
deves deixar estar como está */

foreach&
#40;$tele as $movel&#41; &#123;
    
if &#40; eregi&#40;"$navegador", $movel&#41; &#41; 
   $wml true;
&
#125;
&#125;
if &#40;$wml&#41;
&#123; /* Redirecionamento para a página WAP */
  
Header&#40;"Location&#58; $WAP"&#41;; 
  
exit; 
&
#125;
?>


Depois para utilizar isto no site, basta fazer um include imediatamente antes do código HTML (ou whatever)

Ficheiro: index.php
Código: [Seleccione]
<?php
include&#40;"direcionador.php"&#41;;
?>

<HTML>
<BODY>

Bem vindo ao HTML :)

</BODY>
</HTML>
Offline

cenourinha 
Elite
Mensagens 4094 Gostos 21
Troféus totais: 34
Trófeus: (Ver todos)
Mobile User Apple User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4

Porreiro, o opera felizmente lê sites wap...
xD
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Citação de: "cenourinha"
Porreiro, o opera felizmente lê sites wap...
xD


Já suporta a muito tempo.
Já agora aproveito para te dar os parabens pelos widgets, bom trabalho.
Offline

cenourinha 
Elite
Mensagens 4094 Gostos 21
Troféus totais: 34
Trófeus: (Ver todos)
Mobile User Apple User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4

Citação de: "=IceBurn="
Citação de: "cenourinha"
Porreiro, o opera felizmente lê sites wap...
xD


Já suporta a muito tempo.
Já agora aproveito para te dar os parabens pelos widgets, bom trabalho.


Ainda funcionam? Eu acho que estão com a feed antiga e que não devem funcionar... confirma-me isso sff...
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

O Webtuga Topsites funciona, os outros 2 não.
Offline

cenourinha 
Elite
Mensagens 4094 Gostos 21
Troféus totais: 34
Trófeus: (Ver todos)
Mobile User Apple User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4

Quando tiver tempo actualizo, agora vou estudar matemática que amanha é teste...
lol
Offline

cenourinha 
Elite
Mensagens 4094 Gostos 21
Troféus totais: 34
Trófeus: (Ver todos)
Mobile User Apple User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4

Pronto, já estão actualizadas as widgets.
Agora estou a usar o Opera no macOSx e nem se compara com a velocidade do firefox.

O Firefox está muito mais lento, penso que seja por causa de alguma coisa com javascript.
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

O webtuga News Wid só está a mostrar os títulos das noticias, não mostra o conteúdo.
E o outro? Tinhas 3, agora só encontro 2...
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

O código tinha uma pequena falha que foi corrigida.
Função strpos(); substituida pela função eregi();
Offline

Spread 
Membro
Mensagens 1433 Gostos 2
Troféus totais: 29
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Secalhar esta é uma questão parva mas aqui vai: O ie, FF, opera, etc foram feitos para visualizar html/xhtml ou wml?

Cumps 8)
Offline

vikim 
Membro
Mensagens 1 Gostos 0
Troféus totais: 18
Trófeus: (Ver todos)
Super Combination Combination Level 4 Level 3 Level 2 Level 1 First Post Karma Tenth year Anniversary Nineth year Anniversary

Blz?
Eu sou Vinícius de Goiânia-GO e fiz uma pagina simples em wml caso alguem tente entrar no meu site pelo celular. www.locomotivaalada.com/indexwap.wml
.
Mas eu gostaria q o usuário do celular, assim como o do computador, coloque apenas www.locomotivaalada.com.
Tentei fazer com os códigos que vc colocou... mas no movel continua acusando a pagina de ser html.
.
Vc pode me ajudar???
a minha pagina inicial html eh "index.html" e a wml eh "indexwap.wml" e estão no mesmo diretório (raiz) do servidor.
.
Obrigado!!!
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Então é assim, todos os servidores por defeito procuram primeiro que tudo por um ficheiro index.html e só se não encontrarem index.html é que vão buscar um index.php ou um index.asp, etc...

Agora no seu caso:
Portanto, a página principal é o index.html, assim, tem de criar um ficheiro index.php e meter lá o seguinte código:
(Note-se que fiz algumas alterações para funcionar no seu caso em concreto)

Código: [Seleccione]
<?php 
////////////////////////////////////////////////////////////////////// 
//                     DIRECIONADOR  WAP / WEB                      // 
//          *   *   *  Elaborado por =IceBurn=   *   *   *          // 
//     ---->      W W W . T E N H A M E D O . N E T      <----      // 
////////////////////////////////////////////////////////////////////// 

#-------------------// CONFIGURAÇÃO //---------------------# 

$WAP "indexwap.wml"/* Página WAP */ 
$WEB "index.html";   /* Página WEB */

//---- A PARTIR DAQUI NÃO É NECESSÁRIO ALTERAR + NADA ----// 

if &#40; eregi&#40;$_SERVER['HTTP_ACCEPT'&#93;, "vnd.wap.wml"&#41; &#41; &#123; 
  
  /* Se o navegador enviar headers WML não perdemos mais tempo 
     e definimos a variavel $wml como true */ 
  
  
$wml true

&
#125; else &#123; 

$navegador substr&#40;trim&#40;$_SERVER['HTTP_USER_AGENT'&#93;&#41;,0,4&#41;; 

/* Caso contrário vamos procurar se o User Agent é 
   um simulador wap ou mesmo uma aplicação no telemóvel */ 
    
$tele = array&#40;"Noki", 
              
"Eric"
              
"WapI"
              
"MC21"
              
"AUR "
              
"R380"
              
"UP.B"
              
"upsi"
              
"UPG1"
              
"upsi"
              
"QWAP"
              
"Jigs"
              
"Java"
              
"Alca"
              
"MITS"
              
"MOT-"
              
"My S"
              
"WAPJ"
              
"fetc"
              
"ALAV"
              
"Wapa"/*,"Opera"*/&#41;; /* Quando o teu site é em WML, 
                                 
convem aceitar Opera e tirar 
                            o comentário
caso contrário 
                           deves deixar estar como está 
*/ 

foreach&
#40;$tele as $movel&#41; &#123; 
    
if &#40; eregi&#40;"$navegador", $movel&#41; &#41; 
      
$wml true
&
#125; 
&#125; 
if &#40;$wml&#41; 
&#123; /* Redirecionamento para a página WAP */ 
  
Header&#40;"Location&#58; $WAP"&#41;; 
  
exit; 
&
#125;
else
&
#123;
  /* Redirecionamento para a página WEB */
  
Header&#40;"Location&#58; $WEB"&#41;;
&#125; 
?>


De seguida (aqui vem a parte mais importante), tem de criar um ficheiro .HTACCESS , ou adicionar ao existente caso já tenha este ficheiro a seguinte linha:
DirectoryIndex index.php
Portanto, o objectivo desta linha é "obrigar" o servidor a ir primeiro á página index.php que é a que tem o código de redirecionamento.
Offline

RaPtOr 
Membro
Mensagens 1173 Gostos 2
Feedback +1

Troféus totais: 30
Trófeus: (Ver todos)
Apple User Windows User Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes Poll Voter Level 5 Level 4

e issso =IceBurn=, andaslhe a dar ;)