Forum » Programiranje » PHP in globalne spremenljivke
PHP in globalne spremenljivke
neonX ::
pozdravljeni,
ponovno sem se lotil izdelave spletne strani v php-ju ampak ne zelim uporabiljati globalnih spremenljivk (globals_register = off), zato imam kar nekaj tezav, pri izvedbi. Namreč želim da je je celotna skripta npr. za forum v eni datoteki ampak to mi onemogoča zaradi izključitve globalne spremenljivke. en primer, ki ne deluje brez globalnih spremenljivk:
switch($do)
{
case "":
echo\"test.php?do=login\";
break;
case "login":
echo"test";
break;
}
?>
(tam kjer sem napisal test.php?do=login sem mislil povezavo, sam je ne morm napisati tako da bo vidna celotna koda - tud za povezavo)
ponovno sem se lotil izdelave spletne strani v php-ju ampak ne zelim uporabiljati globalnih spremenljivk (globals_register = off), zato imam kar nekaj tezav, pri izvedbi. Namreč želim da je je celotna skripta npr. za forum v eni datoteki ampak to mi onemogoča zaradi izključitve globalne spremenljivke. en primer, ki ne deluje brez globalnih spremenljivk:
switch($do)
{
case "":
echo\"test.php?do=login\";
break;
case "login":
echo"test";
break;
}
?>
(tam kjer sem napisal test.php?do=login sem mislil povezavo, sam je ne morm napisati tako da bo vidna celotna koda - tud za povezavo)
- spremenil: neonX ()
neonX ::
ja to sem že probal sam ne deluje glede $_GET in $_POST - to deluje samo pri podatkih-glede prenosa. drugace pa v tem primeru in if stavkih ne deluje!! rad bi ime kak primer-ker jaz sem se že predolgo mucil s tem!
OwcA ::
Poskusi s "super" spremenljivko $_GLOBALS (deluje na enak način kot $_GET, la da vrednosti in ključe dodajaš ročno).
$_GLOBALS['moja_spremenljivka'] = 'foobar';
.
.
.
switch ($_GLOBALS['moja_spremenljivka'])
{
...blabla...
Zzzzzzz ::
s_e-b_a:
Kako to: ne deluje? Tisto mora delovati, tudi če so register_globals = off, ne glede na to, kaj pošiljaš skozi: npr. če sam napišeš v naslovno vrstico "abc.php?foo=aaa" mora bit v $_GET z indexom/ključem "foo" vrednost "aaa":
print $_GET['foo'];
ti mora izpisat ven "aaa".
To velja tako za vse forme (odvisno od "verba" (=get/post) se ti v ustrezen array spravljajo vse vrednosti).
Tko, by-the-mimo: Jst tudi vse kar delam, delam z register_globals = off in do vsega prihajam preko $_GET, $_POST, $_SESSION, $_COOKIE, $_SERVER -> to so vse arrayi, ki jih uporabljaš takole:
$_GET['ključ'] = 'vrednost';
Kako to: ne deluje? Tisto mora delovati, tudi če so register_globals = off, ne glede na to, kaj pošiljaš skozi: npr. če sam napišeš v naslovno vrstico "abc.php?foo=aaa" mora bit v $_GET z indexom/ključem "foo" vrednost "aaa":
print $_GET['foo'];
ti mora izpisat ven "aaa".
To velja tako za vse forme (odvisno od "verba" (=get/post) se ti v ustrezen array spravljajo vse vrednosti).
Tko, by-the-mimo: Jst tudi vse kar delam, delam z register_globals = off in do vsega prihajam preko $_GET, $_POST, $_SESSION, $_COOKIE, $_SERVER -> to so vse arrayi, ki jih uporabljaš takole:
$_GET['ključ'] = 'vrednost';
Zzzzzzz ::
No, še nekej. Koda, malo popravljena:
switch($_GET['do']) {
case "":
echo "test.php?do=login";
break;
case "login":
echo "test";
break;
}
In pri meni to dela. Z register_globals=off.
Morda je pa pri tebi sledeč problem. Ko imaš register_globals=on, se vse vrednosti iz $_GET, $_POST ... prepišejo v $$_GET['....'] (= $....) in $$_POST['....'] (= $....). Tle pride pa do tega problema, da če imaš v GET in POST (ali katerem koli drugem izmed teh arrayev) enake ključe, se ti povozijo (po kakem vrstnem redu ne vem). Je pa v tem tudi ena prednost - ni ti treba pazit, kako pošiljaš podatke skripti - preko GET ali preko POST, pri register_globals = on je to vseeno.
Ampak pri register_globals = off, je tako, da $_GET['....'] ni enak $_POST['....'], tako da je potrebno bit malce pazljiv pri pošiljanju podatkov. Npr. Zgornji skript ne bi delal, če bi mu poslal podatke preko forma, ki ima za parameter method="post", ker bi se vrednost pač vpisale v $_POST array. Isto velja za $_GET in ostale sorodne arraye.
switch($_GET['do']) {
case "":
echo "test.php?do=login";
break;
case "login":
echo "test";
break;
}
In pri meni to dela. Z register_globals=off.
Morda je pa pri tebi sledeč problem. Ko imaš register_globals=on, se vse vrednosti iz $_GET, $_POST ... prepišejo v $$_GET['....'] (= $....) in $$_POST['....'] (= $....). Tle pride pa do tega problema, da če imaš v GET in POST (ali katerem koli drugem izmed teh arrayev) enake ključe, se ti povozijo (po kakem vrstnem redu ne vem). Je pa v tem tudi ena prednost - ni ti treba pazit, kako pošiljaš podatke skripti - preko GET ali preko POST, pri register_globals = on je to vseeno.
Ampak pri register_globals = off, je tako, da $_GET['....'] ni enak $_POST['....'], tako da je potrebno bit malce pazljiv pri pošiljanju podatkov. Npr. Zgornji skript ne bi delal, če bi mu poslal podatke preko forma, ki ima za parameter method="post", ker bi se vrednost pač vpisale v $_POST array. Isto velja za $_GET in ostale sorodne arraye.
Zgodovina sprememb…
- spremenil: Zzzzzzz ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Ne prenese spremenljivke iz enega php-ja v drugegaOddelek: Izdelava spletišč | 1250 (1153) | Looooooka |
» | Zelo enostavna PHP skripta, ki ne dela - help :(Oddelek: Izdelava spletišč | 1569 (1334) | snow |
» | PHP var problem! Please help!Oddelek: Izdelava spletišč | 1211 (1091) | njok |
» | php in varnostOddelek: Izdelava spletišč | 1271 (1125) | Ziga Dolhar |