Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Upload pliku JPG (wielkie litery)
Forum PHP.pl > Forum > Przedszkole
JanekMietek
Witam!

Chciałem zapytać czy jest jakis sposób na wgranie plików o rozszerzeniu pisanym wielkimi literami na ftp przez formularz w PHP.
smile.gif

Pozdrawiam!
wookieb
a no jest. wyrazenie regularne. Jakie? http://php.net/preg_match i poczytaj o wyrażeniach regularnych
MietekJurek
Hmm co mają wyrażenie regularne do tego ? smile.gif Że tak spytam, nie chcę validować niczego , poprostu chce aby plik znalazł sie na serwerze smile.gif

strtolower zmienia nazwę na małe litery, ale co z tego jak plik sie nie dodaje na ftp. :/

oto mój kod:

  1. <?php
  2. echo "<div id=\"dod_aktu\"><form enctype=\"multipart/form-data\" action=\"$PHP_SELF\" method=\"post\">        
  3.        
  4.                    
  5.         <div id=\"title\">Wybierz zdjęcie </div>
  6.         <div id=\"form\"> <input type=\"file\" name=\"plik\"> </div>";
  7.            
  8.        echo "<div id=\"form\">    <input type=\"submit\" value=\"Zapisz\"></div
  9.        </form> ";
  10.  
  11.  
  12. //echo $_POST['FCKeditor1'];
  13.  
  14. $plik_tmp = strtolower($_FILES['plik']['tmp_name']);
  15. $plik_nazwa = strtolower($_FILES['plik']['name']);
  16. $plik_rozmiar = $_FILES['plik']['size'];
  17.  
  18.  
  19.  
  20. // random ***
  21.  
  22. $rozsz = substr(strrchr($plik_nazwa, "."), 1);
  23. $nazwa=substr($plik_nazwa,0,strrpos($plik_nazwa,'.'));
  24.  
  25. $t = time();
  26.  
  27.  
  28.  
  29. $randName =  "$nazwa$t.$rozsz";
  30.  
  31. //$randName = strtolower($randName)
  32.  
  33. $cel="upload/random/$randName";
  34.  
  35.  
  36.  
  37.  
  38.  
  39. if (!empty($_FILES['plik']['name']))
  40. {
  41.  
  42.  
  43.  
  44. if(is_uploaded_file($plik_tmp))
  45. {
  46.   move_uploaded_file($plik_tmp,$cel);
  47.  
  48.  
  49.   list($width, $height) = getimagesize($cel);
  50.    
  51.     ///////////////
  52.    
  53.    
  54.    
  55.    
  56.   // echo "Rozmiar oryginaln: ".$width." x ".$height."<br /><br />";
  57.     $newwidth1 = 260;
  58.     $newheight1 = round ( ( $newwidth1 * $height ) / $width );
  59.   //  echo "Nowy romiar: ".$newwidth1." x ".$newheight1."<br />";
  60.     $thumb1 = imagecreatetruecolor($newwidth1, $newheight1);
  61.     $source1 = imagecreatefromjpeg($cel);
  62.     if(imagecopyresized($thumb1, $source1, 0, 0, 0, 0, $newwidth1, $newheight1, $width, $height))
  63.  //   echo "<b>Zmieniono rozmiar</b><br /><br />";
  64.     if(imagejpeg($thumb1,$cel))
  65.  
  66. //////////////////////
  67.  
  68.  
  69.      
  70.    
  71.     echo '<komu> Zdjęcie zostało dodane pomyślnie </komu>';
  72. ////////////////////////// dodanie ////
  73.  
  74.  
  75.  
  76. }
  77.  
  78.  
  79.  
  80.  
  81.  
  82. mysql_query("SET NAMES utf-8");
  83.        
  84.      $dodaj = mysql_query("INSERT INTO `random` (`zdjecie`)
  85.                                                VALUES ('".$randName."');") or die(mysql_error());
  86.  
  87.    if($dodaj == 'TRUE')
  88.   {
  89.      echo '<komu> Zdjęcie zostało dodane do galerii <b>'.$galeria.'</b> </komu>';
  90.   }
  91.  
  92.    
  93.  
  94.  
  95. }
  96. ?>
wookieb
Włącz error_reporting(E_ALL); i powiedz jaki błąd ci wypluwa.
MietekJurek
Jedyny warning ktory mi sie pojawia to:

  1. <?php
  2. NoticeUndefined variablePHP_SELF in /home/cantalupa/domains/cantalupa.pl/public_html/nowa/admin/modules/random.php on line 18
  3. ?>


Ale to raczej nie oto chodzi.
Może być tak, że serwer nie obsługuje rozszerzeń pisanych wielkimi literami ?
MietekJurek
To może tak... smile.gif

Czy komuś w ogóle uploaduje się plik z rozszerzeniem pisanym wielkimi literami ? smile.gif

Może jakiś, banalny przykładzik ? sciana.gif
erix
Cytat
$plik_tmp = strtolower($_FILES['plik']['tmp_name']);

Kopiesz pod sobą dołek. ;]

