menic
8.07.2003, 17:37:02
Sprawa tyczy się $_POST. Problem w tym, że jak w skrypcie napisze
if( isset($_POST) ) { echo 'jest'; } albo if( empty($_POST) ) { echo 'jest'; }
To zqwsze pokazuje sie jest, nawet jeżeli o żadnym forumularzu nie mam mowy :|
Dąże do tego aby rozróżnić czy jakaś tablica $_POST[] została utworzona w skrypcie.
spenalzo
8.07.2003, 17:53:36
Spróbuj może
[php:1:ce057a34fd]<?php
if(is_array($_POST))
{
echo "cośtam";
}
?>[/php:1:ce057a34fd]
menic
8.07.2003, 17:58:06
Tak też próbowałem :cry:
scanner
8.07.2003, 18:00:05
AFAIR superglobale tworzone są zawsze - inna sprawa, czy sa puste, czy nie. Może by tak sprawdzić [manual:fcc15c624a]sizeof()[/manual:fcc15c624a] dla tablicy?
menic
8.07.2003, 18:02:39
Cytat
AFAIR superglobale tworzone są zawsze - inna sprawa, czy sa puste, czy nie. Może by tak sprawdzić [manual:4a128fe843]sizeof()[/manual:4a128fe843] dla tablicy?
Co znaczy AFAIR :?:
Co do sizeof() to nie wpadłem
scanner
8.07.2003, 18:03:31
Cytat
Co znaczy AFAIR
As Far As I Remember
e-Gandalf
8.07.2003, 18:22:12
Cytat
Sprawa tyczy się $_POST. Problem w tym, że jak w skrypcie napisze
if( isset($_POST) ) { echo 'jest'; } albo if( empty($_POST) ) { echo 'jest'; }
To zqwsze pokazuje sie jest, nawet jeżeli o żadnym forumularzu nie mam mowy :|
Bo nie sprawdzasz czy zostal wyslany formularz tylko czy zostala wyslana jakakolwiek zmienna POSTem. Jesli zostala, to empty($_POST) zawsze zwroci false.
Jezeli jedynym POSTem jaki wysylasz jest formularz to spokojnie mozesz sprawdzac empty($_POST) . Jesli Ci nie zadzialal, to musiales popelnic jakis blad...
Natomiast wygodniej jest w formularzu tworzyc jakas zmienna typu hidden i potem istnienie tego klucza sprawdzac w POST:
[xml:1:b402cf0b57]
<form action="" method="POST">
<input type="hidden" name="exec" value="true" />
</form>
[/xml:1:b402cf0b57]
a w kodzie:
[php:1:b402cf0b57]<?php
if (isset($_POST['exec'])) {print 'wyslano formularz';}
?>[/php:1:b402cf0b57][/xml]
sebus
8.07.2003, 18:34:01
Nie jestem pewien czy sie nie myle ale moze sproboj sprawdzic cos takiego...
[php:1:aaca4f325a]<?php
if (function_exists($_POST)) { echo "jest"; } else
{
echo "nie ma";
}
?>[/php:1:aaca4f325a]
Nie wiem na 100% czy to zadziala ale sprobowac mozna...
scanner
8.07.2003, 18:57:26
Cytat
Nie jestem pewien czy sie nie myle
A co ma zmienna do funkcji?
e-Gandalf
8.07.2003, 19:27:15
Cytat
Nie jestem pewien czy sie nie myle ale moze sproboj sprawdzic cos takiego...
[php:1:52c1d20ff9]<?php
if (function_exists($_POST))
?>[/php:1:52c1d20ff9]
Nie wiem na 100% czy to zadziala ale sprobowac mozna...
Intrygujace...
1) [manual:52c1d20ff9]http://pl.php.net/manual/en/reserved.variables.php#reserved.variables.post[/manual:52c1d20ff9]
Cytat
An associative array of variables passed to the current script via the HTTP POST method.
Cytat
Tablica asocjacyjna zmiennych otzymanych przez skrypt z metody POST protokolu HTTP.
2)
[manual:52c1d20ff9]http://pl.php.net/manual/en/function.function-exists.php[/manual:52c1d20ff9]
Cytat
Checks the list of defined functions, both built-in (internal) and user-defined, for function_name.
Cytat
Przeszukuje liste zdefiniowanych funkcji, zarowno wbudowanych jak i zadeklarowanych przez uzytkownika, w poszukiwaniu argumentu.
Jaki widzisz zwiazek?!?
menic
8.07.2003, 20:11:54
Nie moge dorzucić ukrytej zmiennej bo ma to sprawdzać, czy nikt nie podpiął sie pod skrypt. Ale użyłem count($_POST) i działa. Chyba że coś będzie bardzie cywilozowanego bo to aktualne to trochę takie lamerskie :oops: :oops:
e-Gandalf
8.07.2003, 20:23:43
Ale
[php:1:1b76c41811]<?php
count($_POST)
?>[/php:1:1b76c41811]
to to samo co
[php:1:1b76c41811]<?php
empty($_POST)
?>[/php:1:1b76c41811]
z ta roznica, ze przy empty tabica $_POST moglaby nie istniec (ale istnieje zawsze, wiec roznicy nie ma).
cunt() zwroci Ci 0 kiedy tablica jest pusta, empty() zwroci Ci 0 kiedy tablica nie pusta wiec wystarczy zanegowac i masz synonimy.
Natomiast nie rozumiem co zyskujesz nie dodajac zmiennej hidden. Jak to sprawdzasz czy nikt sie nie "podpial"? Jak mialby sie "podpiac"? hidden daje Ci po prostu semafor okreslajacy czy formularz zostal wyslany czy nie...
menic
8.07.2003, 20:27:51
to nie jest to samo. Bo to z count() działa a z empty nie
A co dotego podpinania. To ktoś zawsze może stworzyć formularz podobny jak na stronie i tą ukryta zmienna usunąć i po zabezpieczeniu
scanner
8.07.2003, 20:32:28
A nie uważasz, że jeśli skopiuje Twoj formularz na moja strone i klikne submit, to dla skryptu to nie będzie żadna róznica? POST is POST.
menic
8.07.2003, 20:36:06
e-Gandalf
8.07.2003, 20:46:10
To trzeba bylo od poczatku pisac jaki masz cel. Srodki ktorych probowales dobrac byly niezbyt adekwatne.
Jak juz napisal scanner, strach przed hiddenem to tak samo jakbys bal sie wstawic jakiekolwiek pole (nie wiem, name, login, email..) bo przeciez ktos moze wyciac...
Ja zawsze stosuje ten semafor - jest $_POST['exec'] ? no to jest formularz, nie ma? no to nie ma forumlarza i nic mnie nie obchodzi. Jesli zamiast tego chcesz sprawdzac czy cokolwiek przeszlo postem to mozesz zastosowac:
if (count($_POST)) {}
if (!empty($_POST)) {}
i uwierz, ze w tym zastosowaniu to JEST to samo, a jesli Ci nie dziala, to tylko znaczy, ze cos zle wpisujesz...
menic
8.07.2003, 20:55:48
żeczywiście z empty() działa
(A czemu wczesniej nie chciało

)
Ale co do tyego $_POST['exec'] to trochę nie rozumiem :|
Bo to co wymysliłem to tylko wsparcie. Bo skrypt sprawdza najpierw sesjie i potencjalna osoba która będzie chciała przechytrzyć będzie na to miała 30 minut, bo po takim czasie sesja wygasa i jest tworzona nowa. Jezeli nawet po tym czasie będzie chciał wykorzystac formularz z ID sesji to nic nie da. Na dodatek sprawdza jaki jest status sesji itp. ale to już na inny temat
A chce zrobić to bez hidden, bo chce aby to wszystko był jak najbardzie zaautomatyzowane i i jednolite. Poprostu ma sprawdzac wszystkie formularze i tyle. A jak ktos zapomni dopisac hidden :?:
e-Gandalf
8.07.2003, 20:57:01
No ok, jesli potrzebujesz tylko sprawdzic czy jakies dane ida postem to odpowiednim rozwiazniem jest empty albo count.
Cytat
Wiesz, to wcale nie jest takie pewne :wink:. Sam tak myślałem jeszcze niedawno, ale natrafiłem na pewną, nazwijmy to, grę w necie (
Ngsec). Drugi etap (z dziesięciu) to właśnie omijanie sprawdzania referera :wink: Tak więc (podobno :wink: ) można jakos to obejść.
e-Gandalf
8.07.2003, 22:46:30
I to banalnie... Mozilla ma odpowiedni dodatek, dzieki ktoremu mozesz wysylac dowolnego referera.
menic
9.07.2003, 00:30:11
sebus
9.07.2003, 12:59:42
sorki ... faktycznie pomylilem sie...
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.