• 6 odgovora
  • 2.586 pregleda
PHP REQUIRE pomoc potrebna 13.11.2011. u 19:46 · pre 181 meseci #1
imam potrebu da preko require funkcije pozovem drugi php fajl, ali sa nekim parametrima:

REQUIRE('header-probni.php?kod=13223');

fajl koji pozivam ima pocetnih par redova:
<?php
$kod = $_GET['kod'];
if ($kod !== "13223") {exit();} // Default
?>

ali to ne funkcionise! Da li neko zna kako to da nateram da radi, ili nekim drugim nacinom. Cilj je da se drugi PHP (header-probni.php) ne moze otvarati ako se ne pozove sa kod=13223, tacnije, ako se pokusa otvoriti direktno sa neta (bez znanja koda) ispis njegov je potpuno prazan.

Otvoren sam za sve predloge i sugestije
Hvala unapred
Potpis
Dusan Petrovic, student masinstva, programer u pokusaju
Re: PHP REQUIRE pomoc potrebna 13.11.2011. u 20:08 · pre 181 meseci #2
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.
Potpis
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
Re: PHP REQUIRE pomoc potrebna 14.11.2011. u 08:13 · pre 181 meseci #3
Hvala na brzom odgovoru, uradio sam preko funkcije, nekako mi je logicnije i jednostavnije, i radi
Pozdrav
Potpis
Dusan Petrovic, student masinstva, programer u pokusaju
Re: PHP REQUIRE pomoc potrebna 20.11.2011. u 19:01 · pre 181 meseci #4
Obicno se u nekom pocetnom inicijalizacinom fajlu postavi sa DEFINE neka konstanta i posle na svakoj stranici koju ukljucujes u projekat samo proveris da li je ta konstanta prisutna.
Po meni je to bolje resenje nego preko funkcije.
Potpis
----------------------------------------------------------
www.oxo.rs
Re: PHP REQUIRE pomoc potrebna 21.11.2011. u 13:27 · pre 181 meseci #5
$_GET['id'] = $user;
include('userbuy.php');

ja sam ovako odradio. lepo radi
Re: PHP REQUIRE pomoc potrebna 23.11.2011. u 00:59 · pre 181 meseci #7
<?php
REQUIRE('header-probni.php?kod=13223');
?>

Mozes da resis ovako:

<?php
$_GET['kod'] = 13223;
REQUIRE('header-probni.php');
?>

Trebao bi drugacije da resavas ali ovo moze da ima smisla ako header-probni.php se nekada poziva posebno preko url-a a nekada kao require.
Mada i tada bi trebao drugacijom logikom
Potpis
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme