(højreklik og vælg "Gem destination som" for at downloade ZIP-fil med øvelser/eksempler").
Lidt om ”superglobale variabler”
Læs nederst på siden
Problemer med variabler i bogens eksempelscripts
Bogen ”Avanceret PHP” tager udgangspunkt i PHP version 4.0.x. Har du, eller den webserver du benytter, en nyere version af PHP installeret, skal du være opmærksom på nedenstående:
Problemer med variabler i bogens eksempelscripts:
PHP-udviklingsgruppen har fra og med version 4.2.0 af sikkerhedsmæssige grunde ændret en standard-opsætning i php.ini-filen. Tidligere var konfigurationen "register_globals" altid som standard sat til "On", og bogens eksempelscripts er skrevet ud fra denne forudsætning. Den nye opsætning er som standard sat til ”Off”, og det giver problemer med bogens eksempler for alle, der afvikler scriptene på webservere med PHP 4.2.0 og nyere versioner (nyeste version hedder pt. 4.3.2).
Se også:
http:/dk.php.net/register_globals
Det er især scripts, der omhandler ”sessions”, som giver problemer, men du kan benytte nedenstående model, for at tilpasse dine scripts til den nye standard. Script 2-1 på side 23 er nedenfor vist i en form, der virker. Uden denne ændring sker der intet, når man klikker på ”opdater” i browseren. Kodeeksemplet på side 26 skal derfor også rettes til, samt eksemplet med indkøbsvognen i kapitel 5, og andre scripts der evt. indeholder sessions.
Bemærk, at nedenstående kode benytter den superglobale variabel $_SESSION. Du kan læse lidt om de superglobale variabler nedenfor.
session_start();
if(!isset($_SESSION['count'])){
/ ER IKKE NØDVENDIG session_register("count");
$_SESSION['count'] = 1;
}
?>
Du har besøgt denne side gange.
$_SESSION['count']++;
?>
Har du egen webserver, kan du selvfølgelig ændre ”register_globals” fra ”Off” til ”On”, og burde derefter ikke have problemer med bogens eksempelscripts. Du skal huske at genstarte din webserver, når du har foretaget ændringen i php.ini.
Bemærk, at PHP-udviklingsteamet advarer om, at der kan være sikkerhedsmæssige problemer med at sætte ”register_globals” til ”On”, derfor bør du granske emnet lidt nøjere, før du ændrer php.ini-filen og sætter bogens eksempelscripts i drift på nettet. Her kan du læse mere om PHP og sikkerhed:
http:/www.php.net/manual/sv/security.registerglobals.php
Lidt om ”superglobale variabler”:
Fra og med version 4.1.0 indførtes begrebet superglobale variabler, som ikke er omtalt i bogen. Her kommer en kort beskrivelse af de superglobale variabler, som er tilgængelige i PHP version 4.1x og alle nyere versioner:
Superglobale variabler er altid tilgængelige i dine scripts. Følgende superglobale variabler er faktisk arrays med variabler:
- $_GET indeholder alle variabler, som er tilgængelige for et script ved hjælp af metoden GET.
- $_POST indeholder alle variabler, som er tilgængelige for et script ved hjælp af metoden POST.
- $_COOKIE indeholder de variabler, scriptet kan nå via en cookie.
- $_FILES indeholder variabler med oplysninger om uploadede filer.
- $_ENV indeholder variabler med oplysninger om server-miljøet.
- $_REQUEST indeholder variabler med oplysninger om brugerinput.
- $_SESSION indeholder variabler med oplysninger om den aktuelle session.
De superglobale variabler blev introduceret i PHP 4.1.0. Man har længe brugt HTTP_*_VARS (POST/GET/COOKIE), men disse er ”almindelige” arrays, som befinder sig i det globale navneområde. Ved at indføre de nye superglobals har man fået et sæt arrays som er ”mere end globale”, det vil sige, at de findes i det almindelige, globale navneområde samt i navneområdet til alle underliggende funktioner ol.
Stor tak til John M. Jørgensen for hans assistance.