Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]$_FILES
Forum PHP.pl > Forum > Przedszkole
maxis88
Witam. Mam taki dziwny problem ... w jednej z funkcji do wysyłania plikow na serwer formularz dziala ok i pliki są wysyłane zgodnie z tym jak sobie to zaplanowałem... jednak kiedy skopiowałem ten sam formularz do innego pliku w celu wysyłki avatara do swojego profilu to kod staje na warunku
  1. if(isset($_FILES['uploaded']))
gdzie oczywiscie "uploaded" to nazwa zmiennej w inpucie typu file ( zresztą działa to w poprzednim formularzu)...
Jak się można domysleć przyczyna jest nie przekazywanie zmiennej w tablicy $_FILES i bladego pojęcia nie mam dlaczego to nie działa skoro to ten sam kod... bo nawet gdybym pominął jakąś zmienną to wywaliłoby błąd a tak właściwie to nic się nie dzieje / nie wyświetla, strona ładuje się jak by się tylko odświeżyla ( za sprawą action="$PHP_SELF" )

dodam że jeśli zmienie z $_FILES['uploaded'] na $_POST['uploaded'] to przekazuje tą zmienną z nazwą pliku ale to mnie średnio zadowala haha.gif
czyli formularz w jakis tam sposob działa...

kodu nie za bardzo jest sens wysylac bo jest ro rozstrzelone po całym pliku ale od funkcji o której wspomniałem zaczyna się cala procedura zapisywania pliku na serwerze i w bazie danych...
chemik1982
Na moje brakuje Ci w <form> enctype="multipart/form-data".
maxis88
  1. echo "<form enctype='multipart/form-data' action='$PHP_SELF?next=$next' method='POST'>
  2.  
  3. <input name='uploaded' type='file'/>
  4.  
  5.  
  6. <input type='submit' value='Wyslij'/>
  7. </form></center>";
  8.  
  9.  
  10.  

więc raczej nie brakuje ;P
piotrooo89
a gdzie masz MAX_FILE_SIZE? zrób print_r($_FILES) i pokaż co wyrzuca.
maxis88
print_r($_FILES) daje Array()
nospor
a nie dales przypadkiem tego forma w srodek innego forma?

pokaz caly kod, albo najlepiej pokaz wygenerowane źródło, albo najlepiej daj linka do strony smile.gif
piotr94
z tego co napisałeś powinno działać ok,
a wartości MAX_FILE_SIZE nie są obowiązkowe ;-P
chemik1982
Ustaw opcje:
- upload_max_filesize
- post_max_size

