enclave
Goto Top

Upload Script - Ich packs net

Hallo alle zusammen,

ich hab hier nen Upload Script. Das ist ganz simpel und ist nur für ihn und da muss keine Überprüfung drinn sein oder so. Ist fürs Intranet. Aber irgendwie hab ich was verpasst und der lädt einfach keine Dateien hoch...

Mfg

Enclave

<?
$add = $_GET['add'];  
$ow = $_GET['ow'];  
$filename = $_FILES['file']['name'];  
$file = $_FILES['file']["tmp_name"];  
if ($add == "")  
{
?>
<html>
<head>
<title>
PHP Test Upload
</title>
</head>
<body bgcolor="black" text="white">  
<table border="0" width="100%" height="100%" align="center"><tr><td width="100%" height="100%" valign="middle" align="center">  
<form action="index.php?add=1" method="post"><table border="1" style="border-color:#FFFF5A; border-style:solid;" frame="void">  
<tr><td align="right" valign="middle" style="border-color:#FFFF5A; border-style:solid;"><b>Dateiname:     </td><td align="left" valign="middle" style="border-color:#FFFF5A; border-style:solid;">     <input type="text" name="filename"></td></tr><tr><td style="border-color:#FFFF5A; border-style:hidden;"><br> </td></tr>  
<tr><td align="right" valign="middle" style="border-color:#FFFF5A; border-style:solid;"><b>Durchsuchen:     </td><td align="left" valign="middle" style="border-color:#FFFF5A; border-style:solid;">     <input type="file" name="file"></td></tr><tr><td style="border-color:#FFFF5A; border-style:hidden;"><br> </td></tr>  
<tr><td align="right" valign="middle" style="border-color:#FFFF5A; border-style:solid;"><b>Hochladen:     </td><td align="left" valign="middle" style="border-color:#FFFF5A; border-style:solid;">     <input type="submit" value="GOGOGO"></td></tr>  
</form>
</td></tr></table></body></html>
<?
}
else
{
if ( $filename != "") {  
	if (file_exists("files/$filename" and $ow != "1")) {  
		echo "Eine Datei mit solch einem Namen existiert bereits!<br><br>Überschreiben?<br><br><a href=\"index.php?add=1&ow=1\">Ja</a><br><br><a href=\"index.php?add=\">Nein</a>";  
		exit;
	}
	copy($file,"files/$filename");  
	@chmod(files/$filename, 777);
	echo "Datei erfolgreich hochgeladen!!!<br><br><br>Link zur Datei: <a href=\"/files/$filename\">http://172.16.0.55/files/$filename</a>";  
}
else
{
echo "ERROR! Kein Dateiname angegeben!!! <a href=\"index.php\">Zurück</a>";  
}
}

PS: Das HTML ist nicht vorn mir ich sollte nur die Upload Funktion reinbauen. Was hab ich das falsch gemacht?

Content-ID: 52387

Url: https://administrator.de/contentid/52387

Ausgedruckt am: 24.11.2024 um 03:11 Uhr

Xerebus
Xerebus 22.02.2007 um 17:48:30 Uhr
Goto Top
Kenn mich ja nicht gut aus damit aber muss du wenn du den "<?php" tag öffnest den nicht auch wieder schliessen?
Irgendwie passt die syntax nicht.
Schau mal unter http://www.php.net/manual/de/language.basic-syntax.php
Enclave
Enclave 22.02.2007 um 22:32:13 Uhr
Goto Top
Ne der Syntax stimmt schon das macht der automatisch also ich hab nen ganzes Script reingehauen und der macht autmatisch ma Anfang das <?php Deswegen steht das auch 2 mal da

Mfg

Enclave
AxelHahn
AxelHahn 23.02.2007 um 08:47:51 Uhr
Goto Top
Hallo,

1) dein Formular macht ein POST. Dein PHP-Schnipsel zu Beginn fragt aber GET-variablen ab. Die werden daher wohl immer leer sein.

2) Baue testweise Debugoutput ein, um zu sehen, was bei dir passiert - etwa sowas
echo "Variablenname=" $Variablenname ."
";

Viele Grüsse
-= Axel =-
SteinBeiser
SteinBeiser 23.02.2007 um 09:18:59 Uhr
Goto Top
versuchs mal damit

