Funkcija require ne radi tako.
Kada uključiš drugu datoteku, efekat je kao da si odradio kopiraj-ubaci (engl. copy-paste) i kod te datoteke ubacio na mesto require funkcije. Nema novog HTTP zahteva kojim bise postavio $_GET niz prema parametru, čak i prenos parametara ne postoji.
Uključena datoteka može da ima pristup svim lokalno vidljivim promenljivama, pa tako u jednoj datoteci možeš definisati $kod = 13223; i potom u uključenoj proveravati da li je $kod definisana i koju vrednost ima. Ovo koristi oprezno, pošto postaje košmar za održavanje kada na ovaj način "prebacuješ" promenljive bez ikakvog reda. U tvom primeru, zaštita od direktnog pozivanja, ovo jeste uobičajno. Uoči da vrednost "koda" uopšte nije važna niti ima potrebe da kod bude tajan. Uključena datoteka može da bude:
Code (php):
if(!is_set
($top_level)) die("Access denied.");
...
A uključivanje činiš:
Code (php):
$top_level = true;
require("header-probni.php");
Ako je register_globals postavljen na isključeno (a tako i treba), niko ne može da pozove header_probni.php direktno tako da $top_level ima vrednost. Jedino ako se ista postavi u drugoj skripti, baš kako i tebi treba.
Kada međutim želiš neki drugi prenost promenljivih, čistije rešenje je da u uključenoj datoteci definišeš funkciju, poput:
Code (php):
function obradi
($kod) {
if($kod != "13223") exit();
...
}
Sada u osnovnoj imaš sledeće:
Code (php):
require("header-probni.php");
obradi(13223);
Prenos promenljive je sada eksplicitan, pa je razumevanje i održavanje koda nešto lakše. Ponavljam, u tvom primeru češće se koristi prvi primer, i tebi bliže rešenje.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja