Portál AbcLinuxu, 10. května 2025 02:45

Dotaz: Apache nepredava promenne

19.6.2006 02:31 trpicek
Apache nepredava promenne
Přečteno: 245×
Odpovědět | Admin
Ahoj lidicky, mam proble ve fedora 4 s Apache HTML formular mi nepredava hodnoty promenne do scriptu, nejlepe to vysvetlim na prikladu:
soubor: form.html
[HTML]
[HEAD]
[/HEAD]
[BODY]
[form name="mujform" method="GET" action="show.php"]
[input type="text" name="testik"]
[input type="submit" value="odeslat"]
[/form]
[/BODY]
[/HTML]

soubor: show.php
[?php
echo "[HTML][HEAD][TITLE]pokus[/TITLE][/HEAD];
echo "[BODY];
echo "odeslano: "$testik;
echo "[/BODY][/HTML]";
?]
poznamka: ve vypisu kodu jsem pouzil misto <> hranate zavorky [] jinak to neslo odeslat.

script show.php by mel vypsat obsah promenne, ale nevypise, zkusil jsem i "POST" a nic

v error_log je tato chyba: [client 192.168.1.93] PHP Notice: Undefined variable: testik in /var/www/html/show.php on line 4, referer: http://petr.home/form.php

totez jsem zkusil na jinem serveru a funguje to.

A jeste jeden jev, kterz mi nevadi, ale je to divne (tedy alespon pro mne). Php funguje, ale jen kdyz to je samostany soubor .php, pokud vlozim php do html, tak nefunguje. Pokud nekdo mate tuseni, kde muze byt zrada, budu vdecny za kazdou radu. dekuji Tomas
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.6.2006 03:27 tully | skóre: 9 | blog: tully
Rozbalit Rozbalit vše Re: Apache nepredava promenne
Odpovědět | | Sbalit | Link | Blokovat | Admin
co tak tu premennu volat korektne ???
echo "odeslano: "$HTTP_GET_VARS['testik'];
priame volanie premennych v php funguje iba ak je direktiva register_globals nastavena na ON, resp pri pouziti:
if (!empty($HTTP_POST_VARS))
        extract($HTTP_POST_VARS, EXTR_OVERWRITE);
resp,:
if (!empty($HTTP_GET_VARS))
        extract($HTTP_GET_VARS, EXTR_OVERWRITE);
hore uvedene neodporucam pouzivat, ak to chces mat aspon trochu bezpecne (hockto ti moze z vonku "podstrcit" akukolvek premennu)...

http://sk2.php.net/register_globals
19.6.2006 06:49 trpicek
Rozbalit Rozbalit vše Re: Apache nepredava promenne
dekuji za pomoc! vyrezil jsem to upravou registru a funguje to, ale s tim polem $HTTP_GET_VARS['testik'] mi to nefunguje, ale vzhledem k tomu, ze mam jiz nejake scripty napsane a v nich pouyivam prime volani promennych, tak to necham tak. Jeste jednou dik Tomas
19.6.2006 08:06 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Apache nepredava promenne
Prastará moudrost praví, že z několika nabízených řešení si tazatel neomylně vybere to nejhorší. Vy jste právě ukázal, že si nejhorší řešení dokážete vybrat i v případě, že vám nabídnuto není… :-)
19.6.2006 17:25 trpicek
Rozbalit Rozbalit vše Re: Apache nepredava promenne
No ja cekal kritiku :-) ale bezi mi to na intranetu, tak tam tak velky nebezpeci nehtozi, slibuju, ze pristi instalaci zabezpecim lip.
19.6.2006 17:35 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: Apache nepredava promenne
v /etc/php.ini nastavit register_globals = On
a potom service httpd restart
a pro dlouhá pole potom register_long_arrays = On jinak sepoužívalí pouze $_GET , $_POST ...
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
19.6.2006 19:39 tully | skóre: 9 | blog: tully
Rozbalit Rozbalit vše Re: Apache nepredava promenne
neide ani tak o bezpecnie instalacie, ale o to ze treba pisat bezpecne aplikacie....
19.6.2006 17:58 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Apache nepredava promenne
Pokud mne paměť neklame, v novějších verzích PHP jsou pole $HTTP_GET_VARS a $HTTP_POST_VARS zrušena a používají se pouze $_GET a $_POST (nebo $_REQUEST).

P.S. Neodpustím si jazykovou poznámku: to slovo register neznamená, že se jedná o nějaké "registry"; je to prostě sloveso registrovat

19.6.2006 19:38 tully | skóre: 9 | blog: tully
Rozbalit Rozbalit vše Re: Apache nepredava promenne
nie su zrusene - vraj casom budu, ale nie tak skoro - vela veci by prestalo fungovat

$_POST

Variables provided to the script via HTTP POST. Analogous to the old $HTTP_POST_VARS array (which is still available, but deprecated).
19.6.2006 19:52 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Apache nepredava promenne

Aha, problém byl v tom, že na rozdíl od většiny ostatních svůj konfigurační soubor vytvářím úpravou php.ini-recommended, kde je přednastaveno (kvůli výkonu) 'register_long_arrays = Off'. Protože jsem o existenci této direktivy nevěděl, předpokládal jsem, že ty proměnné už byly zrušeny.

To, že pole nevidí tazatel, může tedy být buď tímto nastavením, nebo tím, že příslušná pole nejsou "superglobální", takže nejsou automaticky vidět uvnitř funkcí.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.