Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Prosty upload pliku
Forum PHP.pl > Forum > PHP
shpaque
Witam,
ostatnio znalazłem w necie prosty skrypt na upload pliku, ale nie hula...

  1. <?
  2. if ($_SERVER['REQUEST_METHOD'] == 'POST')
  3. {
  4. $action = isset($_POST['action']) ? $_POST['action'] : '';
  5. $database = './../db/actuals.db';
  6. $success_page = './newok.php';
  7. $error_page = './admin.php';
  8.  
  9. if (!file_exists($database))
  10. {
  11. echo 'Nie odnaleziono bazy danych!';
  12. }
  13.  
  14. if ($action == 'form')
  15. {
  16. $logtime = date("Y-m-d");
  17. $newfota = $_POST['upload'];
  18. $newtitle = $_POST['title'];
  19. $newarticle = $_POST['article'];
  20.  
  21. $file = fopen($database, 'a');
  22. fwrite($file, $logtime);
  23. fwrite($file, '|');
  24. fwrite($file, $newfota);
  25. fwrite($file, '|');
  26. fwrite($file, $newtitle);
  27. fwrite($file, '|');
  28. fwrite($file, $newarticle);
  29. fwrite($file, "\r\n");
  30. fclose($file);
  31.  
  32. $filename = basename($_FILES['upload']['name']);
  33. $ext = substr($filename, strrpos($filename, '.') + 1);
  34. if (($ext == "jpg") && ($_FILES["upload"]["type"] == "image/jpeg") && ($_FILES["upload"]["size"] < 500000))
  35. {
  36. $newname = dirname(__FILE__).'/db/aktualnosci/'.$filename;
  37.  
  38. if (!file_exists($newname))
  39. {
  40. if ((move_upload($_FILES['upload']['tmp_name'],$newname)))
  41. {
  42. header('Location: '.$success_page);
  43. }
  44. else
  45. {
  46. header('Location: '.$error_page);
  47. }
  48. }
  49. }
  50. }
  51. }
  52. ?>



nie wiem czy jedynym błędem nie jest ścieżka - jak to zrobić żeby byłą poprawna?

skrypt wykonuje się w katalogu "./admin"
plik musi się zapisać z kolei w: "./db/aktualnosci/"

więc generalnie musialbym zrobic "./../db/aktualnosci/" ale to tez nie dziala...
Turson
Czy katalog, w którym chcesz zapisać plik ma uprawnienia do zapisu?
lukaskolista
Musze cie martwic, ale twoj upload przepusci pliki php
shpaque
katalog ma uprawnienia,

co to znaczy przepusci pliki php? w jaki sposób? - ale czemu w ogole nie zapisuje pliku w odp katalogu?>
Turson
Przepuści pliki php to znaczy, że nie filtrujesz wysyłanego pliku i ktoś może wgrać shella.

  1. if ((move_upload($_FILES['upload']['tmp_name'],$newname)))

a może move_uploaded_file() ?
shpaque
uploaded zmienilem - dalej nie wgrywa...

nie wiem czy z ta sciezka nie jest cos nie tak... albo sam juz nie wiem...
Turson
Ustaw ścieżkę na jakąś prostszą do wpisania i zobacz czy w ogole wgrywa
shpaque
zmieniłem na
  1. $newname = './$filename';
- chyba prostszy nie może być

i dalej wywala mi errorpage
Turson
Jaki błąd?
shpaque
jeszcze inaczej - nie idzie ani error page ani success page - po prostu przełądowuje stronę zostając na "nowy.php" - zapisuje wszystko z formularza do pliku (łącznie z nazwą pliku), ale nie uploaduje pliku ani nie przechodzi na success lub error page...

głupota, ale nie mialem multipart form data w formularzu wink.gif

@edit

to teraz mam tak (zmodyfikowałem trochę)

  1. <?
  2. if ($_SERVER['REQUEST_METHOD'] == 'POST')
  3. {
  4. $action = isset($_POST['action']) ? $_POST['action'] : '';
  5. $database = './../db/actuals.db';
  6. $success_page = './newok.php';
  7. $error_page = './admin.php';
  8.  
  9. if (!file_exists($database))
  10. {
  11. echo 'Nie odnaleziono bazy danych!';
  12. }
  13.  
  14. if ($action == 'form')
  15. {
  16. $logtime = date("Y-m-d");
  17. $newfota = $_FILES['zalacznik']['name'];
  18. $newtitle = $_POST['title'];
  19. $newarticle = $_POST['article'];
  20.  
  21. $filename = basename($_FILES['zalacznik']['name']);
  22. $ext = substr($filename, strrpos($filename, '.') + 1);
  23. if (($ext == 'jpg') && ($_FILES['zalacznik']['type'] == 'image/jpeg') && ($_FILES['zalacznik']['size'] < 500000))
  24. {
  25. $newname = "./../db/aktualnosci/$filename";
  26.  
  27. if (!file_exists($newname))
  28. {
  29. if (move_uploaded_file($_FILES['zalacznik']['tmp_name'],$newname))
  30. {
  31. $file = fopen($database, 'a');
  32. fwrite($file, $logtime);
  33. fwrite($file, '|');
  34. fwrite($file, $newfota);
  35. fwrite($file, '|');
  36. fwrite($file, $newtitle);
  37. fwrite($file, '|');
  38. fwrite($file, $newarticle);
  39. fwrite($file, "\r\n");
  40. fclose($file);
  41. header('Location: '.$success_page);
  42. }
  43. else
  44. {
  45. header('Location: '.$error_page);
  46. }
  47. }
  48. else
  49. {
  50. echo '<script type=\"text/javascript\">';
  51. echo 'alert("Plik o tej nazwie jest już w naszej bazie!")';
  52. echo '<script>';
  53. break;
  54. }
  55. }
  56. }
  57. }
  58. ?>


i mam problem z alertem... Coś z wyświetleniem, bo akcja staje - tylko mam pusty ekran, zamiast okienka alertu
Turson
  1. echo '<script>';
  2. echo 'alert("Plik o tej nazwie jest już w naszej bazie!")';
  3. echo '</script>';
shpaque
dzięki ogromne za pomoc!

jeszcze jakbyś był tak miły i pomogl mi z tematem unlink - ktory zalozylem niedawno

to teraz pytanie dlaczego przepusci pliki php skoro ma zaznaczone ze tylko jpg ma dawac?
Turson
Spróbuj wgrać plik typu plik.jpg.php to się dowiesz czy przepuszcza czy nie.
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.