ugrás a tartalomhoz

Fájl-feltöltésnél a fájl-rendszer összehasonlítása változóval

mrobert · 2008. Már. 6. (Cs), 21.26
Sziasztok!
A problémám a következő:
Egy html-űrlapon keresztüli állományfeltöltés közben szeretném elvégezni a file_exist ellenőrzést.
Így képzelem az egészet:
=========================
<HTML>

<HEAD>

<TITLE>Állomány feltöltése</TITLE>

</HEAD>

<BODY>

<h1>A feltöltés eredménye:</h1><br><hr><br>
========================================================
<?php
$upload_dir = "/var/www/apache2-default/upload/docs";
if (file_exists($upload_dir.$all_tomb[name])) {
echo "Ilyen néven már valaki töltött fel állományt!";
} else {
========================================================

$konyvtar = "/var/www/apache2-default/upload/docs";

foreach($_FILES as $allomanynev => $all_tomb) {

print "név: ".$all_tomb['name']."<br>\n";

print "típus: ".$all_tomb['type']."<br>\n";

print "méret: ".$all_tomb['size']." bájt<br>\n";



if (is_uploaded_file($all_tomb['tmp_name'])) {

move_uploaded_file($all_tomb['tmp_name'],"$konyvtar/$all_tomb[name]") or die ("Nem sikerült az áthelyezés!");

print "<h1>A feltöltés sikeres volt!</h1>";

}

}

//Valami dátumbélyeg-szerű izé kókányolása:

$datum = date("Y.m.d.");

//Hasonló időbélyeg-tészta:

$ido = date("G:i:s");

//Összeköttetés kiépítése:

$ossz = mysql_connect("localhost", "robi", "mullins");

//Adatbázis választása:

mysql_select_db("web", $ossz);

//SQL utasítás létrehozása:

$sql = "INSERT INTO docs values ('', '$datum', '$ido', '$all_tomb[name]', '<a href=upload/docs/$all_tomb[name]>Letöltés</a>')";

//Végrehajtjuk az utasítást:

if (mysql_query($sql, $ossz)) {

echo "A feltöltésed $all_tomb[name] néven bekerült az adatbázisba!";

} else {

echo "Valami el lett baxva!";

}
}

?>

</BODY>

</HTML>


A bekeretezett résznél "fáj", nevezetesen, mindig kiugrik a szkriptből...ez nem a helyes eljárás?
látjárok esetleg hogy mit rontottam el?
 
1

Nem,

janoszen · 2008. Már. 6. (Cs), 23.18
Gondold végig a programod működését, főleg a parancsok egymás utániságát. Definiálva van egyáltalán ott az a változó, amit használni próbálsz?

Egyébként meg szerintem, egy kicsit jobban járj utána a dolgoknak, mert nem lehetetlen, hogy ebben a scriptben 1-2 biztonsági hiba leledzik. Próbáld meg kitakarítani és csak a lényeges kódrészeket megtartani, háha úgy rájösz egy pár hibára.
2

Ne csigázz :)

mrobert · 2008. Már. 14. (P), 00.40
Én úgy gondolom, definiálva van a változó amit használni próbálok bár lehet hogy tévedek.Végiggondoltam a parancsok egymás utániságát, probléma a sikeresség szempontjából, ez a sorrend? A működés szempontjából NEKEM az összes kódrész lényeges.Nem érdekelnek a biztonsági problémák EGYELŐRE,ez a szkript itthoni használatra lesz.
Ha tudod hol a hiba kérlek közöld.
3

sorrend

Thom · 2008. Már. 14. (P), 00.59
Ha ez így is fut le, akkor úgy látom, előbb használnád az $all_tomb változót, mint azt létrehoztad volna a foreach-ban. Így a file_exists() -nek nem fájlnevet, hanem könyvtárnevet adsz át, nem azt fogja csinálni, amit vársz tőle.

Ezenkívül az alábbiak:
$upload_dir.$all_tomb[name]
értéke kb ilyesmi lesz:
"/var/www/apache2-default/upload/docsfeltoltendo_fajlom.xxx"
Nekem az $upload_dir és a $all_tomb[name] közé hiányzik egy "/".

Lehet, hogy van még több sastojás is benne, nem bogarásztam végig.
4

öröm ész bódottág! :)

mrobert · 2008. Már. 27. (Cs), 11.41
Köszönöm Thom! :) Mostmár teljesen jó!
A sorrend volt a probléma!
Köszike!