ugrás a tartalomhoz

Képkezelés elakadtam

aky22 · 2011. Szep. 28. (Sze), 14.43
Hali! Az a problémám, hogy van egy képfeltöltős formom és nem tölti fel a képeket, mert elvileg nem kapja meg a megfelelő paramétereket a move_uploaded_file. Itt a kód:
  1. $sex = $_POST['nem'];  
  2.   
  3. //Create mapp  
  4. $ekezetes=$_POST['vezeteknev'].substr($_POST['keresztnev'], 0, 1);  
  5.                     $mappa=strtolower($ekezetes);  
  6.                     for ($i=0;$i<strlen($mappa);$i++)  
  7.                     {  
  8.                         switch($mappa[$i])  
  9.                         {  
  10.                             case 'á':$mappa[$i]='a';break;  
  11.                             case 'é':$mappa[$i]='e';break;  
  12.                             case 'í':$mappa[$i]='i';break;  
  13.                             case 'ó'case 'ö'case 'ő'$mappa[$i]='o';break;  
  14.                             case 'ú'case 'ü'case 'ű'$mappa[$i]='u';break;  
  15.                             case ' ':$mappa[$i]='_';break;  
  16.                         }  
  17.                     }  
  18.                     chdir('models/'.$sex);  
  19.                     if (@mkdir($mappa))  
  20.                     {  
  21.                         chdir($mappa);  
  22.                         @mkdir('small');  
  23.                     }  
  24.                     else  
  25.                     {  
  26.                         print '<p>A mappa már létezik</p>';   
  27.                     }  
  28. //End creat map  
  29.   
  30.   
  31.   
  32. $file1 = $_FILES['file']['name'][0];  
  33. $file2 = $_FILES['file']['name'][1];  
  34. $file3 = $_FILES['file']['name'][2];  
  35. $file4 = $_FILES['file']['name'][3];  
  36. $file5 = $_FILES['file']['name'][4];  
  37. $file6 = $_FILES['file']['name'][5];  
  38.   
  39. $feltoltve=false;  
  40. $target"models/".$sex."/".$mappa//célmappa  
  41. $file_name = $file1//a célfájlt nevezze el a $_FILES superglobal változóban lévo fájlnévre (a fájl eredeti nevére)  
  42. $tmp_dir = $_FILES['file']['tmp_name'][0]; //az ideiglenes mappa helyét a $tmp_dir változóban tároljuk  
  43.    
  44. if(!preg_match('/(gif|jpe?g|png|bmp)$/i'$file_name)) //ha a fájlnak ($file_name-nek) a kiterjesztése nem gif, jpg/jpeg, png, akkor...  
  45. {  
  46. echo "Rossz fajltipus!"//... "dobjon el" egy hibát  
  47. }  
  48. else  
  49. {  
  50. move_uploaded_file("../".$tmp_dir$target . $file_name); //az ideiglenes mappából átteszi a fájlt a végleges mappába (a $target . $file_name összeilleszti a két stringet, így uploads/fajlnev-et kapunk)  
  51. $feltoltve = true; //a feltoltve változó true értéket kap  
  52. }  
  53. if($feltoltve) {  
  54.     $utvonal = $target . $file_name;  
  55.     echo 'Sikeresen feltöltötted a képet, megnézheted <a href="../'.$utvonal.'">itt</a>!';  
  56. }  
Lécci segítsetek mert én mindjárt felakasztom magam :@
 
1

Form

Poetro · 2011. Szep. 28. (Sze), 14.48
És hol van a form? Lehet abban van a hiba.
2

Azt átnéztem de ha tényleg

