Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z uploaderem
Forum PHP.pl > Forum > PHP
arkadiusz_18
Witam jakiś czas temu ściągłem gotowego uploadera, do telefonów komórkowych.

Są dwa pliki
index:
  1. <?php
  2.  include 'config.php';
  3.  
  4.  $nu = time();
  5.  
  6.  
  7.  $sql = ("SELECT * FROM wapupld_upload");
  8.  $result = mysql_query($sql, $db);
  9.  $enable = 0;
  10.  
  11.  while($rs = mysql_fetch_array($result) ){ 
  12. $uptime = $rs["dato"];  
  13. $idnm = $rs["idnm"];  
  14. $filname = $rs["filname"];
  15.  
  16. if(($nu-$uptime) >= $timeallowed) { // slet filen den er udlřbet
  17.  
  18.  
  19.  
  20. unlink("tmpfiles/$filname");
  21. $sql = ("DELETE FROM wapupld_upload WHERE idnm='$idnm'");
  22. mysql_query($sql, $db);
  23.  
  24.  
  25.  
  26.  }
  27.  
  28.  
  29.  }
  30.  
  31.  
  32. ?>
  33. <form enctype='multipart/form-data' action='<?php echo("$urltoindex");?>/uploadfile.php' method='post' >
  34. <input name='fil' type='file' size="23" >
  35. <input name='submit' type='submit' value='Dodaj' >


Oraz plik wysyłający uploadfile.php


  1. <form enctype='multipart/form-data' action='<?php echo("$urltoindex");?>/uploadfile.php' method='post'> 
  2. <input type='hidden' name='from' value='tree'> 
  3. <?php
  4.  include 'config.php';
  5.  
  6.  
  7.  //Her skal filen flyttes fra 
  8.  $src = $_FILES['fil']['tmp_name']; 
  9.  
  10.  
  11.  //Hvilken type fil arbejder vi med? 
  12.  $ext = strtolower(end(explode(".", $_FILES['fil']['name']))); 
  13.  
  14.  
  15.  $filnavn = $_FILES['fil']['name'];
  16.  $tid = substr(time(), 4);
  17.  
  18.  
  19.  $nytNavn = $tid.".".$ext;
  20.  
  21.  if ($nytNavn == 0)
  22.  
  23.  
  24.  if(substr($tid,5)== 0)
  25. autom($wapurl,$urltoindex);
  26.  
  27.  
  28.  
  29. $dst = "tmpfiles/" . $nytNavn; 
  30. copy($src, $dst);
  31. $fsize = filesize($dst);
  32.  
  33.  
  34.  
  35.  
  36. if(($fsize >= $allowedsize) OR $ext=="php" OR $ext=="htm" OR $ext=="html") 
  37. {unlink("tmpfiles/$nytNavn");
  38.  echo("<center>Nie udało się wysłać pliku, spróbuj ponownie.</center>");}
  39.  
  40.  
  41.  
  42. else { //upload
  43.  
  44.  $min = $timeallowed/60;
  45.  $hours = $min/60;
  46.  echo("<br>Plik dodany poprawnie!<br> 
  47.  Wpisz w telefonie:<br> 
  48.  <font color='red'><b>$wapurl</b></font><br>
  49.  Oraz podaj id: <font color='red'><b>$tid</b></font><br>");
  50.  
  51. //gem i db
  52.  
  53.  
  54. $sql = ("INSERT INTO wapupld_upload(idnm,filname,dato) VALUES('$tid','$nytNavn','".time()."')");
  55. mysql_query($sql, $db);
  56.  
  57. }
  58.  
  59. echo("<br><br><left><a href='$urltoindex/index.php'>Dodaj nowy plik.</a></left><br><br>");
  60. ?>


Niestety ten mały gotowiec , nie jest w pełni funkcjonalny, a ja nie potrafię sobie poradzić chodzi mi dokładnie o wysłanie pustego pliku to znaczy wcisnięcia buttona "dodaj", skrypt się wykonuje i próbuje dodać "brak pliku" po czym komunikuje błedem :

"Warning: filesize(): Stat failed for tmpfiles/051662. (errno=2 - No such file or directory) in /home/public_html/wap/uploadfile.php on line 77"

Próbowałem zabezpieczyć javascriptem od strony wysyłania pustego formularza ale tez doszdłem do wniosku ze to kiepskie rozwiazanie, więc prosze o pomoc, jak zabezpieczyć przed wysłaniem pustego formularza, lub jeśli plik ma wartość zerową.. Domyslam się że chodzi tu o funnkcię filesize() ale jestem zbyt poczatkujacy żeby to rozgryżć

Z góry wielkie dzięki
Ludvik
Może obługiwać pliki uploadowane funkcjami do tego stworzonymi. is_uploaded_file" title="Zobacz w manualu php" target="_manual i move_uploaded_file" title="Zobacz w manualu php" target="_manual.
Ja_Szczur
  1. <form method="post" onSubmit="if( fil.value == '' ) return false;">
  2. <input type="file" name="fil">
  3. <input type="submit">
  4. </form>


JavaScript nie jest zły, jednakże nie zabezpieczy przed wysłaniem pliku, który nie istnieje (np. ktoś wpisze losowy ciąg znaków)

a od strony php to poprawić wystarczy:

  1. <?php
  2. // ...
  3. include 'config.php';
  4.  
  5. //Her skal filen flyttes fra 
  6. $src = $_FILES['fil']['tmp_name']; 
  7.  
  8. // dodać to ->
  9.  if( ! is_uploaded_file( $src ) )
  10.  {
  11. echo 'błąd!';
  12. // przerwij skrypt
  13.  }
  14. // ...
  15. ?>
arkadiusz_18
Bardzo dziękuje exclamation.gif! Wszystko teraz działa jak nalezy, zamiast echo dałem die i śmiga smile.gif
Teraz mam jeszcze jedno pytanie czy teraz po wysłaniu pliku na serwer chodzi mi dokładnie o zdjęcie jpg czy jest możliwość zmiany jego rozmiaru i ponownego zapisu ? Chodzi mi o tapety na rózne rozmiary telefonów, zdjęcie jest wysyłane potem jest wybierany rozmiar i jest jakby ponownie zapisywane, da się to wykonac za pomoca php ? Dokładnie nie wiem jak by było lepiej zmieniać rozmiar w locie czy dopiero po zapisie ? Dziękuje za sugestje smile.gif
Ja_Szczur
oczywiście! A czy w ogóle jest coś, czego php nie potrafi? smile.gif

LX. Image Functions [manual]

Zmiana rozdzielczności obrazu z zachowaniem proporcji (pierwszy znaleziony link w google)
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.