![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 3 Dołączył: 28.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Na wstepie kawalki kodu: Tworzenie formularza Kod 'img' => array( 'file', array( 'label' => 'Obrazek', 'Destination' => 'obrazki/' ) ), 'plik' => array( 'file', array( 'label' => 'Gra', 'Destination' => 'gry/' ) ), 'sciezka' => array( 'text', array( 'label' => 'lub podaj lokalizacje', 'required' => 'false' ) ), Dla objasnienia - kazdy rekord ma plik obrazka (img) oraz dodatkowy plik(dodawany z dysku, wtedy wykorzystane jest pole 'plik', lub z lokalizacji sieciowej - wtedy 'sciezka') Dodawanie: Kod $adapter=$form->img->getTransferAdapter(); $file = substr($adapter->getFileName('img'),strlen('obrazki/')); if($adapter->receive()){ $dane['img']=$file; } $adapter1=$form->plik->getTransferAdapter(); $file=substr($adapter1->getFileName('plik'),strlen('gry/')); if($adapter1->receive()){ $this->view->chu="niechu"; $sciezka=$file; } else { //jesli nie udalo sie przeslac $sciezka=$this->_request->getPost('sciezka'); $this->view->chu="chu"; } $dane['path']=$sciezka; Zmienna 'chu' - tylko do testow, dzieki niej wyswietlam sobie na stronie, ktora czesc zostala wykonana. Jaki jest problem? Po uzupelnieniu formularza i zatwierdzeniu otrzymuje: Cytat The file 'img' was illegal uploaded, possible attack Atak sam na siebie?(IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Czy czasem nie jest tak, ze wymagana jest zmiana pliku po wyslaniu (tak, juz wiem, ze robi sie to za pomoca klasy Zend_Filter_File_Rename)? Chyba, ze powod jest inny - a mi nic do glowy nie przyszlo... Dodam, ze na stronie wyswietla sie po wykonaniu, procz powyzszego ostrzezenia rowniez 'niechu' - co oznacza, ze $adapter1->receive() zwrocilo 0. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 70 Dołączył: 13.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cytat $adapter1->receive() zwrocilo 0 Jak dla mnie to po prostu pole img jest puste i nic się nie przesyła. A wygenerowany kod formularza jest prawidłowy? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 3 Dołączył: 28.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Tak, formularz jest ok. Popatrzylem po folderach - img sie przesyla, jest kopiowane do folderu obrazki, ale to drugie kopiowanie sie juz nie wykonuje....
Dokladnie: img sie przesyla ($adapter->receive() zwraca 1, do tablicy wpisywana jest nazwa pliku), wypluwane jest ostrzezenie i 'plik' juz nie jest przesylany ($adapter1->receive() zwraca 0, a sciezka wogole jest pusta) Ten post edytował gazelek 20.01.2009, 13:20:52 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Pobierajac adapter:
pobierasz ustawienia dla jednego inputa ('img' w tym wypadku). Wywolujac metode
probojesz walidowac, filtrowac i przeniesc wszystkie pliki, ktore zostaly przeslane, twoj pierwszy plik zostanie prawidlowo obsluzony, bo dostarczyles jego ustawienia, natomiast, drugi bedzie obsluzony z ustawieniami domyslnymi, wiec np nie zostanie przeniesiony tam gdzie chcesz, tylko zostanie w folderze tymczasowym. I co najwazniejsze, po obsludze kazdego z tych plikow zostaje ustawiona flaga, ze zostal obsluzony. Dalej, probojesz powtorzyc to samo wraz z ustawieniami dla drugiego pliku, z tym ze problem jest taki, ze probojesz to zrobic dla oflagowanych juz plikow. dlatego jest wyrzucany wyjatek. Rozwiazanie jest bardzo proste:
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 3 Dołączył: 28.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
... i na koniec dopiero sprawdzenie metoda receive(), czy transfer zostal wykonany. Piekne dzieki (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Jeszcze pytanie (z racji, ze nie mam czasu teraz tego sprawdzic) - czy to jest rozwiazanie problemu dla wyrzucanego ostrzezenia? Tresc jak w pierwszym poscie, possible attack. Ten post edytował gazelek 20.01.2009, 15:39:30 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
raczej metoda isRecived(); i tak, nie bedziesz mial juz tego wyjatku, wszystkoa ladnie pojdzie
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 19:58 |