Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Resize obrazka, i uaktualnianie bazy
Forum PHP.pl > Forum > Przedszkole
daggerski
Witam mam taki oto plik, który służy do resizowania zdjęcia i dodawania nazwy i opisu do bazy danych:

  1. <?php
  2. include 'db.php';
  3. ?>
  4.  
  5. <html>
  6. <head>
  7. <link rel="stylesheet" href="style.css" type="text/css" />
  8. </head>
  9. <body>
  10. <form action="krzewy.php" method="post" enctype="multipart/form-data" >
  11. <input type="hidden" name="regEnd" value="true">
  12.  
  13. Nazwa&nbsp <input type="text" name="nazwa" maxlength="32"><br>
  14. Ilosc&nbsp&nbsp&nbsp &nbsp<input type="text" name="ilosc" maxlength="3"> <br>
  15. opis &nbsp&nbsp&nbsp&nbsp&nbsp<input type="text" class="opis" name="opis" maxlength="32423423423"> <br>
  16. Zdjecie&nbsp<input name="plik" type="file" /> <br>
  17. <input type="submit" value="Dodaj rosline">
  18. </form>
  19.  
  20.  
  21.  
  22. <?php
  23.  
  24. $plik_tmp = $_FILES['plik']['tmp_name'];
  25. $plik_nazwa = $_FILES['plik']['name'];
  26. $plik_rozmiar = $_FILES['plik']['size'];
  27.  
  28. if(is_uploaded_file($plik_tmp)) {
  29. move_uploaded_file($plik_tmp, "$plik_nazwa");
  30.  
  31. if(exif_imagetype($plik_nazwa) == IMAGETYPE_JPEG){
  32. $img_src = imagecreatefromjpeg($plik_nazwa);
  33. $koncowka = '.jpg';
  34. }elseif(exif_imagetype($plik_nazwa) == IMAGETYPE_GIF){
  35. $img_src = imagecreatefromgif($plik_nazwa);
  36. $koncowka = '.gif';
  37. }elseif(exif_imagetype($plik_nazwa) == IMAGETYPE_PNG){
  38. $img_src = imagecreatefrompng($plik_nazwa);
  39. $koncowka = '.png';
  40. }else{
  41. die('Zły format zdjęcia. Akceptowane formaty to JPG, GIF oraz PNG');
  42. }
  43. $image_x = imagesx($img_src);
  44. $image_y = imagesy($img_src);
  45. $quality = 94;
  46. $dest_width = 305;
  47. $dest_height = 290;
  48. $dst_img = imagecreatetruecolor($dest_width,$dest_height);
  49. imagecopyresampled($dst_img, $img_src, 0, 0, 0, 0, $dest_width, $dest_height, $image_x, $image_y);
  50. $nazwa = (uniqid(1) . $koncowka);
  51. imagejpeg($dst_img, "$nazwa", $quality);
  52. imagedestroy($img_src);
  53. imagedestroy($dst_img);
  54. }
  55.  
  56. $nazwaa = $_POST['nazwa'];
  57. $ilosc = $_POST['ilosc'];
  58. $opis = $_POST['opis'];
  59.  
  60.  
  61.  
  62.  
  63. if($_POST["regEnd"]=="true")
  64. {
  65.  
  66.  
  67. if(!$_POST["nazwa"] OR !$_POST["ilosc"] OR !$_POST["opis"])
  68. {
  69. print"Error: Nie wypełniłeœ wszystkich pól! Proszę uzupełnij brakujšce!";
  70. }
  71. else
  72. {
  73.  
  74.  
  75. mysql_query("INSERT INTO krzewy (nazwa, ilosc, opis, zdjecie) VALUES('$nazwaa', '$ilosc',
  76. '$opis', '$nazwa')");
  77.  
  78. echo("Nowa roslinka dodana:");
  79.  
  80. }
  81. }
  82. ?>
  83.  
  84. <a href="../index.php" alt="lala"><< Powrót do panelu</a>
  85.  
  86.  
  87. </body>
  88. </html>
  89.  


Pojawia się dziwny problem, ponieważ na moim serverze roboczym wszystko działa jak należy, jednak na serverze klienta (home.pl) coś jest nie tak z obrazkiem, nie uploaduje się on na stronę przez co nie chce się resizować i dodać do bazy danych. Generalnie to wszystko jest idealnie tak samo, jedyna różnica jest taka, że na moim serverze tabela ma strukturę 'NULL TAK' , 'DOMYŚLNIE NULL' a w bazie klietna ma 'NULL NIE', 'DOMYŚLNIE ŻADEN' ale raczej nie powinno to mieć znaczenia, w phpinfo widnieje wpis że jest włączony exif, który obsługuje typ JPEG i TIFF.

Pozdrawiam
amii
Jak w php.ini masz ustawione: file_uploads
Jak nie masz dostępu spróbuj ustawić:
http://php.net/manual/en/function.ini-set.php
lub w .htaccess
php_value file_uploads On
daggerski
W phpinfo widnieje iż file_uploads jest na ON, analogicznie dodanie php_value file_uploads On do .htaccess niestety nie pomogło.



E: jakies pomysly?
E2: czy naprawdę nikt nie ma żadnych sugestii?
amii
Pomóż i ty nam trochę czyli:
Włącz sprawdzanie błędów (toż to podstawa) chociażby tu:
1.
  1. mysql_query("INSERT INTO krzewy (nazwa, ilosc, opis, zdjecie) VALUES('$nazwaa', '$ilosc',
  2. '$opis', '$nazwa')") or die('Wystąpił błąd o treści : ' .mysql_error());

2. Na początku pliku:
  1. ini_set('display_errors', TRUE);
  2. ini_set('display_startup_errors', TRUE);

3. Tutaj masz if(is_uploaded_file($plik_tmp)) {//..jakis kod } a gdzie else i potencjalny komunikat o błędzie?
4. To powinno być znowu w if-e if (move_uploaded_file($plik_tmp, "$plik_nazwa")) {//dalszy kod przetwarzający}
else {
/komunikat o błędzie
}
5. Tu masz obsługę błędów uploadu
http://pl2.php.net/manual/en/features.file-upload.errors.php
6. I jeszcze na koniec cytat z manula:
Cytat
move_uploaded_file() is both safe mode and open_basedir aware. However, restrictions are placed only on the destination path as to allow the moving of uploaded files in which filename may conflict with such restrictions. move_uploaded_file() ensures the safety of this operation by allowing only those files uploaded through PHP to be moved.
daggerski
Dziękuje za odpowiedź, problem już zażegnany - zmieniłem trochę kod, tak aby przy każdym if'ie był else i informował o błędzie, do ifa z wysyłaniem pliku w elsie dodałem print_r($_FILES); skąd dowiedziałem się, że przy wysyłaniu występuje błąd z numerkiem 6 czyli "UPLOAD_ERR_NO_TMP_DIR Value: 6; Missing a temporary folder. Introduced in PHP 4.3.10 and PHP 5.0.3."

Potem popatrzyłem do internetu i okazało się, że mając hosting w home.pl należy ręcznie zrobić ten folder tmp.

Może komuś się to rozwiązanie przyda w przyszłości. Pozdrawiam
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.