Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Resize obrazka, i uaktualnianie bazy
daggerski
post 3.12.2011, 19:16:37
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 29.12.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
amii
post 3.12.2011, 19:43:16
Post #2





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

Ostrzeżenie: (0%)
-----


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


--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
Go to the top of the page
+Quote Post
daggerski
post 3.12.2011, 21:36:08
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 29.12.2010

Ostrzeżenie: (0%)
-----


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?

Ten post edytował daggerski 4.12.2011, 11:41:08
Go to the top of the page
+Quote Post
amii
post 4.12.2011, 13:00:14
Post #4





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

Ostrzeżenie: (0%)
-----


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.


--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
Go to the top of the page
+Quote Post
daggerski
post 4.12.2011, 14:37:21
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 29.12.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 23:33