Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z wysyłaniem jpgów na serwer
Forum PHP.pl > Forum > Przedszkole
Age1869
Otóż coś nie działa i nie wiem niestety, co...

  1. $connect = mysql_connect("$DatabaseHost","$DatabaseUserName","$DatabasePassword")
  2. or die(Go_Error(mysql_errno()));
  3.  
  4. $db = mysql_select_db($DatabaseName, $connect)
  5. or die(Go_Error(mysql_errno()));
  6.  
  7.  
  8. if ($autor)
  9.  
  10. {
  11.  
  12.  
  13. $do_bazy = mysql_query("INSERT INTO `grafika` (`autor`, `tytul`, `opis`, `adres`) VALUES ('$autor', '$tytul', '$opis', '$adres')", $connect)
  14. or die(Go_Error(mysql_errno()));
  15.  
  16. }
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23. $location = '/home/.../domains/.../public_html/.../' . basename($_FILES['userfile']['name']);
  24. function zapisz_plik()
  25. {
  26.  
  27. if(is_uploaded_file($_FILES['userfile']['tmp_name']))
  28. {
  29. if(!move_uploaded_file($_FILES['userfile']['tmp_name'], $location))
  30. {
  31. echo 'problem: Nie udało się skopiować pliku do katalogu.';
  32. return false;
  33. }
  34. }
  35. else
  36. {
  37. echo 'problem: Możliwy atak podczas przesyłania pliku.';
  38. echo 'Plik nie został zapisany.';
  39. return false;
  40. }
  41. return true;
  42. }
  43.  
  44. $adres=$_FILES['userfile']['name'];
  45. $autor=$_POST['autor'];
  46. $tytul=$_POST['tytul'];
  47. $opis=$_POST['opis'];
  48.  
  49.  
  50.  
  51. function sprawdz_bledy()
  52. {
  53. if ($_FILES['userfile']['error'] > 0)
  54. {
  55. echo 'problem: ';
  56. switch ($_FILES['userfile']['error'])
  57. {
  58. // jest większy niż domyślny maksymalny rozmiar,
  59. // podany w pliku konfiguracyjnym
  60. case 1: {echo 'Rozmiar pliku jest zbyt duży.'; break;}
  61.  
  62. // jest większy niż wartość pola formularza
  63. // MAX_FILE_SIZE
  64. case 2: {echo 'Rozmiar pliku jest zbyt duży.'; break;}
  65.  
  66. // plik nie został wysłany w całości
  67. case 3: {echo 'Plik wysłany tylko częściowo.'; break;}
  68.  
  69. // plik nie został wysłany
  70. case 4: {echo 'Nie wysłano żadnego pliku.'; break;}
  71.  
  72. // pozostałe błędy
  73. default: {echo 'Wystąpił błąd podczas wysyłania.';
  74. break;}
  75. }
  76. return false;
  77. }
  78. return true;
  79. }
  80.  
  81.  
  82.  
  83. function sprawdz_typ()
  84. {
  85. if ($_FILES['userfile']['type'] != 'image/jpeg')
  86. return false;
  87. return true;
  88. }
  89.  
  90.  
  91.  
  92. ?>
  93.  
  94. <form enctype="multipart/form-data" method="POST">
  95. <input type="hidden" name="MAX_FILE_SIZE" value="500000" /> /* maksymalna wielkosc pliku w bajtach */
  96. Plik do wyslania: <input name="userfile" type="file" /><br />
  97. Autor: <input type="text" size="55" name="autor"><br />
  98. Opis: <TEXTAREA name="opis" rows="10" cols="51" wrap="virtual"></TEXTAREA><br />
  99. Tytul: <input type="text" size="55" name="tytul"><br />
  100. <input type="submit" value="Wyslij" />
  101. </form>


Wywala mi błąd:

  1. Fatal error: Call to undefined function Go_Error() in /home/.../domains/.../public_html/.../upload_zdjecia.php on line 20


Z góry dziękuję za pomoc!
Ghost_78
blad jasno mowi ze nie mozna odnalezc funkcji:

zamien:
  1. or die(Go_Error(mysql_errno()));


na:
Age1869
Błędu już nie wyrzuca, ale dalej nie wysyła pliku sad.gif Po kliknięciu wyślij wyrzuca białą stronę
Ghost_78
zobacz na to:
  1. function sprawdz_typ(){
  2. if ($_FILES['userfile']['type'] != 'image/jpeg')
  3. return false;
  4. return true;
  5. }

to zawsze zwraca false - nawet jak to jest JPG
popraw na:
  1. function sprawdz_typ(){
  2. if ($_FILES['userfile']['type'] != 'image/jpeg')
  3. return false;
  4. else
  5. return true;
  6. }
Age1869
Dalej bez zmian.
Ghost_78
pokaz jak teraz wyglada caly kod
a poza tym to tak u Ciebie wyglada sciezka?
  1. $location = '/home/.../domains/.../public_html/.../' . basename($_FILES['userfile']['name']);

czy to tylko na potrzeby postu taka podales ?
Age1869
tak, te kropeczki to tylko na potrzeby postu podałem :-)