<?php

$add = $_GET['add'];  
$ow = $_GET['ow'];  
$filename = $_POST['filename'];  
$file = $_FILES['file']["tmp_name"];  
if ($add == "")  
{
?>
<html>
<head>
<title>PHP Test Upload</title>
</head>
<body style="background-color:black; color:white">  
<table border="0" width="100%" height="100%" align="center"><tr><td width="100%" height="100%" valign="middle" align="center">  
<form action="index.php?add=1" method="post" enctype="multipart/form-data"><table border="1" style="border-color:#FFFF5A; border-style:solid;" frame="void">  
<tr><td align="right" valign="middle" style="border-color:#FFFF5A; border-style:solid;">Dateiname:     </td><td align="left" valign="middle" style="border-color:#FFFF5A; border-style:solid;">     <input type="text" name="filename"></td></tr><tr><td style="border-color:#FFFF5A; border-style:hidden;">  
 </td></tr>
<tr><td align="right" valign="middle" style="border-color:#FFFF5A; border-style:solid;">Durchsuchen:     </td><td align="left" valign="middle" style="border-color:#FFFF5A; border-style:solid;">     <input type="hidden" name="MAX_FILE_SIZE" value="30000"><input type="file" name="file"></td></tr><tr><td style="border-color:#FFFF5A; border-style:hidden;">  
 </td></tr>
<tr><td align="right" valign="middle" style="border-color:#FFFF5A; border-style:solid;">Hochladen:     </td><td align="left" valign="middle" style="border-color:#FFFF5A; border-style:solid;">     <input type="submit" value="GOGOGO"></td></tr>  
</form>
</td></tr></table></body></html>
<?php
}
else
{
if ( $filename != "") {  
    if (file_exists("files/$filename") and $ow != "1") {  
        echo "Eine Datei mit solch einem Namen existiert bereits!  

Überschreiben?

<a href=\"index.php?add=1&ow=1\">Ja</a>  

<a href=\"index.php?add=\">Nein</a>";  
        exit;
    }
    copy($file,"files/$filename");  
    @chmod(files/$filename, 777);
    echo "Datei erfolgreich hochgeladen!!!  


Link zur Datei: <a href=\"/files/$filename\">http://172.16.0.55/files/$filename</a>";  
}
else
{
echo "ERROR! Kein Dateiname angegeben!!! <a href=\"index.php\">Zurück</a>";  
}
}

?>

Benutzt mal zum nachschalgen selfHTML & selfPHP ist ganz hilfreich.
die sache mit dem überschreiben da muste noch was anderes überlegen.
Enclave
Enclave 23.02.2007 um 15:47:48 Uhr
Goto Top
@acel Hahn: Die GET's sind richtig denn die beiden Werte werden ja an die URL angehängt also ow und add. Die anderen beiden werden mit _FILES abgerufen.

@SteinBeiser: Danke das hat funktioniert. Ich weis echt nicht was los ist (bin vermutlich ausser übung). Eigentlich kann ich PHP recht gut hab auch schonmal nen System geschrieben wo auch nen DateiUpload bei war (der hat eigentlich das Zentrum davon ausgemacht) nur ich weis einfach nicht wodran es gelegen hat.

Werd mich wieder mal in PHP einarbeiten...

MFG und vor allem vielen Dank

Enclave
SteinBeiser
SteinBeiser 23.02.2007 um 15:59:21 Uhr
Goto Top
Schau dir mal $filename = an.
und den form tag.
Enclave
Enclave 23.02.2007 um 19:37:21 Uhr
Goto Top
Ahhh

Ich hatte das auch erst mit POST aber mit dem gleichen Ergebnis. Lag dann wohl an meinem vergessenem enctype...

Danke

Enclave
17735
17735 16.04.2007 um 19:49:00 Uhr
Goto Top
Hallo,

nur mal so am Rande: Statt der copy()-Funktion ist es sinnvoll, bei PHP-Upload-Scripten die Funktion move_uploaded_file() zu verwenden, Syntax wie bei dem hier verwendeten copy()-Syntax.

Gruß,
Ahnenforscher

PS: Dafür wurde die Funktion nämlich entwickelt face-wink