Nie uploaduje pliku z nazwą z wielkich liter, bo nakazujesz PHP szukanie po małych. tongue.gif
Maxik
Wielkość liter w rozszerzeniu nie m znaczenia, ba nawet same rozszerzenie nie ma znaczenia. $_FILES['plik']['type'] ta zmienna przybiera wartośc typu mime np. image/png, image/jpeg, text/plain itd. Sprawdzaj w ten sposób.
MWL
hehehe, nie masz racji. Ja tak zrobiłem i na drugi dzień miałem hakera. Mimo że rozszerzenie jest prostym zabezpieczeniem to mimo wszystko dobrym. sam typ mime nie starczy bo każdemu plikowi możesz to zmienić tongue.gif

np. haxoremjesteminicmitwojezabezpieczenieniezrobi.php -> mimetype image/gif ^^
Maxik
Dlatego też często wykorzystuje się prostą metodę sprawdzania wielkości zuploadowanego obrazka, jeśli większy niż 1x1 to przechodzi, jeśli nie to błąd. Sumując wszystkie te zabezpieczenia może wyjść skrypt którego nie będzie opłacało się hakerowi złamać bo po prostu za dużo z tym roboty.
MietekJurek
Cytat(erix @ 10.09.2008, 13:52:57 ) *
Kopiesz pod sobą dołek. ;]

Nie uploaduje pliku z nazwą z wielkich liter, bo nakazujesz PHP szukanie po małych. tongue.gif


Ehhh... chodzi mi o roszerzenie, a nie o nazwe. JPG (wielkie litery).

Dalem strtolower zeby zmienilo roszerzenie na male litery, ale mimo to nie uploaduje pliku.

Z plikami, które maja rozszerzenie pisanymi małymi literami nie ma problemu.


dodalem co takiego:

  1. <?php
  2. if ($_FILES['plik']['type']=="image/jpeg" || $_FILES['plik']['type']=="image/JPG" || $_FILES['plik']['type']=="image/jpg" || $_FILES['plik']['type']=="image/JPEG" )
  3. ?>


uploaduje plik np: DSCN6546.JPG i nie przechodzi validacji.
Z plikiem DSCN6546.jpg nie ma problemu.
erix
Cytat
Wielkość liter w rozszerzeniu nie m znaczenia, ba nawet same rozszerzenie nie ma znaczenia.

Nie rozumiesz. Poza tym, tmp_name nie trzyma rozszerzenia. ^^ move_uploaded_file" title="Zobacz w manualu PHP" target="_manual NIE ZADZIAŁA jeśli wielkość liter jest inna niż zapisany plik. Z małymi literami nie ma problemu - serwer przenosi z /tmp/uploads/temp_name do lokalizacji docelowej, ale już /tmp/uploads/TEMP_NAME nie, ponieważ plik temp_name (którego serwer szuka po użyciu strtolower" title="Zobacz w manualu PHP" target="_manual na zmiennej zawierającą lokalizację pliku źródłowego) w rzeczywistości nie istnieje.
MietekJurek
Usunąłem strtolower i niestety nadal nie działa blinksmiley.gif
MWL
są i uparci tongue.gif
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.