Mam problem z pobieraniem zmiennych z formularza html przez skrypt php. Zainstalowałam FOXSERV.
Prosty przykład,który działa u innych, a u mnie nie
plik html:
<html>
<body>
<form ACTION="proba.php" METHOD="post" >
<input TYPE="text" NAME="iza">
<input TYPE="submit" VALUE="OK">
</FORM>
</body>
</html>
plik proba.php:
<?php
echo "$iza"; //tutaj zmieniam " " na ' ' ale nic nie daje
?>
Skrypt php zwraca wartość null zmiennej name="iza" zamiast wpisywanej wartości w formularzu html.
Proszę o pomoc!
Sir Blade
19.06.2002, 16:49:43
masz wlaczonego apache'a ?
dzialasz na
http://localhost ?
skrypt jest pod foxserv/www/?
Seth
19.06.2002, 16:51:33
Nie wiem czy to prawda ale podobo w nowej wersji php zmienne super globalne sa juz inaczej traktowane tylko przez $HTTP_POST_VARS i $HTTP_GET_VARS
Ja do odbierania zmiennych zewnetrznych proponuje teki kod:
Kod
$vars_array = array_merge( $HTTP_POST_VARS, $HTTP_GET_VARS );
echo $vars_array['nazwa_zmiennej'];
Sir Blade
19.06.2002, 16:54:33
kod IZY mi dziala a pare dni temu takze zainstalowalem foxserv'a ver 2. zatem nie tu lezy problem...
Mam włączonego Apacha i działam na localhost. Pliki html i php trzymam w innym katalogu, określiłam go w php.ini i httpd.conf.
Sir Blade
19.06.2002, 16:57:23
default'owo taka powinna byc sciazka do skryptu
http://localhost/iza/iza.php oczywiscie jezeli wsadzilas skrypt iza.php do podkatalogu iza
Sir Blade
19.06.2002, 17:00:35
cos mi sie zdaje, ze cos 'poplatalas' w php.ini i httpd.conf.
Sorry, że tak długo czekaliście. Wszystkie pliki html i php trzymam w tym samym katalogu o nazwie www na C.
Zmienną w pliku php.ini ustawiłam tak:
doc_root=c:www
W httpd.conf
DocumentRoot C:www
Mam Windows'95.
Seth
19.06.2002, 17:09:59
Patrzylas moj kod? Tak powinno dzialac
hyper
19.06.2002, 17:10:26
Spróbuj do proba.php dodać linię:
Kod
var_dump($HTTP_POST_VARS);
Teraz jescze raz wywołaj skrypt i powiedź czy widzisz swoją zmienną
(ewentualnie wklej rezultat).
Czekajcie, sprawdzam wszystko. Jesteście kochani, Dzięki!
Kod Setha zadziałał!!!!!!!
Sprawdzam, resztę, bo będe potrzebowała jeszcze zrobić z tego insert do tablicy.
Seth
19.06.2002, 17:16:54
Nie lubie pisac az tak lopatologicznie ale tak powinny wygladac te pliki:
Plik HTML (test.html0
Kod
<html>
<body>
<form ACTION="proba.php" METHOD="post" >
<input TYPE="text" NAME="iza">
<input TYPE="submit" VALUE="OK">
</form>
</body>
</html>
Plik php (proba.php - w tym samym katalogu co test.html)
Kod
<?php
$vars_array = array_merge( $HTTP_POST_VARS, $HTTP_GET_VARS );
echo $vars_array['iza'];
?>
To jest wynik:
array(1) { ["IZA"]=> string(7) "dfdfdfd" }
Co robić dalej?
Seth
19.06.2002, 17:19:22
a co dalej bys z tym zrobic chiala ?
hyper
19.06.2002, 17:22:51
Skoro $iza nie działa, a $HTTP_POST_VARS['iza'] działa, to oznacza że
masz nowszą wersje php oraz ustawione w php.ini Register_Globals = Off.
Zostało to wprowadzone ze względu na bezpieczeństwo. Jeśli chcesz się
odwoływać do zmiennych przez $nazwa, a nie przez
$HTTP_(POST | GET)_VARS['nazwa'] to zmień w php.ini linie z
Register_Globals na wartość On.
Więcej o zmiennych z formularzy:
http://pl.php.net/manual/pl/language.varia...es.external.php
hyper
19.06.2002, 17:25:07
Seth: to było do mnie, rezultat var_dump() żeby sprawdzić czy się w
ogóle ustawiają zmienne.
Seth
19.06.2002, 17:27:11
wiem, za pozno sie skapowalem
hyper
19.06.2002, 17:45:59
Cała przyjemność jest po naszej stronie. Miło nareszcie spotkać na forum
przedstawicielkę płci pięknej 8). Powodzenia w dalszym programowaniu
w php!
Jesteście prawdziwymi profesjonalistami. Męczyłam z tym problemem prawie 2 dni :oops: , pytałam wiele osób, a Wy rozwiązaliście go w parę minut.
castor
19.06.2002, 19:06:05
Cytat
Kod
$vars_array = array_merge( $HTTP_POST_VARS, $HTTP_GET_VARS );
echo $vars_array['nazwa_zmiennej'];
..po co laczysz te dwie tablice jesli formularz wyslany jest postem?

przeciez po to wprowadzili te zabezpieczenia ze jak cos postem odbierasz to zeby nikt ci czegosc URLem nie podsunal :wink:
Seth
19.06.2002, 19:52:57
To tak na przyszlosc, zeby miec wszystkie zmienne zewnetrzne w jednej tablicy. Ale rzeczywiscie z tym GETem moga byc klopoty.
Troche bezpieczniej bedzie w takiej formie:
Kod
$vars_array = array_merge( $HTTP_GET_VARS, $HTTP_POST_VARS );
echo $vars_array['nazwa_zmiennej'];
Jezeli ktos poda w urlu zmienna, ktora juz jest przekazana POSTem to i tak zostanie ona zamieniona, nadpisana na ta z posta.
Jak by na to nie patrzec chodzilo mi o zastosowanie tych zmiennych:
$HTTP_GET_VARS
$HTTP_POST_VARS
Sir Blade
20.06.2002, 02:21:41
czyzby SETH zmienil tresc topicu?

Pamietam cos o gg!! :wink:
wiecej kobiet na forum!!!
hyper
20.06.2002, 08:28:00
Seth
20.06.2002, 09:06:24
Cytat
czyzby SETH zmienil tresc topicu?

Pamietam cos o gg!! :wink:
wiecej kobiet na forum!!!

GeoS
20.06.2002, 12:33:54
W nowszym php, chyba od 4.2.0, nie sa rejestrowane zmienne globalne i to jest przyczyna tego problemu
Dostep do zmiennych mamy teraz przez tablice $_post i $_get
PS Zawsze sobie mozna spowrotem wlaczyc globalne
ripman
22.06.2002, 13:28:21
Kumpel miał podobny problem ... o ile dobrze pamiętam to problem leżał w php.ini albo cos takiego - i było to cos z akceptowaniem POST.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.