Avatar billede zac Nybegynder
14. september 2005 - 16:01 Der er 9 kommentarer og
1 løsning

File upload, forskellen på $enfil_name og $FILES'enfil''name'

Jeg har noget, som fungerer (mener jeg da), men jeg undrer mig over hvorfor! Det er om fil upload:

$query = mysql_query("INSERT INTO filer (filnavn,tidspunkt)" .
"VALUES ('$enfil',NULL)");       
// gemmer filens navn (som mærkeligt temp navn), og som mærket med timestamp
       
copy($enfil, "/.../dir/$enfil_name");
// opretter den uploadede fil med sit eget, oprindelige navn

Jeg kan se i litt., at $FILES['enfil']['name'] skal fange filens originale navn (uanset, om name = xxx.php), men det er ikke det, jeg gør med $enfil_name, eller er det?

Hvad er det, som gør, at $enfil_name fanger filens navn?
Det må bare være x_name, som gør det (rigtigt?) - hvor kan jeg se syntaxen for det?
Avatar billede jakobdo Ekspert
14. september 2005 - 17:07 #1
Kan vi se noget mere kode?
Avatar billede showsource Seniormester
14. september 2005 - 20:01 #2
I din form, er "enfil" navnet på dit uploadfelt.

$enfil er ved upload et array, med name, type size m.m.

Når du overhovedet får fat i noget med $enfil, er det fordi register_globals er on

$enfil_name = filnavn som bruger uploader
$enfil_size = str. i bytes

Brug hellere som du er lidt inde på, $_FILES["enfil"]["name"] m.m.

http://dk.php.net/manual/en/features.file-upload.php
Avatar billede zac Nybegynder
18. september 2005 - 16:30 #3
Undskyld forsinkelsen...

Jeg forstår, at $enfil ved upload er et array, og at $_FILES["enfil"]["name"] bør foretrækkes (bl.a. for at forberede til register_globals som off).

Men jeg forstår ikke, hvorfor $enfil_name kan fange filens navn, når <form> kun sender $enfil.
Er $enfil_name det samme som $_FILES["enfil"]["name"]? En konvention/ en syntax, at $enfil_name - og også $enfil_size? - er en omskrivning af $_FILES["enfil"]["name"]?
Og i givet fald, hvor kan man se det omtalt, fx på www.php.net?
Avatar billede showsource Seniormester
18. september 2005 - 16:59 #4
jahh, når register_globals er on, er $enfil_name samme som $_FILES["enfil"]["name"] o.s.v.
Avatar billede showsource Seniormester
18. september 2005 - 17:00 #5
og kan sgutte lige finde det i manualen. ! :O)
Avatar billede zac Nybegynder
21. september 2005 - 11:07 #6
ok, jeg må selv lede videre!
Avatar billede jakobdo Ekspert
21. september 2005 - 11:11 #7
Men som Showsource er inde på, så ret det evt til: $_FILES['enfil']osv..
Avatar billede zac Nybegynder
23. september 2005 - 13:56 #8
Det gør jeg...giver gerne point til showsource, er da blevet mere afklaret, selv om jeg stadig ikke kan finde, hvor det mere formelt angives, at når register_globals er on, er $enfil_name det samme som $_FILES["enfil"]["name"] o.s.v.
Avatar billede showsource Seniormester
23. september 2005 - 14:08 #9
Når register_globals er on, kan du jo spørge
if($navn)

i stedet for
if(isset($_POST["navn"]))

Den første vil også virke på GET, COOKIE m.m.
altså hvis f.eks. url er fil.php?navn=noget vil if($navn) være sand, selvom det måske egentlig er POST["navn"] du er ude efter.
Det samme gør sig gældende ved filupload.
Avatar billede zac Nybegynder
20. oktober 2005 - 23:50 #10
undskyld den sene svar accept!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester