etwas über/ aus link uploaden [PHP&MySQL]
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzeigen
checken
datei
dateiname
fehler
fehlermeldung
formen
formular
funktion
gel
hochladen
image
konfiguration
meldung
punkten
setzten echo
unterverzeichnis
variable
verzeichnis
window
-
Hi ihr kennt sicher noch diese uploadscript:
<?php //>>>>>>>>>>>>>>>>>>>> KONFIGURATION <<<<<<<<<<<<<<<<<<<<<<<< //Maximale Dateigr??e $max_filesize = 100000000; //400 KB //Maximale Verzeichnisl?nge $max_dirlen = 50; //50 Zeichen //Arbeitsverzeichnis (Wird beim ersten Aufrufen der Datei erstellt) $workingdir = "web"; //Eigener Dateiname $filename = "index.php"; /*Dateitypen Einfach die Dateiendung, Doppelpunkt und den PHP Dateityp eintragen. Will man den PHP Dateitypen herausfinden, einfach mal eine Datei hochladen, dann wird dieser angezeigt, auch wenn der Dateityp nicht zul?ssig war. Die Liste kann beliebig fortgef?hrt werden*/ $filetypes=array("*.html:text/html", "*.jpg:image/jpeg", "*.jpeg:image/pjpeg","*.gif:image/gif","*.png:image/png","*.php:application/x-httpd-php","*.zip:application/zip","*.htm:text/html","*.html:text/html","*.txt:text/plain","*.mpg:video/mpeg"); //>>>>>>>>>>>>>>>>>>> KONFIGURATION ENDE <<<<<<<<<<<<<<<<<<<<<<<< if (!file_exists($workingdir)) //Wenn das Arbeitsverzeichnis nicht da ist, dann anlegen. { mkdir($workingdir,0755); } ?> <HTML> <HEAD> <TITLE>Upload</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> <SCRIPT language=JavaScript> <!-- function sicher(){ //Diese Funktion ist f?r die Formulare, aber eigentlich ?berfl?ssig. var antwort; antwort=confirm("Bist Du sicher, dass Du alle Felder wieder l?schen willst?"); if (antwort==true){ return antwort; } else{ return antwort; } } //--> </script> <style> <!-- body { SCROLLBAR-FACE-COLOR: #666666; SCROLLBAR-HIGHLIGHT-COLOR: #333333; SCROLLBAR-SHADOW-COLOR: #333333; SCROLLBAR-3DLIGHT-COLOR: #344556; SCROLLBAR-ARROW-COLOR: #fefefe; SCROLLBAR-TRACK-COLOR: #000011; SCROLLBAR-DARKSHADOW-COLOR: #333333; BACKGROUND-COLOR: #EEEEEE; } input, textarea, select { border: 1px solid #333333; background: #FFFFFF; font: 11px Tahoma, Arial, Helvetica, sans-serif; color: #333333; } td { font: 14px Tahoma, Arial, Helvetica, sans-serif; color: #000000; } A:link { COLOR: #666666; TEXT-DECORATION: none } A:visited { COLOR: #666666; TEXT-DECORATION: none } A:active { COLOR: #ff9933; TEXT-DECORATION: none } A:hover { COLOR: white; BACKGROUND-COLOR: #000000; TEXT-DECORATION: none } //--> </style> </HEAD> <BODY> <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 width="800" align="center" bordercolor="#333333"> <TR> <td colspan="2"> <div align="center"><font size="6">Datei Upload</font><br> <br> </div></td> <tr> <td valign="top" align="left" width="380" style="border-right:1px #000000 dashed;border-top:1px #000000 dashed; border-bottom:1px #000000 dashed;"> <div align="center"><br> <?php // Dateiupload //---------------------------------------------------------------------------------------------------------------------- if ($flag==1) //Wenn das Formular abgeschickt wurde. { //Datei checken //-------------------------------------------------------- //Checken ob ?berhaupt eine Datei ausgew?hlt wurde $i=1; if(!$datei) { $fehler.="Keine Datei gew?hlt!<br>"; } else { //Und die Gr??e der Datei if($datei_size > $max_filesize) { $fehler.="Datei ist zu gro?!<br>"; } else { $i=0; $loop = $filetypes; while(list($k,$v)=each($loop)) // Alle Dateitypen checken { $check=explode(":",$v); // Dateinamen checken (Bei ":" erfolgt Trennung) if ($datei_type == $check[1] && $datei) { $i = $i+1; } } } } if ($i==0) {$fehler.="Falscher Dateityp! " .$datei_type. "<br>";} //Das Ganze in die Variable $fehler //-------------------------------------------------------- if($fehler) //Bei Fehlern, Meldung ausgeben { $meldung="<h3><font color='#880000'>" .$fehler. "</font></h3>"; //Die Fehlermeldung etwas versch?nern ;-) unset($flag); //Variable $flag wieder zur?ck setzten echo $meldung; //Fehlermeldung ausgeben } else { //Keine Fehler? Dann Datei hochladen //-------------------------------------------------------------------- $writeurl = ""; if ($uvz2 != "") { $writeurl = "/".$uvz2; } $uvz = "$workingdir$writeurl"; //Verzeichnisname workingdir wird am Anfang deklariert. //Die Verzeichnisnamen kommen aus dem Formular weiter unten if (!file_exists($uvz)) //Wenn nicht vorhanden, dann anlegen { mkdir($uvz,0755); //mit den entsprechenden Rechten versehen } $name=$uvz."/".$datei_name; copy($datei, $name); //Kopieren der Datei auf den Server //Anzeigen der Dateigr??e $sizer = $datei_size; $ending = "Byte"; if ($sizer > 1000) { //Berechnung der Dateigr??e in KB $sizer = $sizer / 1000; $sizer = number_format($sizer,2,",","."); $ending = "KB"; } // Ausgabe der Informationen echo "<font size='3'>Information:</font><br>"; echo "Dateityp: $datei_type <br>"; echo "Größe: $sizer $ending<br>"; echo "Dateiname: $datei_name<br>"; echo "<font color='#FF0000'>Datei wurde erfolgreich hochgeladen!</font><br>"; echo "<br><a href='$_SERVER[PHP_SELF]?$_SERVER[QUERY_STRING]'> <<< Zur?ck</a> (Nach 10 Sekunden automatisch.)<br><br>"; echo "<script language='JavaScript'> var gWindowCloseWait = 10; function zurueck() { window.location = (\"$_SERVER[PHP_SELF]?$_SERVER[QUERY_STRING]\"); } window.setTimeout(\"zurueck()\", gWindowCloseWait*1000); </script>"; } //-------------------------------------------------------------------- } //---------------------------------------------------------------------------------------------------------------------- // Verzeichnis anlegen //---------------------------------------------------------------------------------------------------------------------- if ($flag2==1) { //Erst mal ein paar Pr?fungen if(!$verzname) { $fehler.="Kein Verzeichnis eingegeben!<br>"; //Wurde ein Verzeichnis eingegeben? } else { if(!eregi("^[a-zA-Z0-9]+$",$verzname)) { $fehler.="Ung?ltige Zeichen im Verzeichnisnamen<br> (Nur a-z und 0-9 erlaubt)<br>"; //Zeichen des anzulegenden Verzeichnisses pr?fen } else { if (strlen($verzname) > $max_dirlen) { $fehler.="Verzeichnisname ist zu lang<br>(Max. $max_dirlen Zeichen)"; } } } /*Doppelte Verzeichnisnamen checken. Fals nicht gew?nscht, einfach diesen Bereich auskommentieren. Bitte nur bei Unixsystemen, denn Windows erlaubt Doppelte Verzeichnisnamen nicht und dann erscheinen unsch?ne Fehlermeldungen :-( >>>>>>>>>>>>>>>>>>>>> Doppelte Verzeichnisnamen Anfang <<<<<<<<<<<<<<<<<<<<<<<<< */ $writeurl = ""; if ($uvz2) { $writeurl = "/".$uvz2; } $dir = "$workingdir$writeurl"; //Zusammensetzen des richtigen Pfades $dir = strtolower($dir); $verzname = strtolower($verzname); $dh=opendir($dir); if ($dh) { $i=1; while ($filename=readdir($dh)) //Loopen durch die bereits angelegten Verzeichnisse { if (is_dir($dir."/".$filename) && $filename != "." && $filename != "..") //Die Punkte ausschliessen falls Unixsystem { if ($verzname == $filename) {$fehler.="Verzeichnis ist schon vorhanden!<br>";} //Doppelte Verzeichnisnamen ausschliessen, da es sonst zu Fehlermeldungen auf //Windows-Webservern kommt } } } closedir($dh); //>>>>>>>>>>>>>>>>>>>>> Doppelte Verzeichnisnamen Ende <<<<<<<<<<<<<<<<<<<<<<<<< if($fehler) { $meldung="<h3><font color='#880000'>" .$fehler. "</font></h3>"; //Fehlermeldung versch?nern ;-) unset($flag2); //Variable $flag2 wieder zur?ck setzten echo $meldung; //Fehlermeldug ausgeben } else //Wenn es keine Fehler gab { mkdir("$workingdir/".$verzname); //Dann kann das Verzeichnis angelegt werden echo "<font size='4'>Verzeichnis '$verzname' wurde erstellt!</font>"; } } //---------------------------------------------------------------------------------------------------------------------- // Hier beginnt die eigentliche Seite //---------------------------------------------------------------------------------------------------------------------- if(!$flag) //Die Variablen $flag und $flag2 bekommen erst mit dem Abschicken des einen oder des anderen Formulares einen Wert. //Wird das Formular f?r den Dateiupload abgeschickt ist es $flag bei den Verzeichnissen ist es $flag2.. wer h?tte das gedacht. { //Nun kommt HTML mit einem ganz kleinen Teil PHP ?> </div> <form action='<? echo $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']; ?>' method='post' enctype='multipart/form-data' name='form1' id="form1" onReset="return sicher()"> <!-- Die Formaction besteht aus der aktuellen Datei und einer Variable hinter dem "?" Hier wird ein m?gliches Unterverzeichnis angegeben in dem wir uns vielleicht gerade befinden. Denn dort soll die Datei ja auch rein. //--> <div align="center"> <input type="hidden" name="flag" id="flag" value=1> <!-- Hier kommt das versteckte Feld. Es bekommt den Wert 1 und wird in PHP dann als variable gesehen //--> <table border="1" width="340" cellpadding="1" cellspacing="1" bordercolor="#ffffff" style="border-collapse: collapse"> <tr> <td colspan="2"><b>Datei w?hlen und hochladen</b><br> <font size="1">M?gliche Dateitypen:<br> <?php while(list($k,$v)=each($filetypes)) // Alle Dateitypen checken { $check=explode(":",$v); echo $check[0]. " "; } echo "<br>"; ?> Maximal <?php echo $max_filesize/1000; ?> KB pro Datei.</font></td> </tr> <tr> <td width="54">Datei:</td> <td> <input name="datei" type="file" id="datei" size="30" value='<?php echo $datei; ?>'> </td> </tr> <tr> <td> </td> <td><input type="submit" name="Submit" value="Hochladen"> <input type="reset" name="Reset" value="Zur?cksetzen"> </td> </tr> </table> </div> </form> <div align="center"> <?php //Nun das formular f?r die Verzeichnisse. Das erscheint nur, wenn man in dem Hauptverzeichnis ist... //Sonst k?nnte man ja unendlich viele Verzeichnisse anlegen. if ($uvz2 == "") { ?> </div> <form action='<? echo $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']; ?>' method='post' enctype='multipart/form-data' name='form2' id="form2" onReset="return sicher()"> <div align="center"> <input type="hidden" name="flag2" id="flag2" value=1> <table border="1" cellpadding="1" width="340" cellspacing="1" bordercolor="#ffffff" style="border-collapse: collapse"> <tr> <td colspan="2"><b>Verzeichnis anlegen</b></td> </tr> <tr> <td width="54">Name:</td> <td> <input name="verzname" type="text" id="verzname" size="30" value=""> </td> </tr> <tr> <td> </td> <td><input type="submit" name="Submit" value="Anlegen"> <input type="reset" name="Reset" value="Zur?cksetzen"> </td> </tr> </table> </div> </form> <div align="center"> <?php } } //Nun erst mal eine JavaScript Funktion welche noch zum L?schen ben?tigt wird. echo " <script language='JavaScript'> function del(url, datei) { if( confirm(\"Soll die Datei '\" + datei + \"' wirklich gel?scht werden?\") ) window.location = url; } </script>"; $writeurl = ""; //Wo sind wir? Haupt oder Unterverzeichnis? if ($uvz2) { $writeurl = "/".$uvz2; echo "<a href='$PHP_SELF'><< Zur?ck zum Hauptverzeichnis</a><br>"; } $uvz="$workingdir$writeurl"; // workingdir wird am Anfang der Datei deklariert. if (!file_exists($uvz)) //Wenn nicht vorhanden, dann anlegen { mkdir($uvz,0755); } if ($loesch=="datei") //Wenn Datei gel?scht werden soll.... Weiter unten. { $name = urldecode($name); $pfad = $uvz."/".$name; @unlink($pfad); //Pfad zusammenbasteln ;-) if ($uvz2 != "") //Waren wir in einem Unterverzeichnis? { echo " <script language='JavaScript'> window.location = ('$filename?uvz2=$uvz2') </script>"; //Dann wieder zur?ck in das Unterverzeichnis } else { echo " <script language='JavaScript'> window.location = ('$filename') </script>"; //Und wieder dahin zur?ck wo wir waren } } echo "<font size='3'><b>Aktuelles Verzeichnis: <b><a href='$uvz' target='_blank'>/$uvz</a></font> </td> <td style='border-top:1px #000000 dashed;border-bottom:1px #000000 dashed;' valign='top'> <br> <p align='center'><b>Hochgeladene Dateien:</b><br><hr width='400' color='#000000'></p></font><ol>"; //Anzeigen des Verzeichnisses und es folgt das Anzeigen der hochgeladenen Dateien $i = 1; $verzeichnis = opendir($uvz); while ($file = readdir($verzeichnis)) //Verzeichnis auslesen { if (is_file($uvz."/".$file)) { echo "<li><a href='$uvz/$file' target='_blank' onMouseOver=\"window.status='Dateiname: $file'; return true\" onMouseOut=\"window.status=''; return true\">$file</a> - - "; //Datei(en) anzeigen $file = urlencode($file); echo " <a href=\"javascript:del('$PHP_SELF?loesch=datei&name=$file&uvz2=$uvz2','".urldecode($file)."')\" onMouseOver=\"window.status='L?schen: " .urldecode($file). "'; return true\" onMouseOut=\"window.status=''; return true\"> <font color='#880000'>Löschen</font></a><hr></li>"; //M?glichkeit zum L?schen der Datei. Die JavaScriptfunktion del ist hierbei eine Abfrage ob wirklich gel?scht werden soll. //Klickt man ja, wird die URL ?bergeben mit der Variable $loesch=datei Dieses wurde weiter oben ja bereits abgefragt. $i++; } } if ($i == 1) { echo "Keine Dateien vorhanden"; } closedir($verzeichnis); echo "</ol>"; if ($uvz2 == "") { //Das Gleiche f?r die Verzeichnisse nochmal if ($loesch=="verzeichnis") { shell_exec(rmdir($name)); echo " <script language='JavaScript'> window.location = ('$filename') </script>"; } echo " <script language='JavaScript'> function del2(url, verzeichnis) { if( confirm(\"Soll Das Verzeichnis '\" + verzeichnis + \"' wirklich gel?scht werden?\") ) window.location = url; } </script>"; echo "<p align='center'><b>Angelegte Verzeichnisse:</b><br><hr width='400' color='#000000'></p><ol>"; //Auslesen der Verzeichnisse $dirlist=array(); $writeurl = ""; if ($uvz2) { $writeurl = "/".$uvz2; } $dir = "$workingdir$writeurl"; $dh=opendir($dir); if ($dh) { $i=1; while ($filename=readdir($dh)) { if (is_dir($dir."/".$filename) && $filename != "." && $filename != "..") //Die Punkte ausschliessen falls Unixsystem { echo "<li><a href='$PHP_SELF?uvz2=$filename' onMouseOver=\"window.status='Verzeichnis: ../$dir/$filename'; return true\" onMouseOut=\"window.status=''; return true\">../".$dir."/".$filename."</a> - - "; echo " <a href=\"javascript:del2('$PHP_SELF?loesch=verzeichnis&name=".$dir."/".$filename."','$filename')\" onMouseOver=\"window.status='L?schen ../$dir/$filename'; return true\" onMouseOut=\"window.status=''; return true\"> <font color='#880000'>Löschen (Nur wenn leer.)</font></a><hr></li>"; //Ausgabe der Verzeichnisliste, wieder mit M?glichkeit zum L?schen. $i++; } } if ($i == 1) { echo "Keine Verzeichnisse vorhanden"; } closedir($dh); } else { //Fehlermeldung echo "Ein FEHLER ist aufgetreten und keiner wei? warum.... :-D"; } echo "</ol>"; } //---------------------------------------------------------------------------------------------------------------------- echo "</TD> </TR> </TABLE><br> <table border='0' align='center'> <tr><td valign='bottom' align='center'> Your IP:" .$_SERVER['REMOTE_ADDR']. "</td></tr> </table>"; ?> </div> </BODY> </HTML>
? by Christian Fedder!
...
so jetzt m?chte ich das aber auch so das man nicht nur files von seinem rechner hochladen kann! sondern auch files aus einem url!
so das man in einem textfeld die url angibt:
http://www.deadly-combination.de/pic/dc-intro_index.jpg
un die l?ds dann hoch. lasst sich das irgendwie realisieren???
thx schon im vorraus!
MfG -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich glaube nicht, dass das per PHP Script geht. Das w?re doch eine FXP-Funktion, d.h. Daten werden von einem Server zum anderen ?bertragen. Das k?nnen nicht viele Server.
-
ist das wirklich so umst?ndlich?
der soll doch blo? die datei kopieren und dann auf "sich selbst" speichern... das kann doch nicht wirklich schwer sein oder? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage