note 91655 added to function.get-browser
| From: | StevePerkins at osu1 dot php dot net | Date: | Sun, 21 Jun 2009 23:11:26 +0000 |
| Subject: | note 91655 added to function.get-browser | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-157204@lists.php.net to get a copy of this message | ||
That's really bizarre. It posted an older version that I tried to post before, but which failed
at the time. Anyway, here it is again, this is the proper version.
This is a simple class to detect the client browser and version using regular expressions.
<?PHP
class Browser
{
private $props = array("Version" => "0.0.0",
"Name" => "unknown",
"Agent" => "unknown") ;
public function __Construct()
{
$browsers = array("firefox", "msie", "opera", "chrome",
"safari",
"mozilla", "seamonkey", "konqueror", "netscape",
"gecko", "navigator", "mosaic", "lynx",
"amaya",
"omniweb", "avant", "camino", "flock",
"aol");
$this->Agent = strtolower($_SERVER['HTTP_USER_AGENT']);
foreach($browsers as $browser)
{
if (preg_match("#($browser)[/ ]?([0-9.]*)#", $this->Agent, $match))
{
$this->Name = $match[1] ;
$this->Version = $match[2] ;
break ;
}
}
}
public function __Get($name)
{
if (!array_key_exists($name, $this->props))
{
die "No such property or function $name)" ;
}
return $this->props[$name] ;
}
public function __Set($name, $val)
{
if (!array_key_exists($name, $this->props))
{
SimpleError("No such property or function.", "Failed to set $name",
$this->props) ;
die ;
}
$this->props[$name] = $val ;
}
}
?>
example code
<?PHP
$browser = new Browser ;
echo "$Browser->Name $Browser->Version" ;
?>
result when client using Firefox 3.0.11
firefox 3.0.11
result when client using unknown browser
unknown 0.0.0
etc etc
----
Server IP: 209.41.74.194
Probable Submitter: 82.36.72.125
----
Manual Page -- http://www.php.net/manual/en/function.get-browser.php
Edit -- https://master.php.net/note/edit/91655
Del: integrated -- https://master.php.net/note/delete/91655/integrated
Del: useless -- https://master.php.net/note/delete/91655/useless
Del: bad code -- https://master.php.net/note/delete/91655/bad+code
Del: spam -- https://master.php.net/note/delete/91655/spam
Del: non-english -- https://master.php.net/note/delete/91655/non-english
Del: in docs -- https://master.php.net/note/delete/91655/in+docs
Del: other reasons-- https://master.php.net/note/delete/91655
Reject -- https://master.php.net/note/reject/91655
Search -- https://master.php.net/manage/user-notes.php