aky22 · 2011. Szep. 28. (Sze), 14.58
Azt átnéztem de ha tényleg látni akarod akkor itt van :
  1. <label class="cabinet"><label class="finp_label">'.$lang['PHOTO No.1'].'</label><input type="file" name="file[]" class="file" /></label>  
  2.                         <label class="cabinet"><label class="finp_label">'.$lang['PHOTO No.2'].'</label><input type="file" name="file[]" class="file" /></label>  
  3.                         <label class="cabinet"><label class="finp_label">'.$lang['PHOTO No.3'].'</label><input type="file" name="file[]" class="file" /></label><br />  
  4.                         <label class="cabinet"><label class="finp_label">'.$lang['PHOTO No.4'].'</label><input type="file" name="file[]" class="file" /></label>  
  5.                         <label class="cabinet"><label class="finp_label">'.$lang['PHOTO No.5'].'</label><input type="file" name="file[]" class="file" /></label>  
  6.                         <label class="cabinet"><label class="finp_label">'.$lang['PHOTO No.6'].'</label><input type="file" name="file[]" class="file" /></label><br />  
  7.                         <input type="hidden" name="MAX_FILE_SIZE" value="30000" />  
csak egy része. A maradék kb. 800 sort kihagynám.
3

Így látatlanba

bb0072 · 2011. Szep. 28. (Sze), 15.13
Ez esetleg?
  1. $file1 = $_FILES['file'][0]['name'];    
  2. $file2 = $_FILES['file'][1]['name'];    
  3. $file3 = $_FILES['file'][2]['name'];    
  4. $file4 = $_FILES['file'][3]['name'];    
  5. $file5 = $_FILES['file'][4]['name'];    
  6. $file6 = $_FILES['file'][5]['name'];   
4

nem jó nem működik :/ Amúgy

aky22 · 2011. Szep. 28. (Sze), 15.16
nem jó nem működik :/ Amúgy bocsi azt el felejtettem mondani, hogy van egy .htaccess fájl ami így néz ki :

<IfModule mod_rewrite.c>
RewriteEngine on
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*) $1.php?rewrite=$2 [QSA]
DirectoryIndex index.php
</IfModule>

Ez szabályozza nekem ,hogy az URL-jeim így nézzenek ki : www.valami.hu/jelentkezes/
7

ez is

bb0072 · 2011. Szep. 28. (Sze), 15.20
Erre a sorra is figyelj:
  1. $tmp_dir = $_FILES['file']['tmp_name'][0];  
Szerintem itt sem jó. Azonkívül érdemes lenne egy foreach-al végigmenni a $_FILES['file'] tömbön, és egyenként move-olni. Jelen állapotában nem is igazán értem, hogy mit akar csinálni a kód.
8

Tudom csak tesztelni akartam,

aky22 · 2011. Szep. 28. (Sze), 15.25
Tudom csak tesztelni akartam, hogy egy képet fel tudok e tölteni de nem nagyon akar összejönni :/
5

Általános megoldásként pedig

bb0072 · 2011. Szep. 28. (Sze), 15.17
Általános megoldásként pedig érdemes használni ezt a nagyszerű függvényt: var_dump

Ha sok file-t töltesz föl, akkor nagyon érdemes figyelni a php configban a post_max_size és az upload_max_filesize értékekre. Egyik file sem lehet nagyobb, mint az upload_max_filesize és az egész postolt cucc meg nem lehet nagyobb. mint a post_max_size.
6

var_dump-ot már próbáltam

aky22 · 2011. Szep. 28. (Sze), 15.19
var_dump-ot már próbáltam amúgy pedig direkt egy 1mb-os fájlt töltök fel ami azért nem 3
9

szerintem itt a baj $tmp_dir

szabo.b.gabor · 2011. Szep. 30. (P), 09.00
szerintem itt a baj
  1. $tmp_dir = $_FILES['file']['tmp_name'][0];  
  2. // stb..  
  3. move_uploaded_file("../".$tmp_dir$target . $file_name);  
a $tmp_dir-ben egy abszolut elérési út van (gondolom) és elé raksz egy '../'-t. ez így nem kerek
10

Igen azt már kiszedtem. Itt a

