BABBAMedlem sedan feb. 2000280 inlägg 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");
------------------
BABBA
http://www.babba.f2s.com
emissionMedlem sedan dec. 19996 721 inlägg 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?
BABBAMedlem sedan feb. 2000280 inlägg 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???
------------------
BABBA
http://www.babba.f2s.com
nicclasMedlem sedan feb. 20001 050 inlägg 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
BABBAMedlem sedan feb. 2000280 inlägg 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!
------------------
BABBA
http://www.babba.f2s.com
woodiMedlem sedan feb. 20001 270 inlägg 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.
------------------
Svenska FF1
www.johan-skog.nu
/W*