Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Skrypt Uploadu Plików - Problem z działaniem
Forum PHP.pl > Forum > Przedszkole
MrLoverLover
Hejka smile.gif

nie wiem dlaczego ale wszystkie znaki diakrytyczne zamienia mi na polskie bez ogonków tj. ±->a, lecz problem tkwi w tym, że wszystkie prócz `Ó`, `ó` s± zamieniane.
Co zrobić by także ta literka była zamieniana na `o` ?

Drugi problem to taki iż, gdy zaznaczam pewien plik .mp3 to mi go nie uploaduje gdyż jest to mp3 a inny także mp3 to wogóle psuje mi działanie skryptu bo następuje zero reakcji ze strony skryptu.
Od czego zależy to czy skrypt zadziała i wy¶wietli bł±d a kiedy nie ?

  1. <form action="" method="POST" enctype="multipart/form-data">
  2. <input type="file" name="img[]" multiple="multiple" />
  3. <input type="submit" name="wyslij" value="UPLOAD">
  4. </form>
  5. <?php
  6. /*
  7. function clear_name( $str, $replace = "" ){
  8.  
  9. // konwersja znaków utf do znaków podstawowych
  10. $str = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
  11.  
  12. // Niektóre francuskie i niemieckie litery pozostawiaj± po takiej konwersji (jak powy?ej)
  13. // dodatkowe znaki. Poni?sze dwie linijki te znaki wycinaj±
  14.  
  15. $charsArr = array( '^', "'", '"', '`', '~');
  16. $str = str_replace( $charsArr, '', $str );
  17.  
  18. $return = trim(ereg_replace(' +',' ',preg_replace('/[^a-zA-Z0-9\.]/','',strtolower($str))));
  19. return str_replace(' ', $replace, $return);
  20. }
  21. //echo clear_name('ˇĘĆŁÓѬŻ.JPG');
  22. */
  23. function clear_name($nazwa){
  24. $plik_nazwa = $nazwa;
  25. $plik_nazwa = trim($plik_nazwa);
  26. $plik_nazwa = preg_replace('@±@', 'a', $plik_nazwa);
  27. $plik_nazwa = preg_replace('@ˇ@', 'a', $plik_nazwa);
  28. $plik_nazwa = preg_replace('@ć@', 'c', $plik_nazwa);
  29. $plik_nazwa = preg_replace('@Ć@', 'c', $plik_nazwa);
  30. $plik_nazwa = preg_replace('@ę@', 'e', $plik_nazwa);
  31. $plik_nazwa = preg_replace('@Ę@', 'e', $plik_nazwa);
  32. $plik_nazwa = preg_replace('@ł@', 'l', $plik_nazwa);
  33. $plik_nazwa = preg_replace('@Ł@', 'l', $plik_nazwa);
  34. $plik_nazwa = preg_replace('@ń@', 'n', $plik_nazwa);
  35. $plik_nazwa = preg_replace('@Ń@', 'n', $plik_nazwa);
  36. $plik_nazwa = preg_replace('@ó@', 'o', $plik_nazwa);
  37. $plik_nazwa = preg_replace('@Ó@', 'o', $plik_nazwa);
  38. $plik_nazwa = preg_replace('@¶@', 's', $plik_nazwa);
  39. $plik_nazwa = preg_replace('@¦@', 's', $plik_nazwa);
  40. $plik_nazwa = preg_replace('@ż@', 'z', $plik_nazwa);
  41. $plik_nazwa = preg_replace('@Ż@', 'z', $plik_nazwa);
  42. $plik_nazwa = preg_replace('@Ľ@', 'z', $plik_nazwa);
  43. $plik_nazwa = preg_replace('@¬@', 'z', $plik_nazwa);
  44. //$plik_nazwa = preg_replace("@'@", "", $plik_nazwa);
  45. //$plik_nazwa = preg_replace("@&@", "", $plik_nazwa);
  46. //male znaki diakrytyczne
  47. $plik_nazwa = preg_replace("@ą@", "a", $plik_nazwa);
  48. $plik_nazwa = preg_replace("@ć@", "c", $plik_nazwa);
  49. $plik_nazwa = preg_replace("@ę@", "e", $plik_nazwa);
  50. $plik_nazwa = preg_replace("@ł@", "l", $plik_nazwa);
  51. $plik_nazwa = preg_replace("@ń@", "n", $plik_nazwa);
  52. $plik_nazwa = preg_replace("@ó@", "o", $plik_nazwa);
  53. $plik_nazwa = preg_replace("@&oacute;@", "o", $plik_nazwa);
  54. $plik_nazwa = preg_replace("@ś@", "s", $plik_nazwa);
  55. $plik_nazwa = preg_replace("@ź@", "z", $plik_nazwa);
  56. $plik_nazwa = preg_replace("@ż@", "z", $plik_nazwa);
  57. //duze znaki diakrytyczne
  58. $plik_nazwa = preg_replace("@Ą@", "a", $plik_nazwa);
  59. $plik_nazwa = preg_replace("@Ć@", "c", $plik_nazwa);
  60. $plik_nazwa = preg_replace("@Ę@", "e", $plik_nazwa);
  61. $plik_nazwa = preg_replace("@Ł@", "l", $plik_nazwa);
  62. $plik_nazwa = preg_replace("@Ń@", "n", $plik_nazwa);
  63. $plik_nazwa = preg_replace("@Ó@", "o", $plik_nazwa);
  64. $plik_nazwa = preg_replace("@&Oacute;@", "o", $plik_nazwa);
  65. $plik_nazwa = preg_replace("@Ś@", "s", $plik_nazwa);
  66. $plik_nazwa = preg_replace("@Ź@", "z", $plik_nazwa);
  67. $plik_nazwa = preg_replace("@Ż@", "z", $plik_nazwa);
  68.  
  69. $plik_nazwa = preg_replace('@ö@', 'o', $plik_nazwa);
  70. $plik_nazwa = preg_replace('@ä@', 'a', $plik_nazwa);
  71. $plik_nazwa = preg_replace('@ü@', 'u', $plik_nazwa);
  72. $plik_nazwa = ereg_replace (" +", " ", $plik_nazwa);
  73. $plik_nazwa = str_replace (" ", "", $plik_nazwa );
  74. $plik_nazwa = strtolower($plik_nazwa);
  75. //$plik_nazwa = strtr($plik_nazwa, "\xA5\x8C\x8F\xB9\x9C\x9F", "\xA1\xA6\xAC\xB1\xB6\xBC");
  76. //$plik_nazwa = strtr($plik_nazwa, "\xA1\xA6\xAC\xB1\xB6\xBC", "\xA5\x8C\x8F\xB9\x9C\x9F");
  77. return $plik_nazwa;
  78. }
  79. function check_ext($name){
  80. $ext=clear_name($name);
  81. $ext = strtolower(substr($ext,strrpos($ext,'.')+1)); //wycinamy ciag znaków po ostatniej kropce
  82. return $ext;
  83. }
  84. $dir='upload';
  85. $max_rozmiar=3072000;
  86. $whitelist=array('jpg', 'png', 'gif', 'jpeg');//akceptowane rozszerzenia
  87. if(isset($_POST['wyslij'])){
  88. $ile=count($_FILES['img']['name']);//ilosc przesylanych plikow ogolem
  89. $licz=0;
  90. $istnieje=0;
  91. for($i=0; $i<$ile; $i++){
  92. //echo''.$i.' '.$_FILES['img']['name'][$i].'<br/>';
  93. if(!file_exists("".$dir."/".clear_name($_FILES['img']['name'][$i])."")){
  94. if($_FILES['img']['tmp_name'][$i]!='' AND is_uploaded_file($_FILES['img']['tmp_name'][$i]) AND $_FILES['img']['size'][$i]<=$max_rozmiar AND in_array(check_ext($_FILES['img']['name'][$i]),$whitelist)){
  95. move_uploaded_file($_FILES['img']['tmp_name'][$i], "upload/".clear_name($_FILES['img']['name'][$i])."");
  96. echo''.clear_name($_FILES['img']['name'][$i]).' - Pomyslnie wgrany<br/>';
  97. $licz++;
  98. }else{
  99. echo'chuj';
  100. }
  101. }else{
  102. $istnieje++;
  103. }
  104. }
  105. $nieodpowiednie=$ile-$licz-$istnieje;
  106. <br />
  107. Wszystkich plikow: '.$ile.'<br />
  108. Wgranych pomyslnie: '.$licz.'<br />
  109. Juz istniejacych: '.$istnieje.'<br />
  110. Nieodpowiednich plikow: '.$nieodpowiednie.'<br />
  111. ';
  112. }
  113. ?>
