| Autor | Zpráva | ||
|---|---|---|---|
| MilanJ Profil |
#1 · Zasláno: 6. 12. 2006, 13:28:33
Mám nainstalovanou verzi PHP 4.3.10
Když chci zpracovat formullář metodou POST, měl bych mít proměnné z formuláře uložené v $_POST['x'] a stejně tak v $x, přesto mi PHP hlásí, že proměnná $x neexistuje. Hádám, že je to nastavením php.ini, ale v jaké části? Co musím změnit, abych ji přístupnou měl? |
||
| jrm Profil |
#2 · Zasláno: 6. 12. 2006, 13:41:21
REGISTER_GLOBALS on/off
|
||
| MilanJ Profil |
#3 · Zasláno: 7. 12. 2006, 08:36:03
Mám v php.ini nastaveno register_globals = Off a proměnná odesílaná pomocí POST není v $x, ale pouze v $_POST['x']
Když nastavím register_globals = On, bude to fungovat jak pro $_POST['x'], tak pro $x? Není nebezpečné mít na serveru nastaveno register_globals = On ? Můj poskytovatel ho tak nastaven má. |
||
| MilanJ Profil |
#4 · Zasláno: 7. 12. 2006, 08:39:21
Někde jsem četl, že register_globals = Off už PHP 5 vysloveně vyžaduje, je na tom něco pravdy? ...nerad bych, aby mi scripty s přechodem na PHP 5 přestaly fungovat.
|
||
| jrm Profil |
#5 · Zasláno: 7. 12. 2006, 08:50:28
|
||
| MilanJ Profil |
#6 · Zasláno: 7. 12. 2006, 09:21:03
Článek jsem přečetl, ale stále mi není jasné, jestli je bezpečnější mít na serveru nastaveno register_globals = On nebo register_globals = Off.
Můj poskytovatel Active 24 má nastaveno register_globals = On . Jak je to u jiných poskytovatelů? Když budu používat striktně $_POST['x'], může mi být jedno, je-li register_globals ON nebo OFF, je to tak? |
||
| krteczek Profil |
#7 · Zasláno: 7. 12. 2006, 10:13:15
MilanJ: I tak to není jedno, pokud je na serveru register_globals=on, tak ikdyž budeš používat $_POST, $_GET... tak hrozí, že ti útočník snadno podstrčí něco co nechceš.
Dobrý zvyk je všechny normální proměnné ($a, $n['neco'],...) nejprve na začátku scriptu vynulovat ($a = 0; $b = ''; ... ), aby nešlo tyto proměnné nakrmit z get/post. Příklad: vytvoř soubor a tohle do něj zapiš: <?php $c = $a + $b; echo '<br>$c = ' . $c ; ?> register_globals=on 1. zavolej ten skript bez parametrů v adrese "index.php" 2. zavolej ho s "index.php?a=9" 3. zavolej ho s "index.php?a=9&b=3 register_globals=off 1. zavolej ten skript bez parametrů v adrese "index.php" 2. zavolej ho s "index.php?a=9" 3. zavolej ho s "index.php?a=9&b=3 Skript si uprav následovně: <?php $c = $_GET['a'] + $b; echo '<br>$c = ' . $c ; ?> register_globals=on 1. zavolej ten skript bez parametrů v adrese "index.php" 2. zavolej ho s "index.php?a=9" 3. zavolej ho s "index.php?a=9&b=3 register_globals=off 1. zavolej ten skript bez parametrů v adrese "index.php" 2. zavolej ho s "index.php?a=9" 3. zavolej ho s "index.php?a=9&b=3 uprav script znovu: <?php $b = 0; $c = 0; $a = 5; $c = $_GET['a'] + $b; echo '<br>$c = ' . $c ; echo '<br>$a= ' . $a ; echo '<br>$_GET["a"] = ' . $_GET['a'] ; echo '<br>$b= ' . $b ; echo '<br>$_GET["b"] = ' . $_GET['b'] ; ?> register_globals=on 1. zavolej ten skript bez parametrů v adrese "index.php" 2. zavolej ho s "index.php?a=9" 3. zavolej ho s "index.php?a=9&b=3 register_globals=off 1. zavolej ten skript bez parametrů v adrese "index.php" 2. zavolej ho s "index.php?a=9" 3. zavolej ho s "index.php?a=9&b=3 Myslím že výsledky jsou dost pochopitelné, po každé změně nastavení v php.ini musíš restartovat apache krteczek |
||
| MilanJ Profil |
#8 · Zasláno: 8. 12. 2006, 09:45:01
krteczek
Co bys doporučoval Ty? |
||
| krteczek Profil |
#9 · Zasláno: 8. 12. 2006, 20:09:20
vypnout register_globals, iniciovat všechny proměnné, používat $_POST, $_GET, $_SESSION, $_COOKIE, na počítači na kterém vyvijíš nastavit v php.ini error_reporting = E_ALL , nebo ve skriptech použít error_reporting(E_ALL);, bude to vypisovat veškeré hlášky php všetně používání neiniciovaných proměnných
krteczek |
||
|
Časová prodleva: 20 let
|
|||
Toto téma je uzamčeno. Odpověď nelze zaslat.
0