---
title: "Browser check"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/14525-browser-check"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "BABBA"
published: "2000-04-21T12:49:00.000Z"
updated: "2000-05-09T13:46:00.000Z"
replies: 5
views: 568
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/14525-browser-check"
---

# Browser check

## #1 — BABBA, 2000-04-21T12:49Z

Ser någon nåt direkt fel i denna kod:

\---
\<?
	function check_browser()
	{
	  $Browser_Name = strtok($HTTP_USER_AGENT,  "/"); 
	  $Browser_Version = strtok( " ");
	  $ok = false;

       	  if(ereg( "MSIE", $HTTP_USER_AGENT)) 
    	  { 
        	$Browser_Name = "MSIE"; 
        	$Browser_Version = strtok( "MSIE"); 
        	$Browser_Version = strtok( " "); 
        	$Browser_Version = strtok( ";"); 
    	  }

	  if(($Browser_Name=="Mozilla") && ($Browser_Version\>=4))
		$ok = true;

	  if(($Browser_Name=="MSIE") && ($Browser_Version\>=4))
		$ok = true;
	}
	return $ok;
?\>
\---

Koden har jag i en fil som heter browser.php3
Sedan inkluderar jag den i varje sida och kollar om det är ok..:

require("browser.php3");
if(!check_browser()) header("Location:error.htm");

Permalänk: https://www.webforum.nu/p/14525

## #2 — emission, 2000-04-21T15:30Z

Strtok() tycker inte om strängar som separator (i det här fallet "MSIE"), trots att det står så i dokumentationen. Explode fungerar dock.

Dessutom är det lite lustigt med ...

$Browser_Version = strtok( "MSIE"); 
$Browser_Version = strtok( " "); 
$Browser_Version = strtok( ";"); 

Är det bara för att föra fram strtok-pekaren, eller?

Permalänk: https://www.webforum.nu/p/310782

## #3 — BABBA, 2000-04-21T17:55Z

Det luriga är att koden funkar utmärkt i ett större script men ej i mitt fall.

Här är källan till scriptet:
 <http://px.sklar.com/code-pretty.html?code_id=10> 

Varför funkar inte min variant???

Permalänk: https://www.webforum.nu/p/310783

## #4 — nicclas, 2000-04-21T19:04Z

Hejsan,

Så här fungerar det bättre:

```
<?
function check_browser(){
  global $HTTP_USER_AGENT;
  $Browser_Name = strtok($HTTP_USER_AGENT, "/"); 
  $Browser_Version = strtok( " ");
  $ok = false;

  if(ereg( "MSIE", $HTTP_USER_AGENT)) { 
    $Browser_Name = "MSIE"; 
    $Browser_Version = strtok( "MSIE"); 
    $Browser_Version = strtok( " "); 
    $Browser_Version = strtok( ";"); 
  }

  if(($Browser_Name=="Mozilla") && ($Browser_Version>=4))
    $ok = true;

  if(($Browser_Name=="MSIE") && ($Browser_Version>=4))
    $ok = true;
  return $ok;
}
?>

<html>
<body>
test
<?
if(!check_browser()) echo "error";
?>
</body>
</html>
```

Jag identifierade två "fel" i din kod. 1) Variablen $HTTP_USER_AGENT är deklarerad i "huvudprogrammet" mens du använder den i din funktion, och alltså måste du deklarera den som "global" först i funktionen. 2) Din return-sats har hamnat utanför funktionen.

/nicclas @ <http://www.nic-sys.se>

Permalänk: https://www.webforum.nu/p/310784

## #5 — BABBA, 2000-04-22T10:48Z

Hej ocj tack för hjälpen!

"return $ok;" som låg utanför funktionen var ett rent slarvfel när jag postade inlägget, men att HTTP_USER_AGENT skulle vara global var något nytt.

Tackar och bockar!

Permalänk: https://www.webforum.nu/p/310785

## #6 — woodi, 2000-05-09T13:46Z

Babba
Alla variabler som kommer utifrån in i en tabell måste vara globala..
Detta gäller även environment-variabler som $QUERY_STRING, $HTTP_USER_AGENT, $REMOTE_HOST m.fl.

Permalänk: https://www.webforum.nu/p/310786

---

Tråden på webben: https://www.webforum.nu/amne/php/14525-browser-check
