![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 23.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Czy poniższy skrypt formularza wysyłającego plik na serwer jest dobry? Pomińmy system uwierzytelnienia który tutaj jest stworzony poprzez dołączenie pewnych części kodu instrukcją require('');
Kod <?php session_start(); ?> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" /> <style type="text/css"> <!-- body { font-family: Tahoma; font-size: 12px; color: #FFFFFF; padding-left: 10px; } input.przycisk { font-family: Tahoma; font-size: 11px; } --> </style> </head> <body background="gfx/tekst_tlo.gif"> <?php require('cos.php'); require('uwierzytelnienie.php'); if($_POST['formularz'] != 'no') { echo '<form enctype="multipart/form-data" action="dodaj_zdjecia.php" method="POST">' . '<input type="hidden" name="MAX_FILE_SIZE" value="5242880">' . '<input type="hidden" name="formularz" value="no">' . '<input type="hidden" name="wyslij" value="yes">' . 'Wybierz zdjęcie: <input type="file" name="zdjecie" class="przycisk">' . '<br><br>' . '<input type="submit" value="Wyślij plik" class="przycisk">' . '</form>'; } if($_POST['wyslij'] == 'yes') { if($_FILES['zdjecie']['error'] > 0) { echo '<font color="#FF0000">Zgodność pliku (Krok 1 z 3):</font> '; switch($_FILES['zdjecie']['error']) { case 1 : echo '<font color="#FF0000">Rozmiar pliku przekroczył wartość upload_max_filesize.</font>'; break; case 2 : echo '<font color="#FF0000">Rozmiar pliku przekroczył wartość max_file_size (5 MB)</font>.'; break; case 3 : echo '<font color="#FF0000">Plik został wysłany tylko częściowo.</font>'; break; case 4 : echo '<font color="#FF0000">Nie wysłano żadnego pliku.</font>'; break; } exit; } else { echo '<font color="#00FF00">Zgodność pliku (Krok 1 z 3): Wynik przebiegł pomyślnie.<br></font>'; } if(($_FILES['zdjecie']['type'] == 'image/pjpeg') || ($_FILES['zdjecie']['type'] == 'image/png')) { echo '<font color="#00FF00">Zgodność pliku (Krok 2 z 3): Wynik przebiegł pomyślnie.<br></font>'; } else { echo '<font color="#FF0000">Zgodność pliku (Krok 2 z 3): Ten plik nie posiada rozszerzenia *.JPG lub *.PNG.</font>'; exit; } $lokalizacja = '/Galeria/' . $_FILES['zdjecie']['name']; if(is_uploaded_file($_FILES['zdjecie']['tmp_name'])) { if((copy($_FILES['zdjecie']['tmp_name'], $lokalizacja)) == false) { echo '<font color="#FF0000">Zgodność pliku (Krok 3 z 3): Plik nie może zostać skopiowany.</font>'; exit; } else { echo '<font color="#00FF00">Zgodność pliku (Krok 3 z 3): Wynik przebiegł pomyślnie.</font>'; } } else { echo '<font color="#FF0000">Zgodność pliku (Krok 3 z 3): Możliwy atak podczas wysyłania pliku ' . $_FILES['zdjecie']['name'] . '.</font>'; exit; } } ?> </body> </html> Z góry dziękuję i pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ) Piszę ten post dlatego, iż serwer zwraca mi błąd w postaci Cytat Zgodność pliku (Krok 1 z 3): Wynik przebiegł pomyślnie.
Zgodność pliku (Krok 2 z 3): Wynik przebiegł pomyślnie. Warning: copy() [function.copy]: open_basedir restriction in effect. File(/Galeria/kosa.JPG) is not within the allowed path(s): (/home/asot/:/tmp:/usr/local/lib/php/) in /home/asot/domains/2ti.src4u.com/public_html/dodaj_zdjecia.php on line 89 Warning: copy(/Galeria/kosa.JPG) [function.copy]: failed to open stream: Operation not permitted in /home/asot/domains/2ti.src4u.com/public_html/dodaj_zdjecia.php on line 89 Zgodność pliku (Krok 3 z 3): Plik nie może zostać skopiowany. Ten post edytował Kosa_03 23.10.2007, 21:18:30 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) ![]() ![]() |
użyj move_uploaded_file() zamiast copy()
copy() służy chyba jedynie do kopiowania na serwerze |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 23.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
przy funkcji move_uploaded_file(); wyskakuje mi błąd (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Informacje typu "Zgodność pliku:..." to sam robiłem, w powyższym kodzie (post wyżej) również widać to.
Cytat Zgodność pliku (Krok 1 z 3): Wynik przebiegł pomyślnie. Zgodność pliku (Krok 2 z 3): Wynik przebiegł pomyślnie. Warning: move_uploaded_file() [function.move-uploaded-file]: open_basedir restriction in effect. File(/Galeria/skanuj0001.jpg) is not within the allowed path(s): (/home/asot/:/tmp:/usr/local/lib/php/) in /home/asot/domains/2ti.src4u.com/public_html/dodaj_zdjecia.php on line 89 Zgodność pliku (Krok 3 z 3): Plik nie może zostać skopiowany. Używając funkcji move_uploaded_file(); wyskakiwał mi taki błąd, poszukałem w necie innego przykładu do wysyłania plików na serwer i pisało copy(); dlatego użyłem funkcji copy(); ... Jak zrobić do takiego formularza "Progressbar" ? taki pasek informujący na bierząco postęp wysyłanego pliku. Coś typu "Wysłano 1024 kB z 2048 kB (50%) Proędkość wysyłania: 20 kbps Przewidywany czas: 60 sekund" Proszę o odpowiedź i pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) Ten post edytował Kosa_03 25.10.2007, 19:09:08 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) ![]() ![]() |
1. a nadałeś odpowiednie prawa katalogowi do którego uploadujesz pliki?
2. Wiem że flash posiada funkcje która potrafi odczytać rozmiar uploadowanego pliku przed jego przekopiowaniem, w php/js nie da rady chyba ze użytkownik sam w formularzu podawałby rozmiar pliku ale chyba nie o to nam chodzi... |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 23.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
1) Katalog do którego mają zostać przekopiowane pliki to Galeria. Katalog ten posiada atrybuty (CHMOD) ustawione na 777.
2) Dzięki za informacje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) ![]() ![]() |
Cytat ...Niestety nie jest to prawdą. Wystarczy zapoznać się z dokumentacją PHP, aby zdiagnozować problem. Leży on po stronie konfiguracji PHP’a w którym włączone jest ograniczenie open_basedir. Dział 42. dokumentacji PHP opisuje tzw tryb bezpieczny PHP’a w którym można ograniczyć dostęp do plików na serwerze. Komunikat “Warning: open_basedir restriction in effect. File is in wrong directory in /__FILE__ on line __LINE__” mówi tylko o tym, że administrator nie pozwala na dostęp do katalogów systemu...
... Należy zwrócić się do administratora serwera, aby w pliku php.ini umożliwił zapis do katalogów lub wyłączył restrykcję open_base_dir. To drugie rozwiązanie jest najlepsze, gdyż usunie wyszystkie tego typu błędy... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 21:41 |