![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 2 Dołączył: 27.04.2009 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
witam zrobilem sobie upload :
Kod $name= 'upload'; // Nazwa pliku bez .php ?><html> <head> <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" /> <title>Upload Plików!</title> <script type="text/javascript"> </script> </head> <body bgcolor="#000000"> <br><br><br><br><br><br><br><br> <center> <h2><font color="#FFFFFF"><b>Upload !</font></b></h2> <div> <form enctype="multipart/form-data" action="<?php echo $name; ?>.php" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="50000" /> <input name="plik" accept="*.pwn,*.amx,*.jpg,*.gif,*.map,*.png" type="file" /> <input type="submit" value="Wy¶lij plik" /> </form> </div> <center> <?php $plik_tmp = $_FILES['plik']['tmp_name']; $plik_nazwa = $_FILES['plik']['name']; $plik_rozmiar = $_FILES['plik']['size']; $domain= 'http://www.gtaforum.xaa.pl'; // adres strony z http:// i www. ale bez uko¶nika na końcu $katalog= 'upload'; // katalog w którym maj± znajdować się pliki do zapisu. Pamietaj katalog musi posiadać CHMD 777 $rozszerzenie = $_FILES['plik']['type']; if ($rozszerzenie !== 'php') { if(is_uploaded_file($plik_tmp)) { move_uploaded_file($plik_tmp, "$katalog/$plik_nazwa"); echo "<font color=\"#FF0000\"><center>Plik: <strong>$plik_nazwa</strong> o rozmiarze <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!</font></center><br> <tr><td><font size=\"2\" color=\"#FFFFFF\">URL: </font></td><td><input type='text' name='thetext' onClick='highlight(this);' size='30' value='$domain/$katalog/$plik_nazwa'></td></tr><br> <tr><td><font size=\"2\" color=\"#FFFFFF\">HTML: </font></td><td><input type='text' name='thetext' onClick='highlight(this);' size='30' value='<a href=$domain/$katalog/$plik_nazwa>$plik_nazwa</a>'></td></tr><br>"; } } else { echo '<font color=red>błędne rozszerzenie</font>'; } ?> <br><font size="2" color="#FFFFFF">Stworzeone przez</font> <font size="2" color="#FF0000"><a href="http://www.gtaforum.y0.pl/">Sebaso</a></font> <font size="2" color="#FFFFFF">dla gtaforum.y0.pl</font> </body> </html> Lecz niestety nie dziala gdy wsadze php pisze ze plik costam.php o rozmiarze 0 b zostal wyslany na serwer a wogole nie zostal i tak samo z innymi rozszerzeniami tylko ze poprostu strona jakby sie tylko odswieza Ten post edytował Sebaso 28.04.2009, 12:57:44 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Od kiedy to $_FILES['plik']['tmp_name'] przechowuje rozszerzenie pliku? Rozszerzenie możesz sobie sam wyciągnąć funkcją pathinfo() z $_FILES['plik']['name'] albo sprawdzać typ MIME w $_FILES['plik']['type']. Jednak oba sposoby są niepewne, ponieważ pierwszy bazuje na rozszerzeniu pliku (podczas gdy de facto może on zawierać cokolwiek), a drugie nie jest weryfikowane w żaden sposób przez PHP.
PS. "Nie" z czasownikami piszemy oddzielnie. Ten post edytował Zyx 28.04.2009, 12:45:21 |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
a exe pozwolisz ?
daj tablicę z dozwolonymi typami mime . i jak już było pisane $_FILES['plik']['tmp_name'] nie przechowuje typu mime |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 2 Dołączył: 27.04.2009 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
czyli to tak będzie wyglądało (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
tak (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
$_FILES['plik']['type'] przechowuje typ MIME pliku, a nie rozszerzenie. Nie wiem, jaki konkretnie typ MIME jest przypisany do PHP, ale to można łatwo sobie sprawdzić w Google (list of mime types) i podobnie jak zauważył Spawnm, ze względów bezpieczeństwa sprawdzaj raczej, czy rozszerzenie jest dozwolone, a nie czy jest niedozwolone.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 2 Dołączył: 27.04.2009 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
ale jak to zrobic ?
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 9 Dołączył: 12.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
(IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Normalnie, pobierasz typ mime przez: $_FILES['plik']['type'], następnie porównujesz go z typami mime dopuszczanymi przez twój upload, powiedzmy tablica zbudowana w formie:
Kod $tablica[] = 'mimetype (np. image/png dla obrazka o rozsz. png jeśli dobrze pamiętam)'; i jeśli znajdzie ci trafienie tablicy z typem kontynuujesz skrypt, jeśli nie - przerywasz go i zwracasz komunikat. Kod if(array_search($_FILES['plik']['type'], $tablica) != false) { // instrukcje wykonywane jesli rozszerzenie jest dopuszczalne } else { // instrukcje wykonywanie jesli rozszerzenie nie jest dopuszczalne } Inną z kolei bardziej prymitywną metodą jest rozbijanie pliku na części z kropką przez funkcję explode: Kod $rozszerzenie = end(explode('.', $_FILES['plik']['name']));
// $dopuszczalne = lista z rozszerzeniami (bez kropek!) np. png, jpg, txt if(array_search($rozszerzenie, $dopuszczalne) != false) { // instrukcje wykonywane jesli rozszerzenie jest dopuszczalne } else { // instrukcje wykonywanie jesli rozszerzenie nie jest dopuszczalne } |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 2 Dołączył: 27.04.2009 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
jest problem bo else od razu wyskakuje zobacz http://www.upload.gtainpawno.pl/ moj kod
a poza tym upload nie dziala wogole Kod $tablica[] = 'mimetype (image/png)';
if(array_search($_FILES['plik']['type'], $tablica) != false) { move_uploaded_file($plik_tmp, "$katalog/$plik_nazwa"); echo "<font color=\"#FF0000\"><center>Plik: <strong>$plik_nazwa</strong> o rozmiarze <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!</font></center><br> <tr><td><font size=\"2\" color=\"#FFFFFF\">URL: </font></td><td><input type='text' name='thetext' onClick='highlight(this);' size='30' value='$domain/$katalog/$plik_nazwa'></td></tr><br> <tr><td><font size=\"2\" color=\"#FFFFFF\">HTML: </font></td><td><input type='text' name='thetext' onClick='highlight(this);' size='30' value='<a href=$domain/$katalog/$plik_nazwa>$plik_nazwa</a>'></td></tr><br>"; } else { echo '<font color=red>błędne rozszerzenie</font>'; } Ten post edytował Sebaso 28.04.2009, 14:26:20 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 9 Dołączył: 12.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Zapominasz sprawdzać czy żądanie przychodzi od formularza (dane metodą POST) (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Należy dodać po prostu na początku ifa jednego takiego:
Kod if($_SERVER['REQUEST_METHOD'] === 'POST') { (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Ponadto nie wstawiasz słówka "mimetype" przed typem pliku (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Wystarczy dodać sam typ do tablicy do tablicy, więc twój kod powinien wyglądać tak: Kod if($_SERVER['REQUEST_METHOD'] === 'POST') { // dodaje troche wiecej rozszerzen $tablica[] = 'image/png'; $tablica[] = 'image/jpeg'; $tablica[] = 'image/gif'; if(array_search($_FILES['plik']['type'], $tablica) != false) { move_uploaded_file($plik_tmp, "$katalog/$plik_nazwa"); echo "<font color=\"#FF0000\"><center>Plik: <strong>$plik_nazwa</strong> o rozmiarze <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!</font></center><br> <tr><td><font size=\"2\" color=\"#FFFFFF\">URL: </font></td><td><input type='text' name='thetext' onClick='highlight(this);' size='30' value='$domain/$katalog/$plik_nazwa'></td></tr><br> <tr><td><font size=\"2\" color=\"#FFFFFF\">HTML: </font></td><td><input type='text' name='thetext' onClick='highlight(this);' size='30' value='<a href=$domain/$katalog/$plik_nazwa>$plik_nazwa</a>'></td></tr><br>"; } else { echo '<font color=red>błędne rozszerzenie</font>'; } } Poza tym nie wiem czy pomyślałeś o tym, ale jeśli zostanie zauploadowany plik o tej samej nazwie i rozszerzeniu to poprzedni zostanie nadpisany. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Powinieneś generować losową nazwę dla tego pliku, aby uniknąć takich sytuacji (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ponadto, aby uniknąć przeciążenia twojego serwera/planu hostingowego powinieneś wstawić zabezpieczenie przed wrzuceniem zbyt dużego pliku - powiedzmy max 2mB. Ten post edytował lashus 28.04.2009, 14:39:39 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 2 Dołączył: 27.04.2009 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
lashus a czy bym mogl prosic cie o zrobienie dobrego uploadu (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Prosze cie o kontakt ze mna przez Komunikator Gadu - Gadu : 12583193
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 9 Dołączył: 12.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Zależy czego upload (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Mam jakiś stary skrypt uploadowania z czasów, gdy zaczynałem i mogę ci go podrzucić. Napisałem na gg.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 08:52 |