Forum und email

Något användbart

Nu ska vi göra något lite mer användbart än det tidigare; vi ska kontrollera vilken webbläsare besökaren av webbsidan använder. För att göra det undersöker vi "user agent"-strängen som skickas till webbservern av webbläsaren som en del av HTTP-förfrågan. Den informationen finns lagrad i en variabel. Variabler inleds i PHP alltid med ett dollar-tecken. Variabeln vi behöver nu är $_SERVER["HTTP_USER_AGENT"].

Note: PHP Autoglobals-not $_SERVER är en speciell, reserverad variabel i PHP som innehåller all webbserverinformation. Den typen av variabel kallas för en "autoglobal" (eller superglobal). Läs mer under sektionen Autoglobals (även kallade superglobals). Dessa specialvariabler introducerades i version 4.1.0 av PHP. Förut användes istället $HTTP_*_VARS-arrayer såsom t.ex. $HTTP_SERVER_VARS. Trots att anvädningen av dessa variabler inte rekommenderas finns de fortfarande kvar. (Se även noten som behandlar gammal kod.)

För att skriva ut variabeln, skriver vi helt enkelt:

Example#1 Skriva ut en variabel (ett array-element)

<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>

Ovanstående script skulle t.ex. kunna generera följande:

Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
     

Det finns många olika typer av variabler i PHP. I ovanstående exempel skrev vi ut ett element från en array. Arrayer kan vara väldigt användbara.

$_SERVER är bara en av de variabler som automatiskt finns tillgängliga i PHP. En lista på alla återfinns i kapitlet Reserverade variabler, eller så kan du skapa en lista med hjälp av följande PHP-kod:

Example#2 Visa alla fördefinerade variabler med phpinfo()

<?php phpinfo(); ?>

Om du tittar på den här filen i din webbläsare kommer du se en sida full av information om PHP samt en lista med de variabler som finns tillgängliga.

Du kan ha flera PHP-kommandon inom en PHP-tagg och skapa små block av kod som gör mer än bara skriver ut text. Om vi till exempel skulle vilja kontrollera om användaren kör Internet Explorer skulle vi kunna göra så här:

Example#3 Exempel på hur man använder kontrollstrukturer och funktioner

<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
    echo 
"You are using Internet Explorer<br />";
}
?>

Ovanstående script skulle t.ex. kunna generera följande:

You are using Internet Explorer<br />

Här ovan introducerade vi ett par nya begrepp. Det finns bland annat en if-sats. Om du är bekant med den grundläggande syntaxen i C bör det här se logiskt ut. Om du inte kan C eller något språk med en liknande syntax som den ovan bör du antagligen införskaffa en PHP-bok för nybörjare och läsa åtminstone de första kapitlen. Alternativt kan du läsa Språkreferens-delen av manualen. En förteckning över PHP-böcker finner du på adressen » https://www.php.net/books.php.

Det andra begreppet vi nu introducerat är funktionsanropet till strstr(). strstr() är en inbyggd funktion i PHP som söker i en sträng efter en annan sträng, i det här fallet letar vi efter "MSIE" inuti $_SERVER["HTTP_USER_AGENT"]. Om strängen hittas returnerar funktionen TRUE och om den inte hittas returneras FALSE. Om funktionen returnerar TRUE blir även if-satsen TRUE och därmed körs PHP-koden som omsluts av dess "måstecken", det vill säga { och }. Om inte, körs inte PHP-koden inom nämnda. Skapa gärna egna if-satser som även kan innehålla else, och bekanta dig med funktioner som strtoupper() och strlen(). Dess sidor i manualen innehåller alla exempel på hur funktionerna används.

Vi ska nu gå ännu längre och demonstrera hur du kan växla mellan PHP och HTML mitt i ett PHP-block:

Example#4 Att växla mellan PHP och HTML

<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
?>
<h3>strstr must have returned true</h3>
<center><b>You are using Internet Explorer</b></center>
<?php
} else {
?>
<h3>strstr must have returned false</h3>
<center><b>You are not using Internet Explorer</b></center>
<?php
}
?>

Det här scriptet skulle t.ex. kunna skriva ut följande:

<h3>strstr must have returned true</h3>
<center><b>You are using Internet Explorer</b></center>

Istället för att använda PHP-funktionen echo för att skriva ut något, växlade vi till HTML-läge och skrev vanlig HTML. Observera dock att logiken i scriptet fortfarande finns kvar, bara ett av HTML-blocken visas för användaren beroende på om strstr() returnerade TRUE eller FALSE, med andra ord om strängen MSIE hittades eller inte.