Just a quick question -- the outsidemost if/elseif sequence of the 
function "sniff()" doesn't seem to have an "else" (it ends with "elseif" 
and then does another "if", before its "return").  Did you mean to 
include an "else" in that?


Erik




On Monday, February 18, 2002, at 04:37  PM, Robert Miller wrote:

> Hello,
>
> Below is code I hacked up to read a user agent string (i.e. Mozilla/5.0 
> (Windows; U; Windows NT 5.0; en-US; rv:0.9.8) Gecko/20020204
> ) and return several items including:
> - the browser name,
> - the browser version,
> - the browser's major version number, and
> - user definable compatibility listings.
>
> This post is attached so that others may benefit. DISCLAIMER: I've been 
> working with PHP for a few months... about as long as I've ever been 
> programming - feel free to trust my brain at your own risk. Your 
> thoughts and suggestions are welcome. :-)
>
> ASSUMING CORRECTIONS ARE MADE DUE TO MAILING-LIST COMMENTS, I WILL 
> REPOST THIS CODE.
>
> Cheers, Rob
>
> P.S. Is this the correct forum for tossing code around?
>
>
>
> Now for the code...
>
>
>
>
> WEB PAGE: (*.php )   <-- I removed all the HTML for readability.
>
> <?
> require ("sniff.inc");
> require ("ua.inc");
>
> $uasniff = sniff ($HTTP_USER_AGENT);
> $uaraw = $uasniff[raw];
> $uaname = $uasniff[name];
> $uaversion = $uasniff[version];
> $uamajor = $uasniff[major];
> $uatest = ua ("$uaname", "$uamajor");
>
> echo $uaraw;
> echo $uaname;
> echo $uaversion;
>
> if ($uatest) { echo "compatible"; }
> else { echo "not compatible"; }
>
> ?>
>
>
>
>
>
> REQUIRED FILE: (sniff.inc )
>
> <?
> function sniff($ua) {
>       if ( preg_match("/Mozilla/",$ua) == true ) {
>               if ( preg_match("/MSIE/",$ua) == true && 
> preg_match("/Opera/",$ua) == false ) {
>                       preg_match("/(?<=MSIE )\S{3}/",$ua, $matches);
>                       $name = "Internet Explorer";
>                       $version = $matches[0];
>               }
>               elseif ( preg_match("/Netscape/",$ua) == true ) {
>                       preg_match("/(?<=Netscape6\/)\S{3,5}/",$ua, $matches);
>                       $name = "Netscape";
>                       $version = $matches[0];
>               }
>               elseif ( preg_match("/Opera/",$ua) == true ) {
>                       preg_match("/(?<=Opera )\S{3,5}/",$ua, $matches);
>                       $name = "Opera";
>                       $version = $matches[0];
>               }
>               elseif ( preg_match("/Gecko/",$ua) == true ) {
>                       preg_match("/(?<=rv:)\S{3,5}/",$ua, $matches);
>                       $name = "Mozilla";
>                       $version = $matches[0];
>               }
>               else {
>                       preg_match("/(?<=Mozilla\/)\S{3,5}/",$ua, $matches);
>                       $name = "Netscape";
>                       $version = $matches[0];
>               }
>       }
>       elseif ( preg_match("/Lynx/",$ua) == true ) {
>               preg_match("/(?<=Lynx\/)\S{3,11}/",$ua, $matches);
>               $name = "Lynx";
>               $version = $matches[0];
>       }
>       if ( $version == true  ) {
>               preg_match("/[0-9]/", $version, $matches);
>               $major = $matches[0];
>       }
>       return array ( 'name' => $name , 'version' => $version, 'major' => 
> $major, 'raw' => $ua );
> }
> ?>
>
>
>
>
>
> REQUIRED FILE: (ua.inc )
>
> <?
> function ua($name, $major) {
>       $uaarray = array (
>               "Internet Explorer" => array (
>                       4 => "true",
>                       5 => "true",
>                       6 => "true"
>               ),
>               "Netscape" => array (
>                       4 => "true",
>                       6 => "true"
>               ),
>               "Opera" => array (
>                       5 => "true",
>                       6 => "true"
>               ),
>               "Mozilla" => array (
>                       0 => "true"
>               ),
>       );
>       if ($uaarray[$name][$major]) {
>               return "1";
>       }
> }
> ?>
>
>
>
> ----------------------------------------------------------------------
> Robert J. Miller
> Internet Support Specialist
> Department of Government Services and Lands
> P.O. Box 8700, St. John's, NF., A1B-4J6
> (709) 729-4520 (phone)
> (709) 729-4151 (facsimile)
> (709) 778-8746 (pager)
>
> http://www.gov.nf.ca/gsl/
> mailto:[EMAIL PROTECTED]
> ----------------------------------------------------------------------
> Simple things should be simple and hard things
> should be possible.
> ----------------------------------------------------------------------
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>





----

Erik Price
Web Developer Temp
Media Lab, H.H. Brown
[EMAIL PROTECTED]


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to