Bateria
What the fuck is? Zacznijmy może od tego, że zamias używać 30 razy funkcji replace, możesz zastosować tablicę.
  1. function oczysc($gdzie){
  2. $co = array('ó', 'Ó', 'Ľ', '¬');
  3. $na = array('o', 'O', 'z', 'Z');
  4. str_replace($co. $na, $gdzie);
  5. }
Weles
What the fuck? o.o
  1. }else{
  2. echo'chuj';
  3. }


Zrób sobie najlepiej generowanie losowej nazwy pliku w bazie + orginalna nazwa w bazie i pobieranie go przez link z $_GET zamiast czystego pliku.
Tajgeer
Weles - każdy debuguje tak, jak mu się podoba biggrin.gif
Adi13089
  1. <form action="" method="POST" enctype="multipart/form-data">
  2. <input type="file" name="img[]" multiple="multiple" />
  3. <input type="submit" name="wyslij" value="UPLOAD">
  4. </form>
  5. <?php
  6. function convert_to_utf8($content) {
  7. if(!mb_check_encoding($content, 'UTF-8')
  8. OR !($content === mb_convert_encoding(mb_convert_encoding($content, 'UTF-32', 'UTF-8' ), 'UTF-8', 'UTF-32'))) {
  9. $content = mb_convert_encoding($content, 'UTF-8');
  10. if (mb_check_encoding($content, 'UTF-8')) {
  11. // log('Converted to UTF-8');
  12. } else {
  13. // log('Could not converted to UTF-8');
  14. }
  15. }
  16. return $content;
  17. }
  18. function clear_name($gdzie){
  19. $gdzie=convert_to_utf8($gdzie);
  20. $co = array('±', 'ˇ', 'ć', 'Ć', 'ę', 'Ę', 'ł', 'Ł', 'ń', 'Ń', 'ó', 'Ó', '¶', '¦', 'ż', 'Ż', 'Ľ', '¬', '±', 'ˇ', 'ć', 'Ć', 'ę', 'Ę', 'ł', 'Ł', 'ń', 'Ń', 'ó', 'Ó', '&oacute;', '&Oacute;', '¶', '¦', 'Ľ', '¬', 'ż', 'Ż', 'ä', 'Ä', 'ö', 'Ö', 'ü', 'Ü', ' +',' ');//' +'-spacja
  21. $na = array('a', 'A', 'c', 'C', 'e', 'E', 'l', 'L', 'n', 'N', 'o', 'O', 's', 'S', 'z', 'Z', 'z', 'Z', 'a', 'A', 'c', 'C', 'e', 'E', 'l', 'L', 'n', 'N', 'o', 'O', 'o', 'O', 's', 'S', 'z', 'Z', 'z', 'Z', 'ae', 'AE', 'oe', 'OE', 'ue', 'UE', '_', '_');
  22. $gdzie=str_replace($co, $na, $gdzie);
  23. $gdzie=strtolower($gdzie);
  24. return $gdzie;
  25. }
  26. function check_ext($name){
  27. $ext=clear_name($name);
  28. $ext = strtolower(substr($ext,strrpos($ext,'.')+1)); //wycinamy ciag znaków po ostatniej kropce
  29. return $ext;
  30. }
  31. //echo clear_name('±ęćłóńĽż-| |-ˇĘĆŁÓѬŻ');
  32. $dir='upload';
  33. $max_rozmiar=3;//wielkosc w postaci MB np 3MB to 3, 5MB to 5
  34. $max_rozmiar=((1024*$max_rozmiar)*1000);//matma wielkosci pliku
  35. $whitelist=array('jpg', 'png', 'gif', 'jpeg');//akceptowane rozszerzenia
  36. if(isset($_POST['wyslij'])){
  37. //print_r($_POST);
  38. $ile=count($_FILES['img']['name']);//ilosc przesylanych plikow ogolem
  39. $licz=0;
  40. $istnieje=0;
  41. for($i=0; $i<$ile; $i++){
  42. //echo''.$i.' '.$_FILES['img']['name'][$i].'<br/>';
  43. if(!file_exists("".$dir."/".clear_name($_FILES['img']['name'][$i])."")){
  44. if($_FILES['img']['tmp_name'][$i]!='' AND is_uploaded_file($_FILES['img']['tmp_name'][$i]) AND $_FILES['img']['size'][$i]<=$max_rozmiar AND in_array(check_ext($_FILES['img']['name'][$i]),$whitelist)){
  45. move_uploaded_file($_FILES['img']['tmp_name'][$i], "upload/".clear_name($_FILES['img']['name'][$i])."");
  46. echo''.clear_name($_FILES['img']['name'][$i]).' - <font color="green">Pomyslnie wgrany</font><br/>';
  47. $licz++;
  48. }else{
  49. echo''.clear_name($_FILES['img']['name'][$i]).' - <font color="red">Wgrywanie niepomyslne</font><br/>';
  50. }
  51. }else{
  52. echo''.clear_name($_FILES['img']['name'][$i]).' - <font color="red">Juz istnieje</font><br/>';
  53. $istnieje++;
  54. }
  55. }
  56. $nieodpowiednie=$ile-$licz-$istnieje;
  57. <br />
  58. Wszystkich plikow: '.$ile.'<br />
  59. Wgranych pomyslnie: '.$licz.'<br />
  60. Juz istniejacych: '.$istnieje.'<br />
  61. Nieodpowiednich plikow: '.$nieodpowiednie.'<br />
  62. ';
  63. }
  64. ?>
  65.  


Skrypt po poprawkach wygl±da tak.

Lecz nadal nie możemy uporać się z tym, że na jednym hostingu wszystkie pliki s± akceptowane przez formularz a na localu i na drugim hostingu skrypt sie zatrzymuje po otrzymaniu pliku .mp3(niektóre akceptuje, niektore nie oO), zero reakcji, zero informacji na print_r($_POST);
Czym może to być spowodowane ?

PS.dla porównania dwa hostingi
http://adi.zspczarnkow.edu.pl/upload/index.php
http://dupeczkowo.2ap.pl/upload.php
MrLoverLover
Panowie naprawdę nikt nie pomoże?
Adi13089
Naprawdę pomoże kto¶ w tej sprawie ? smile.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.