na odpowiednie wartości w php.ini lub poprzez ini_set() w skrypcie.
Być może za duży plik wysyłasz.
maxis88
poniżej funkcja po której uruchomieniu wszystko działa jak należy ...

  1.  
  2. function wyslij_forme($kategoria='Pozostale'){
  3. global $PHP_SELF, $dbpass, $dbhost, $dbuser, $domyslna_db;
  4. $wynik=0;
  5.  
  6. $kat=array('Pozostale', 'Natura', 'Zwierzeta', 'Krajobrazy', 'Samochody', 'Milosne', 'Smieszne', 'Extreme', 'Horror', 'Tekstury', 'Gry', 'Aktorki', 'Aktorzy', 'Film', 'Muzyka', 'Sport');
  7. $i=1;
  8. echo"<center>";
  9. foreach($kat as $ind=>$kat2){
  10. if(!is_dir($kat2)) {
  11. @mkdir('./obrazy/'.$kat2, 0777);
  12. }
  13. if($i==12){echo"<br />";$i=1;}
  14. echo" || <a href=\"$PHP_SELF?next=galeria.php&kategoria=$kat2\" style='text-decoration:none; font-size:12; color:white'> $kat2 ( ";oblicz($kat2);echo" ) </a>";$i++;
  15. }
  16. echo"</center><br /><br />";
  17. $kategoria=$_POST['kategoria'];
  18. $id=mysql_connect($dbhost, $dbuser, $dbpass);
  19. mysql_select_db($domyslna_db);
  20. $wierszy=mysql_query("SELECT * FROM obraz");
  21. $wierszy2=mysql_num_rows($wierszy);
  22.  
  23. if(isset($_FILES['uploaded'])){
  24. $plik=basename($_FILES['uploaded']['name']);
  25. $nazwa=explode(".", $plik);
  26. $target = "obrazy/".$kategoria."/".$wierszy2.".".$nazwa[1] ;
  27.  
  28. $file_size = $_FILES['uploaded']['size'];
  29. $size_kb=$file_size/1024;
  30. $max_size=300;
  31.  
  32. if($size_kb>$max_size){die ("Plik nie może przekraczać 300kB.");}
  33. else if($size_kb<$max_size){
  34. if($nazwa[1]=="jpg" //sprawdzanie rozszerzenia
  35. or $nazwa[1]=="JPG"
  36. or $nazwa[1]=="JPEG"
  37. or $nazwa[1]=="jpeg"
  38. or $nazwa[1]=="gif"
  39. or $nazwa[1]=="GIF"){
  40. if(move_uploaded_file($_FILES['uploaded']['tmp_name'],$target))
  41. echo"<font size=\"5\" color=darkblue>
  42. <br /><center>Obrazek pomyślnie dodany do galerii!</center></font><br />";}
  43. else {die("Niedozwolony format pliku!");}
  44. }
  45. $wynik=1;
  46. $godzina=date(H)+9;
  47. $data=$godzina.date(":i:s, ").date(" d.m.Y");
  48. $autor=$_POST['autor'];
  49. $autor=HTMLSpecialChars($autor);
  50.  
  51. if($wynik==1){
  52. $id=mysql_connect($dbhost, $dbuser, $dbpass);
  53. if(!mysql_select_db($domyslna_db)) echo "Nie można otworzyć bazy danych";
  54. if(!mysql_query("INSERT INTO obraz VALUES('id',
  55. '$target',
  56. '$autor',
  57. '$data',
  58. '$kategoria')"))
  59. die(sql_error());
  60. }
  61. }
  62. elseif($_COOKIE['uprawnienia']!=''){
  63. $next=$_GET['next'];
  64. $login=$_COOKIE['login'];
  65. echo "<center>
  66. <font size=\"4\"><b>
  67.  
  68. Wyslij zdjęcie(max 300kB):
  69.  
  70. </b></font><br />
  71. <form enctype='multipart/form-data' action='$PHP_SELF?next=$next' method='POST'>";
  72.  
  73. echo "<input name='uploaded' type='file'/>
  74.  
  75.  
  76.  
  77. Autor:
  78.  
  79. <input type=\"text\" name=autor value=$login size='12' disabled='disabled'>
  80. <input type=\"hidden\" name=autor value=$login size='12'>
  81. <select name=kategoria>";
  82. foreach($kat as $ind=>$kat2){
  83. echo"<option value=\"$kat2\">$kat2</option>";}
  84. </select>
  85.  
  86. <input type='submit' value='Wyslij'/>
  87. </form></center>";
  88.  
  89.  
  90. }else echo"<center><br /><br />Zaloguj się aby móc dodawać zdjęcia</center>";
  91.  
  92. }
  93.  
  94.  
  95.  
  96.  




i tak troche na moje usprawiedliwienie ;P WIEM- że mam bałagan w kodzie ale zajmę się tym jak już zrobie co zaplanowałem haha.gif

i to co z niego skopiowałem / zmieniłem:
  1. print_r($_FILES);
  2. if(isset($_FILES['uploaded'])){
  3.  
  4. $plik=basename($_FILES['uploaded']['name']);
  5. $nazwa=explode(".", $plik);
  6. if(!is_dir("zdjecia")) {
  7. @mkdir('./obrazy/zdjecia', 0777);
  8. }
  9. $target = "obrazy/zdjecia".$_COOKIE['login'].".".$nazwa[1] ;
  10.  
  11. $file_size = $_FILES['uploaded']['size'];
  12. $size_kb=$file_size/1024;
  13. $max_size=300;
  14.  
  15. if($size_kb>$max_size){die ("Plik nie może przekraczać 300kB.");}
  16. else if($size_kb<$max_size){
  17. if($nazwa[1]=="jpg" //sprawdzanie rozszerzenia
  18. or $nazwa[1]=="JPG"
  19. or $nazwa[1]=="JPEG"
  20. or $nazwa[1]=="jpeg"
  21. or $nazwa[1]=="gif"
  22. or $nazwa[1]=="GIF"){
  23. if(move_uploaded_file($_FILES['uploaded']['tmp_name'],$target))
  24. echo"<font size=\"5\" color=darkblue>
  25. <br /><center>Obrazek pomy?lnie dodany do profilu.</center></font><br />";
  26. $zdjecie=mysql_query("UPDATE guests SET fotka='$target' WHERE nick='$login'");
  27. }
  28. else {die("Niedozwolony format pliku!");}
  29. }
  30. }
  31.  
  32.  
  33.  
  34.  
  35. }
  36. $next=$_GET['next'];
  37. echo "<form enctype='multipart/form-data' action='$PHP_SELF?next=$next' method='POST'>
  38.  
  39. <input name='uploaded' type='file'/>
  40.  
  41.  
  42.  
  43. <input type='submit' value='Wyslij'/>
  44. </form></center>";
  45.  


Cytat(chemik1982 @ 13.11.2009, 11:55:55 ) *
Ustaw opcje:
- upload_max_filesize
- post_max_size

na odpowiednie wartości w php.ini lub poprzez ini_set() w skrypcie.
Być może za duży plik wysyłasz.


raczej nie mogę edytować ustawień php.ini ( tak mi sie wydaje ) jesli to nie jest mój serwer...
a jeśli chodzi o plik to nawet nie przekracza 100 kB wiec to nie o to chodzi ... bo i zdjęcia w dobrze działającym skrypcie wysyłalem większe i działało ...

ehh faktycznie nie zamknąłem poprzedniego forma ... dzięki za uwagę winksmiley.jpg
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-2024 Invision Power Services, Inc.