Skrypt ogólnie działał dobrze dopóki nie dodałem:
  1. function zapisz_plik()
  2. function sprawdz_bledy()
  3. function sprawdz_typ()


Cały kod teraz:

  1. <?php
  2. $DatabaseUserName = "xxx"; // MySQL database username.
  3. $DatabasePassword = "xxx"; // MySQL database password.
  4. $DatabaseName = "xxx"; // MySQL database name.
  5. $DatabaseHost = "localhost"; // MySQL database hostname.
  6.  
  7. $connect = mysql_connect("$DatabaseHost","$DatabaseUserName","$DatabasePassword")
  8. or die(Go_Error(mysql_errno()));
  9.  
  10. $db = mysql_select_db($DatabaseName, $connect)
  11. or die(Go_Error(mysql_errno()));
  12.  
  13.  
  14. if ($autor)
  15.  
  16. {
  17.  
  18.  
  19. $do_bazy = mysql_query("INSERT INTO `grafika` (`autor`, `tytul`, `opis`, `adres`) VALUES ('$autor', '$tytul', '$opis', '$adres')", $connect)
  20.  
  21. }
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28. $location = '/home/xxx/domains/xxx/public_html/xxx/grafika/' . basename($_FILES['userfile']['name']);
  29. function zapisz_plik()
  30. {
  31.  
  32. if(is_uploaded_file($_FILES['userfile']['tmp_name']))
  33. {
  34. if(!move_uploaded_file($_FILES['userfile']['tmp_name'], $location))
  35. {
  36. echo 'problem: Nie udało się skopiować pliku do katalogu.';
  37. return false;
  38. }
  39. }
  40. else
  41. {
  42. echo 'problem: Możliwy atak podczas przesyłania pliku.';
  43. echo 'Plik nie został zapisany.';
  44. return false;
  45. }
  46. return true;
  47. }
  48.  
  49. $adres=$_FILES['userfile']['name'];
  50. $autor=$_POST['autor'];
  51. $tytul=$_POST['tytul'];
  52. $opis=$_POST['opis'];
  53.  
  54.  
  55.  
  56. function sprawdz_bledy()
  57. {
  58. if ($_FILES['userfile']['error'] > 0)
  59. {
  60. echo 'problem: ';
  61. switch ($_FILES['userfile']['error'])
  62. {
  63. // jest większy niż domyślny maksymalny rozmiar,
  64. // podany w pliku konfiguracyjnym
  65. case 1: {echo 'Rozmiar pliku jest zbyt duży.'; break;}
  66.  
  67. // jest większy niż wartość pola formularza
  68. // MAX_FILE_SIZE
  69. case 2: {echo 'Rozmiar pliku jest zbyt duży.'; break;}
  70.  
  71. // plik nie został wysłany w całości
  72. case 3: {echo 'Plik wysłany tylko częściowo.'; break;}
  73.  
  74. // plik nie został wysłany
  75. case 4: {echo 'Nie wysłano żadnego pliku.'; break;}
  76.  
  77. // pozostałe błędy
  78. default: {echo 'Wystąpił błąd podczas wysyłania.';
  79. break;}
  80. }
  81. return false;
  82. }
  83. return true;
  84. }
  85.  
  86.  
  87.  
  88. function sprawdz_typ()
  89. {
  90. if ($_FILES['userfile']['type'] != 'image/jpeg')
  91.  
  92. return false;
  93.  
  94. else
  95. return true;
  96. }
  97.  
  98.  
  99.  
  100. ?>
  101.  
  102. <form enctype="multipart/form-data" method="POST">
  103. <input type="hidden" name="MAX_FILE_SIZE" value="500000" /> /* maksymalna wielkosc pliku w bajtach */
  104. Plik do wyslania: <input name="userfile" type="file" /><br />
  105. Autor: <input type="text" size="55" name="autor"><br />
  106. Opis: <TEXTAREA name="opis" rows="10" cols="51" wrap="virtual"></TEXTAREA><br />
  107. Tytul: <input type="text" size="55" name="tytul"><br />
  108. <input type="submit" value="Wyslij" />
  109. </form>
Ghost_78
hmmm - jeszcze tylko nie widze wywolania nigdzie tych funkcji.
gdzie je uruchamiasz questionmark.gif
Age1869
Fakt, się zapomniałem. Dodałem tak:

  1. if ($autor)
  2.  
  3. {
  4. sprawdz_typ();
  5. sprawdz_bledy();
  6.  
  7.  
  8. $do_bazy = mysql_query("INSERT INTO `grafika` (`autor`, `tytul`, `opis`, `adres`) VALUES ('$autor', '$tytul', '$opis', '$adres')", $connect)
  9. zapisz_plik();
  10. }


Nie pomaga
Ghost_78
straszny masz balagan w tym kodzie
zobacz ze do zmiennej $autor wartosc przypisujesz po sprawdzeniu IF

masz tu prawie gotowe - sprawdz co wyjdzie
  1. <?php
  2. $DatabaseUserName = "xxx"; // MySQL database username.
  3. $DatabasePassword = "xxx"; // MySQL database password.
  4. $DatabaseName = "xxx"; // MySQL database name.
  5. $DatabaseHost = "localhost"; // MySQL database hostname.
  6.  
  7. $adres=$_FILES['userfile']['name'];
  8. $autor=$_POST['autor'];
  9. $tytul=$_POST['tytul'];
  10. $opis=$_POST['opis'];
  11.  
  12. function zapisz_plik()
  13. {
  14.  
  15. if(is_uploaded_file($_FILES['userfile']['tmp_name']))
  16. {
  17. if(!move_uploaded_file($_FILES['userfile']['tmp_name'], $location))
  18. {
  19. echo 'problem: Nie udało się skopiować pliku do katalogu.';
  20. return false;
  21. }
  22. }
  23. else
  24. {
  25. echo 'problem: Możliwy atak podczas przesyłania pliku.';
  26. echo 'Plik nie został zapisany.';
  27. return false;
  28. }
  29. return true;
  30. }
  31.  
  32.  
  33. function sprawdz_bledy(){
  34. if ($_FILES['userfile']['error'] > 0){
  35. echo 'problem: ';
  36. switch ($_FILES['userfile']['error']){
  37. // jest większy niż domyślny maksymalny rozmiar,
  38. // podany w pliku konfiguracyjnym
  39. case 1: {echo 'Rozmiar pliku jest zbyt duży.'; break;}
  40.  
  41. // jest większy niż wartość pola formularza
  42. // MAX_FILE_SIZE
  43. case 2: {echo 'Rozmiar pliku jest zbyt duży.'; break;}
  44.  
  45. // plik nie został wysłany w całości
  46. case 3: {echo 'Plik wysłany tylko częściowo.'; break;}
  47.  
  48. // plik nie został wysłany
  49. case 4: {echo 'Nie wysłano żadnego pliku.'; break;}
  50.  
  51. // pozostałe błędy
  52. default: {echo 'Wystąpił błąd podczas wysyłania.';
  53. break;}
  54. }
  55. return false;
  56. }
  57. return true;
  58. }
  59.  
  60.  
  61.  
  62. function sprawdz_typ(){
  63. if ($_FILES['userfile']['type'] != 'image/jpeg')
  64. return false;
  65. else
  66. return true;
  67. }
  68.  
  69.  
  70.  
  71. if ($autor){
  72.  
  73. if (!sprawdz_typ()) exit('Błędny typ');
  74. if (!sprawdz_bledy()) exit();
  75.  
  76. $connect = mysql_connect("$DatabaseHost","$DatabaseUserName","$DatabasePassword") or die(mysql_errno());
  77. $db = mysql_select_db($DatabaseName, $connect) or die(mysql_errno());
  78. $do_bazy = mysql_query("INSERT INTO `grafika` (`autor`, `tytul`, `opis`, `adres`) VALUES ('$autor', '$tytul', '$opis', '$adres')", $connect) or die(mysql_errno());
  79.  
  80. if (zapisz_plik()) exit('nie zapisano pliku);
  81. }
  82.  
  83.  
  84. $location = '/home/xxx/domains/xxx/public_html/xxx/grafika/' . basename($_FILES['userfile']['name']);
  85.  
  86.  
  87.  
  88. ?>
  89.  
  90. <form enctype="multipart/form-data" method="POST">
  91. <input type="hidden" name="MAX_FILE_SIZE" value="500000" /> /* maksymalna wielkosc pliku w bajtach */
  92. Plik do wyslania: <input name="userfile" type="file" /><br />
  93. Autor: <input type="text" size="55" name="autor"><br />
  94. Opis: <TEXTAREA name="opis" rows="10" cols="51" wrap="virtual"></TEXTAREA><br />
  95. Tytul: <input type="text" size="55" name="tytul"><br />
  96. <input type="submit" value="Wyslij" />
  97. </form>
  98.  
Age1869
Dodałem ' w ostatnim exit, gdzie zapomniałeś i wrzuciłem na serwer (uzupełniając odpowiednie zmienne). Niestety dalej nie działa.
Ghost_78
i nic nie wyswietla ?
i jeszcze podaj gidze dales exit() bo jak dla mnie to wszedzie byly
Age1869
wkleiłem tą Twoją wersję i w ostatnim exit zapomniałeś zamknąć apostrof (czy jak to się zwie...) to go zamknąłem i tyle.

Teraz wyrzuca:

  1. Warning: move_uploaded_file() [function.move-uploaded-file]: open_basedir restriction in effect. File() is not within the allowed path(s): (/home/xxx/:/tmp:/usr/local/lib/php/:/usr/sbin/:/usr/bin/:/usr/local/bin/:/usr/local/sbin/:/bin/:/sbin/) in /home/xxx/domains/xxx.pl/public_html/upload_zdjecia.php on line 17
Ghost_78
jak zwykle odpowiedz zawarta w bledzie: masz zle ustawione uprawnienia do katalogu w ktorym chcesz zapisywac dane
ustaw sobie na 777 i z glowy
user767
czasami pomagało zamiana userfile na inną nazwę.
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.