PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Parameter Übergabe funktioniert nicht


DirkB
23.04.2002, 21:27:36
Hallo Damir und alle Anderen,

bin php newbee und versuche seit Tagen einen Dateiupload zum laufen zu bringen, bei dem der Seitenbesucher die Anzahl der Dateien vorgeben kann.
Das funktioniert so weit so gut mit absoluten Werten , sobald ich aber variable Werte übergebe funktioniert zwar die Formulargeneartion , aber der Dateiupload nicht.
Zur Verdeutlichung der SC:

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY BGCOLOR="#ffffff">

<?php


//$ADMIN[RequirePass] = "No"; // Checks to see if upload has a vaild password
//$ADMIN[Password] = "password"; // This is the password if the above option is Yes

//-------------------------------------------------------
// Kernpunkt des Problems

$ADMIN[UploadNum] = "10"; // funktioniert

//$ADMIN[UploadNum] ersetzt durch $UploadNum
$UploadNum = "10"; // funktioniert

$ADMIN[UploadNum] = $HTTP_POST_VARS['UploadNum'];// funktiuniert nicht

$ADMIN[UploadNum] = $UploadNum; // mittels get oder post übergeben, geht auch nicht

//------------------------------------------------------------------


$ADMIN[directory] = "../uploads/";
if($doupload) {

if($ADMIN[RequirePass] == "Yes") {
if($password != "$ADMIN[Password]") {
?>

----HTML AUSGABE PASSWORT CHECK steht hier----

<?php
exit();
}
}

$num = 0;
while($num < ADMIN[UploadNum]) {
$num++;


$picture = "fileup$num"."_name";
$picture1 = $$picture;
$picture2 = "fileup$num";
$picture3 = $$picture2;

if($picture3 != "none") {
$filesizebtyes = filesize($picture3);

$ok = 1;
if($filesizebtyes < 10) {
$error .= "Error uploading (file size lower than 10 bytes) for file $num<BR>";
$ok = 2;
}



if(file_exists("$ADMIN[directory]/$picture1") OR $ok == 2) {
$error .="File name already exists for file $num<BR>";
} else {
copy ($picture3, "$ADMIN[directory]/$picture1");
$error .="File $num has been uploaded<BR>";
}
}
}

if(!$error) {
$error .= "No files have been selected for upload";
}


?>
---HTML CODE STATUSMELDUNG STEHT HIER ---

<?php
exit();

} else {

$num = 0;
while($num < ADMIN[UploadNum]) {
$num++;
$html .= "<TR>
<TD WIDTH="25%" BGCOLOR="#295e85">
<FONT COLOR="#ffffff" SIZE="-1" FACE="Verdana">File $num:</FONT></TD>
<TD WIDTH="75%" BGCOLOR="#ffffff">
<INPUT NAME="fileup$num" TYPE="file" SIZE="25">
</TD> ";
}

?>
<FORM ENCTYPE="multipart/form-data" ACTION="uploader.php" METHOD="post">
<P><CENTER><B><FONT FACE="Verdana">Upload</FONT></B></CENTER></P>

<P><CENTER><TABLE WIDTH="450" BORDER="0" CELLSPACING="0" CELLPADDING="0">
<TR>
<TD WIDTH="100%" BGCOLOR="#000000">
<TABLE WIDTH="450" BORDER="0" CELLSPACING="1" CELLPADDING="2">
<TR>
<TD COLSPAN="2" BGCOLOR="#295e85">
<B><FONT COLOR="#ffffff" SIZE="-1" FACE="Verdana">Select Files</FONT></B></TD>

</TR><?php echo $html; ?>
</TABLE></TD>
</TR>
</TABLE></CENTER></P>


<?php
if($ADMIN[RequirePass] == "Yes") {
?>
<P><CENTER><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0">
<TR>
<TD WIDTH="100%" BGCOLOR="#000000">
<TABLE WIDTH="300" BORDER="0" CELLSPACING="1" CELLPADDING="2">
<TR>
<TD WIDTH="33%" BGCOLOR="#295e85">
<B><FONT COLOR="#ffffff" SIZE="-1" FACE="Verdana">Password:</FONT></B></TD>
<TD WIDTH="67%" BGCOLOR="#ffffff">
<INPUT NAME="password" TYPE="password" SIZE="25">
</TD>
</TR>
</TABLE></TD>
</TR>
</TABLE></CENTER></P>
<?php
}
?>
<P><CENTER><INPUT NAME="doupload" TYPE="submit" VALUE="Upload Files"></CENTER></FORM>
</BODY>
</HTML>
<?php
exit();
}
?>

Hab wirklich keine Ahnung was schief läuft.
Ich denke mir daß es sich bei "ADMIN[UploadNum]" um ein Array handelt. Wieso kann ich die Variable "ADMIN[UploadNum]" nicht einfach durch HTML_POST_VARS['UploadNum'] aus einem vorherigen Formular an das Script übergeben.

Schon mal vielen Dank für Eure Antworten

Progman
23.04.2002, 21:45:29
Man postet eigentlich keinen Kompletten PHP Code in ein Forum. Besser ist es wenn man das Script als *.phps hochläd und die URL postet.

> $num = 0;
> while($num < ADMIN[UploadNum]) {
> $num++;

für sowas ist eine for-Schleife besser geeignet.

Ggf. gibt es Probleme mit Variablen in Strings. Sonst ist das Script für mich zu unübersichlich