Toon posts:

[PHP] $HTTP_POST_FILES waarde is leeg en toch niet

Pagina: 1
Acties:
  • 39 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik had een script waarme je files kon oplopen, dit scripte werkt perfect.

Echter een nadeel was dat dit in een los script was, ik besloot dus om het script te intigreren in mijn site, dit is ook gelukt alleen 1 probleem

Alle $HTTP_POST_FILES waardes zijn leeg, spreek ik echter het "oude" script aan dan werkt het wel, het allevreemdste is dat de php code zelf identiek is.
Het enigste verschil is dat nu het upload gedeelte een functie geworden is van de site en bij het oude was het een los script.
Het allervreemdste is als ik $_FILES gebruikt het weer wel werkt, op zich is het probleem opgelost alleen ik kan niet de oorzaak vinden waarom het met $HTTP_POST_FILES niet werkt.

Dit is het scripje:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function upload() {
global $HTTP_POST_FILES;

case "put":
if(file_exists($HTTP_POST_FILES['file']['tmp_name']))
{
 ftp_put($connection, $currentDir . "/" . filePart(StripSlashes($fname)), $HTTP_POST_FILES['file']['tmp_name'], $mode);
unlink($HTTP_POST_FILES['file']['tmp_name']);
}
break;

<A HREF="JavaScript:toggle('uploadform');" class=leftmenulink>$lblUploadFile</A>
<FORM id="uploadform" style='display:none;' NAME='putForm' ENCTYPE="multipart/form-data" METHOD=POST ACTION="$PHP_SELF" onsubmit="return validate()">   
  <INPUT TYPE="hidden" NAME="actionType" VALUE="put">   
  <input type="hidden" name="fname">
  <INPUT TYPE='hidden' NAME='currentDir' VALUE='$currentDir'>
  <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="$maxFileSize">
  <INPUT TYPE='hidden' NAME='mode' VALUE='$mode'>
  <INPUT TYPE="file" NAME="file" STYLE="width:150px; font-size:7pt;"><BR>
  <INPUT TYPE="SUBMIT" VALUE="OK" STYLE='width=150px; font-size:7pt;'>
</FORM>
}


Dit werkt dus perfect als het script los draait, maar zodra ik het in mijn site via een functie zet zoals hierboven dan zijn de $HTTP_POST_FILES leeg, zodra je dus $HTTP_POST_FILES veranderd in $_FILES dan werkt het wel.

Hoe kan dit nu en waar zit nu de fout, het is geen server probleem want als los script werkt het dus wel. (zoals al vermeld het is opgelost maar ik wil graag weten wat nu de oorzaak is dat het niet werkt)

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
$HTTP_POST_FILES is met pensioen en werkt alleen wanneer register_globals aanstaan (maar die hoort dus uit te staan en je moet $_FILES gebruiken). Zoek ander even op "superglobals" of lees P&W FAQ - PHP even.

March of the Eagles


Verwijderd

Topicstarter
Klopt niet helemaal
Op de server staan deze globals dus uit en als los script werkt het wel, als function dus niet.
rara hoe kan dat, want nu weet ik nog niet wat er verkeerd is gegaan.

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Verwijderd schreef op maandag 02 oktober 2006 @ 22:41:
Klopt niet helemaal
Op de server staan deze globals dus uit en als los script werkt het wel, als function dus niet.
rara hoe kan dat, want nu weet ik nog niet wat er verkeerd is gegaan.
Ook voor $fname moet je globals gebruiken.

  • Setragasj
  • Registratie: Augustus 2001
  • Laatst online: 12-02 13:23

Setragasj

is using radars to communicate

print(); je de HTML nog, of staat deze echt los in de functie...?
D'r klopt sowieso niks van je functie.. Waar gebruik je de case voor? Die moet dan toch in een switch staan of ligt dat aan mij?
Ik weet eigenlijk niet zo goed wat ik hiermee moet anders :p

<Typ een persoonlijk bericht>


Verwijderd

Topicstarter
De functie is niet compleet, als ik het hele gedeelte moet posten dan wordt ie veel te lang.
Die case etc werkt.
Het script doet het verder allemaal het ging me alleen om waarom de HTTP_FILES gedeelte nu niet werkt in een function en wel in een los staand scripje.

Maargoed laat maar dan, het werkt nu wel met $_FILES alleen snap ik nu niet waarom dat zo is.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Omdat $_FILES een superglobal is, en $HTTP_POST_FILES een global die al sinds PHP 4.0 standaard niet meer ondersteund wordt. Zelfs als dat niet het enige probleem is, dan nog is dit de kern van je foute denkwijze; waarschijnlijk zit er ergens anders nog een scope probleempje.

Dit staat verder overigens allemaal uitgewerkt in onze PHP-FAQ die Hacku al aanhaalde, dus dit topic doe ik dicht. Volgende keer zou ik het op prijs stellen als je eerst de FAQ doorneemt.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.