aky22 · 2011. Szep. 30. (P), 18.04
Igen azt már kiszedtem. Itt a jelenlegi állása a kódnak:
  1. $feltoltve=false;  
  2.     foreach ($_FILES['file']['name'as $filen)  
  3.     {  
  4.         $file_name = $filen//a célfájlt nevezze el a $_FILES superglobal változóban lévo fájlnévre (a fájl eredeti nevére)      
  5.     }  
  6.         if(!preg_match('/(gif|jpe?g|png|bmp)$/i'$file_name)) //ha a fájlnak ($file_name-nek) a kiterjesztése nem gif, jpg/jpeg, png, akkor...  
  7.         {  
  8.         echo "Rossz fájltípus!"//... "dobjon el" egy hibát  
  9.         }  
  10.         else  
  11.         {  
  12.             foreach ($_FILES['file']['tmp_name'as $file)  
  13.             {  
  14.                 $tmp_dir = $file//az ideiglenes mappa helyét a $tmp_dir változóban tároljuk  
  15.             }  
  16.             $target="models/".$sex."/".$mappa."/"//célmappa  
  17.             move_uploaded_file($tmp_dir$target . $file_name); //az ideiglenes mappából átteszi a fájlt a végleges mappába (a $target . $file_name összeilleszti a két stringet, így uploads/fajlnev-et kapunk)  
  18.         }  
  19.     $feltoltve = true; //a feltoltve változó true értéket kap  
  20.         if($feltoltve) {  
  21.             $utvonal = $target . $file_name;  
  22.             echo 'Sikeresen feltöltötted a képet, megnézheted <a href="'.$utvonal.'">itt</a>!';  
  23.         }  
Ez pedig a jelenlegi hiba:
  1. Notice: Undefined variable: target in C:\wampjo\www\vinki\balatonfashing\reg.php on line 72  
12

Ez pedig a jelenlegi hiba:

Pepita · 2011. Okt. 2. (V), 17.18
Melyik sorban? A te gépeden a 72, de itt?
Vhogy nem jól néz ki a kód, az eredetiben is ilyen? (Megjegyzésben is vannak utasítások)
A hibaüzi: nem definiált "target" nevű változó a 72. sorban, vagyis hivatkoztál rá, de nem volt értéke. Ez csak php figyelmeztetés, de gondolkodj rajta.
Más: fenti tördelés miatt én nemigazán látom át a kódot, de fájlt feltölteni én úgy szoktam, hogy a $_FILES['file']['name'] -ből a basename() fv-el kiveszem a "szűz" fájlnevet, ezelé teszem a könyvtáradatokat, aztán mehet a move_uploaded_file().
Lehet, hogy tévedtem, de most nincs a közelemben konkrétum.
13

Bocsi igen ez csak egy

aky22 · 2011. Okt. 2. (V), 17.23
Bocsi igen ez csak egy részlet a kódból. Amúgy ha olvasod lejjebb már rájöttem a hibára csak nem tudom megoldani és amúgy a kódom se így néz ki már. Jelenleg azon vagyok hogy Sessionnel megoldom de az sem nagyon akar összejönni :/
14

OK

Pepita · 2011. Okt. 2. (V), 18.38
OK, de mi az a hiba, hol az új kód, vagy ha nem érdekes, miért írtad: please help?
11

Rájöttem a hibára de nem

aky22 · 2011. Okt. 2. (V), 16.41
Rájöttem a hibára de nem tudom megoldani. Ugye én egy mappát is létrehozok az elején ahova bele kéne raknia a képeket. Na most amíg a mappa nincsen kész addig nem tudja feltölteni a képeket. Megpróbáltam úgy, hogy két fájlba raktam a mappa készítést és a képfeltöltést, de úgy meg nem tölt föl, mert nem tudom átadni neki a $_FILES tömböt. Lécci adjatok valami használható ötletet (nem kódot!). Az is jó lenne ha AJAXAL valahogy meg lehetne oldani de ahhoz meg nem értek annyira ráadásul a mappák neve a keresztnév és a vezetéknév párosából áll össze. Please HELP!!!