ugrás a tartalomhoz

php-html form hiba

Pisti20 · 2010. Nov. 28. (V), 17.48
Hali!

Akadt egy kis problémám, nem látom hol a hiba, pls segítsetek.
Annyi a gond hogy van egy formom amiben egy file feltöltés, de a $_FILE[] üres.
<form method="POST" enctype="multipart/form-data" action="<?php echo($_SERVER['PHP_SELF']); ?>">

<tr><td>Termék képe:</td><td><input type="file" name="kep" /></td></tr>

<?php
if (isset($_POST[submit])){
$cim=$_POST[cim];
$leiras=$_POST[leiras];
$kategoria=$_POST[kategoria];
$file=$_FILES['kep']['name'];
print("kép:".$file);
}
?>

a gond az, hogy a $_FILE[]-n kívül, minden megkapja az értékét.

ha van valami 5let pls írjátok meg.
a táblázat minden sorát nem raktam be, formaság, csak azt ami érintett lehet a dologban.

A form
"http://localhost/oazis/admin_panel/index.php?page=felvitel"
ezen a linken kerül includolásra egy dobozban.
így nem megy, de ha a file elérési útját írom, teát nem includeal, hanem "http://localhost/oazis/admin_panel/felvitel.php" kerül meghívásra, akkor működik.

Előre is köszönöm a segítséget.
 
1

Encode

Poetro · 2010. Nov. 29. (H), 01.35
A következő form teljesen jól működik.
<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
<?php if (isset($_POST) && count($_POST)) : ?>
<pre>
<?php
  $fields = array(
    'cim' => FILTER_SANITIZE_STRING,
    'leiras' => FILTER_SANITIZE_STRING,
    'kategoria' => FILTER_SANITIZE_STRING
  );
  $data = filter_input_array(INPUT_POST, $fields);
  print_r($data);
  print_r($_FILES['kep']);
?>
</pre>
<?php endif; ?>
  <form action="<?php echo htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES, 'UTF-8'); ?>" method="post" enctype="multipart/form-data">
    <label>Cím: <input type="text" name="cim" /></label>
    <label>Leírás: <input type="text" name="leiras" /></label>
    <label>Kategória: <input type="text" name="kategoria" /></label>
    <label>Kép: <input type="file" name="kep" /></label>
    <input type="submit" value="Mentés" />
  </form>
</body>
</html>
Amit kihagytál:
  • a felvitt adatok szűrése,
  • a HTML attribútumokban lévő értékek megfelelő kódolása,
  • címkék használata elérhetőség végett,
  • többször a $_FILE tömbre hivatkozol $_FILES helyett,
  • ne hivatkozz a submit mező értékére, egyes böngészők nem küldik el, ha például Enter billentyű lenyomásával küldöd el a űrlapot, és nem a gomb megnyomásával,
  • a tömb elemire stringként hivatkozz, azaz ne $_POST[cim] formában, hanem $_POST['cim'],
  • ha nem az aktuális fájlra, hanem az URL-re akarsz hivatkozni, akkor tedd azt.


szerk: És mindig nézd meg a generált HTML fájlt, a hibák jó része látszódni fog benne.
2

nem hivatkoztam sehol a

Pisti20 · 2010. Nov. 29. (H), 08.58
nem hivatkoztam sehol a $_FILE-ra, csak a MAGYARÁZATNÁL írtam el.....
szűrés felesleges addig amíg nem működik az alap kód.
kódolás.... megy minden kivéve a $_FILES érték átadása.
a submit is csak formaság, ment mert én kattintottam, ennek semmi köze a problémához
a tömb elemeire mindenhogy próbáltam hivatkozni, nem csak így, és minden megy mindenhogy, kivéve a $_FILES.
Hibát nem írt.

Akkor gondolom te sem tudod mi a probléma.
Köszönöm a tanácsokat, mindet megfontolom. van amit már használok is.
3

A kód ugyan úgy nem jó!

Pisti20 · 2010. Nov. 29. (H), 09.14
A te kódoddal sem kapja meg a $_FILES[] az adatokat.

Le írom mégegyszer a fő problémát, hát ha a probléma megoldására is tud valaki valamilyen lehetőséget.

Az adatokat megkapja minden KIVÉVE a $_FILES.
Ha a php kódra hivatkozom, mint ahogy segíteni próbáló barátom is tette, akkor megkapja, "http://localhost/oazis/admin_panel/felvitel.php" ,
de ha az indexen keresztül kerül include-olásra "http://localhost/oazis/admin_panel/index.php?page=felvitel" , akkor a $_FILES nem kapja meg az értéket.

itt az a rész ami az indexben van az include proc-ja:

if ($_SESSION[login]==true){
if (isset($_GET[page])){
include($_GET[page].".php");
}
else{}
}
else{
print("Nincs bejelentkezve");
}

és itt a felvitel.php (most már módosítva)kódja:

<?php
$fields = array(
'cim' => FILTER_SANITIZE_STRING,
'leiras' => FILTER_SANITIZE_STRING,
'kategoria' => FILTER_SANITIZE_STRING
);
$data = filter_input_array(INPUT_POST, $fields);
print($data['cim'].",".$data['leiras'].",".$data['kategoria']."<br />");
print("kép:".$_FILES['kep'][name]);
?>

<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" enctype="multipart/form-data">


<tr><td>Kép:</td><td align="right"><input type="file" name="kep" /></td></tr>
<tr><td><input type="reset" name="reset" value="Mégsem" /></td><td><input type="submit" value="Feltöltés" name="mentes" /></td></tr>

Ha valaki tudja mi lehet a probléma, legyen szíves írja le.
4

Kihagytad

Poetro · 2010. Nov. 29. (H), 09.55
A következő dolgokat gondolom kihagytad:
ha nem az aktuális fájlra, hanem az URL-re akarsz hivatkozni, akkor tedd azt.

szerk: És mindig nézd meg a generált HTML fájlt, a hibák jó része látszódni fog benne.


Mivel az aktuális fájlra hivatkozol, lehetnek problémák, gondolom nem próbáltad ki, hogy $_SERVER['PHP_SELF'] helyett $_SERVER['REQUEST_URI']-t használj, valamint azt megfelelően kódold.
Jah, és használj kód színezőt, mivel így eléggé olvashatatlan a kód.
5

:)))))))))))))))

aeternum · 2010. Nov. 30. (K), 02.09
Hihetetlen a türelmed!
:)))))))))))))))))

aet
:)
6

nem ez volt a gond, és egyik sem amit mondtál.

Pisti20 · 2010. Dec. 3. (P), 11.42
A probléma az volt hogy az indexemben a userformom záró tagja véletlen lemaradt.
Minden esetre köszönöm a segíteni próbálást. Értékelem, kapsz 10 jóságpontot xD