» »

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)
  • spremenil: neonX ()

red ::

Poizkusi z $_GET["neka_spremenljivka"] ali
pa $_POST["neka_spremenljivka"]

LP

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';

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.

Zgodovina sprememb…

  • spremenil: Zzzzzzz ()

neonX ::

hvala!! deluje!!! :D


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Ne prenese spremenljivke iz enega php-ja v drugega

Oddelek: Izdelava spletišč
71157 (1060) Looooooka
»

Zelo enostavna PHP skripta, ki ne dela - help :(

Oddelek: Izdelava spletišč
131478 (1243) snow
»

PHP var problem! Please help!

Oddelek: Izdelava spletišč
171126 (1006) njok
»

php in varnost

Oddelek: Izdelava spletišč
191206 (1060) Ziga Dolhar

Več podobnih tem