OYEWAP.COM

  How can I tell HTML browsers from WML browsers?
Since it's very practical to re-use already existing code that you have written for HTML browsers, you need a way to tell HTML browsers from WML browsers. Also, you might want to redirect HTML browsers to a directory with HTML documents, and WML browsers to WML decks. The PHP code below does just this. The reason the script is written to work this way is that it's easier to understand the code.

The popular Apache webserver has a module called mod_rewrite which can also be used for this purpose. See Philip J. Mikal's mod_rewrite example available at his site.

This has to be done on the server side, and the following PHP code will look first attempt to discover if the WAP gateway being used can accept the text/vnd.wap.vml MIME type. If not, it will check the first four characters in the ID string to determine if it's a WML browser. If there's no match, it's assumed that it's an HTML browser. As new WML browsers come along, their ID strings should be added to the list.

<?
// Because this script sends out HTTP header information, the first characters in the file must be the <? PHP tag.

  $htmlredirect = "/html/my_htmlpage.html";                           // relative URL to your HTML file
  $wmlredirect = "http://wap.mysite.com/wml/my_wmldeck.wml";          // ABSOLUTE URL to your WML file 

  if(strpos(strtoupper($HTTP_ACCEPT),"VND.WAP.WML") > 0) {         // Check whether the browser/gateway says it accepts WML.
    $br = "WML";
  }
  else {
    $browser=substr(trim($HTTP_USER_AGENT),0,4);
if($browser=="Noki" || // Nokia phones and emulators
$browser=="Eric" || // Ericsson WAP phones and emulators
$browser=="WapI" || // Ericsson WapIDE 2.0
$browser=="MC21" || // Ericsson MC218
$browser=="AUR " || // Ericsson R320
$browser=="R380" || // Ericsson R380
$browser=="UP.B" || // UP.Browser
$browser=="WinW" || // WinWAP browser
$browser=="UPG1" || // UP.SDK 4.0
$browser=="upsi" || // another kind of UP.Browser ??
$browser=="QWAP" || // unknown QWAPPER browser
$browser=="Jigs" || // unknown JigSaw browser
$browser=="Java" || // unknown Java based browser
$browser=="Alca" || // unknown Alcatel-BE3 browser (UP based?)
$browser=="MITS" || // unknown Mitsubishi browser
$browser=="MOT-" || // unknown browser (UP based?)
$browser=="My S" || // unknown Ericsson devkit browser ?
$browser=="WAPJ" || // Virtual WAPJAG www.wapjag.de
$browser=="fetc" || // fetchpage.cgi Perl script from www.wapcab.de
$browser=="ALAV" || // yet another unknown UP based browser ?
$browser=="Wapa")     // another unknown browser (Web based "Wapalyzer"?)
{
        $br = "WML";
    }
    else {
      $br = "HTML";
    }
  }
if($br == "WML") {
header("302 Moved Temporarily");  // Force the browser to load the WML file instead
header("Location: ".$wmlredirect);

    exit;
  }
  else {
    header("302 Moved Temporarily");        // Force the browser to load the HTML file instead
    header("Location: ".$htmlredirect);
    exit;
  }
?>