Hier kann eine Notiz zum Merk-Eintrag hinzugefügt werden (optional)
| [ Anmelden zum schreiben ] |
| Upload Script | |||
|---|---|---|---|
| ZeroX Mitglied
Posts: 616 |
Hallo auf meiner suche nach einem Upload Script bin ich auf sehr viele gestoßen doch was mir bei jedem fehlt is das wie bei rs.de oder so in der art wo man nach dem upload den link sieht wo es ist !
also z.B ich lad das bild mit dem Namen "asd.jpg" hoch dan will ich das man nach dem upload den link dafür bekommt ***********/asd.jpg das ist z.Z der link gfxarena.gf.funpic.de/up/upload.php gibts da ne lösung das einzufügen ?? mfg ZeroX |
||
| timosy Mitglied
Posts: 175 |
hier ich hab dir mal den ganzen code samt linkausgabe
<?php
$extlimit = "yes"; //Do you want to limit the extensions of files uploaded
$limitedext = array(".gif",".jpg",".png",".jpeg",".bmp",".JPG"); //Extensions you want files uploaded limited to.
$sizelimit = "yes"; //Do you want a size limit, yes or no?
$sizebytes = "1000000"; //size limit in bytes
if($senden){
if($bilddatei!= "") {
if (($sizelimit == "yes") && ($bilddatei_size > $sizebytes)) {
echo "Die Bilddatei ist zu gross, sie darf mamimal $sizebytes bytes sein.";
}
$ext = strrchr($bilddatei_name,'.');
if (($extlimit == "yes") && (!in_array($ext,$limitedext))) {
echo "Die Bilddateiname hat nicht die richtige Endung.";
}
//Der Ordner images liegt auf dem Server, dort werde die Bilder kopiert.
//falls im images Ordner der Name der Bilddatei schon existiert, dann soll eine Fehlermeldung kommen.
elseif (file_exists("images/$bilddatei_name")) {
echo "Der Bilddateiname existiert bereits. Bitte ändere deinen Bilddateiname und versuche es nochmal.";
}
//ansonsten wird die Datei im Ordner images kopiert
else{
copy($bilddatei,"images/$bilddatei_name");
} }//if($bilddatei!= "") {
}//if($senden)
//im formular muss unbedingt enctype="multipart/form-data" enthalten!
?>
<form name="mf" action="hochladen.php" method="post" enctype="multipart/form-data">
<input type='submit' NAME='senden' VALUE='Bild hochladen'>
Bild:<input type='file' name='bilddatei' value='durchsuchen'>
</form>
<br>
Bild wird hoch geladen
<br>
</b>
<br>
<FONT COLOR="#0000ff">http://deinwebspace/images/<? echo "$bilddatei_name"; ?>
</FONT> |
||
| ZeroX Mitglied
Posts: 616 |
Zitat geschrieben von timosy
hier ich hab dir mal den ganzen code samt linkausgabe thx aber ich komm damit net zurecht ^^ ich will nicht das der link gleich da steht ! sondern so wie da gfxarena.gf.funpic.de/up/upload.php lad mal was hoch dan kommt "erfolgreich hochgelade" ode sowas in der art und da will ich dan noch den link dabei stehen haben aber den fertifwn link ! |
||
| timosy Mitglied
Posts: 175 |
$upload = "$file_name";
@copy($file, "$pfad/$upload") or die($body."Datei wurde nicht hochgeladen.");
echo $body;
echo "Datei hochgeladen --->$file_name<--- ";
}
else {
?>
hmm da bin i mir aber jetzt ned sicher ob es funtzt |
||
| ZeroX Mitglied
Posts: 616 |
mhm ne kann mir den keiner helfen ?
![]() |
||
| Mairu Coder
Posts: 12770 |
So, hab das Script oben mal ein bissl angepasst, bei meinem Test hat es funktioniert.
Halt die Variablen, nach den Wünschen anpassen und dem Ordner, in den es dann hochgeladen werden soll, die nötigen Rechte geben (777). Man sollte es als include/contents/upload.php speichern. <?php
defined ('main') or die ( 'no direct access' );
$title = $allgAr['title'].' :: Upload';
$hmenu = 'Upload';
$design = new design ( $title , $hmenu );
$design->header();
$uploadordner = "include/downs/uploads/"; //Order für Uploads
$extlimit = "yes"; //Do you want to limit the extensions of files uploaded
$limitedext = array(".gif",".jpg",".png",".jpeg",".bmp",".JPG"); //Extensions you want files uploaded limited to.
$sizelimit = "yes"; //Do you want a size limit, yes or no?
$sizebytes = "1000000"; //size limit in bytes
if(!empty($_FILES['file']['name'])) {
if (($sizelimit == "yes") && ($_FILES['file']['size'] > $sizebytes)) {
echo "Die Bilddatei ist zu gross, sie darf maximal $sizebytes bytes sein.";
}
$ext = strrchr($_FILES['file']['name'],'.');
$fname = escape($_FILES['file']['name'],'string');
$fname = str_replace(' ','',$fname);
if (($extlimit == "yes") && (!in_array($ext,$limitedext))) {
echo "Die Bilddateiname hat nicht die richtige Endung.";
}
//falls im Ordner der Name der Datei schon existiert, dann soll eine Fehlermeldung kommen.
elseif (file_exists($uploadordner.$fname)) {
echo "Der Dateiname existiert bereits. Bitte ändere deinen Dateinamen und versuche es nochmal.";
}
//ansonsten wird die Datei im Ordner images kopiert
elseif ( move_uploaded_file($_FILES['file']['tmp_name'], $uploadordner.$fname) ){
$link = 'http://'.$_SERVER['HTTP_HOST'].str_replace('index.php','',$_SERVER['PHP_SELF']).$uploadordner.$fname;
echo 'Link zu deiner Datei ist: <a href="'.$link.'">'.$link.'</a><br />';
}
}
?>
<form name="mf" action="?upload" method="post" enctype="multipart/form-data">
Datei auswählen: <input type='file' name='file' value='durchsuchen'>
<input type='submit' NAME='senden' VALUE='Bild hochladen'>
</form>
<? $design->footer(); ?>
Zuletzt modifiziert von Mairu am 03.12.2006 - 09:48:34 Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite |
||
| Mairu Coder
Posts: 12770 |
So ich hab das mal "etwas" verfeinert, so dass jeder User (Recht einstellbar) seinen eigenen Ordern bekommt, in den er Sachen hochladen kann.
Achso ja und das mit der Verzeichnissichtbarkeit funktioniert nur, wenn in der Webserver dahingehen konfiguriert, dass .htaccess Dateien unterstützt werden. Ansonsten kann man sich aber einfach eine leere index.html erstellen und dann kann auch niemand durch das Verzeichnis browsen. Und die Optionen nicht vergessen zu ändern.
<?php
defined ('main') or die ( 'no direct access' );
$title = $allgAr['title'].' :: Upload';
$hmenu = 'Upload';
$design = new design ( $title , $hmenu );
$design->header();
//Options
$uploadordner = "include/downs/uploads/"; //Order für Uploads
$extlimit = "yes"; //Do you want to limit the extensions of files uploaded, yes or no?
$limitedext = array(".gif",".jpg",".png",".jpeg",".bmp",".JPG"); //Extensions you want files uploaded limited to.
$sizelimit = "yes"; //Do you want a size limit, yes or no?
$sizebytes = "1000000"; //size limit in bytes
$right = -4; //Recht ab dem User etwas hochladen können
//Options End
//Bei PHP4 auskommentieren
/*function scandir($dir){
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) $files[] = $filename;
sort($files);
return $files;
}*/
function dir_access($dir,$mode='none'){
switch ($mode){
case 'none':
if (file_exists($dir.'.htaccess')) {
$file = fopen($dir.'.htaccess','r') or die('Kann Datei .htaccess nicht öffnen');
$line = fread($file,1024);
fclose($file);
if (preg_match("/\+Indexes/",$line) == 1) return (TRUE);
else return (FALSE);
}
else return (FALSE);
break;
case 'give':
$file = fopen($dir.'.htaccess','w+') or die('Kann Datei .htaccess nicht öffnen');
fwrite($file,"Options +Indexes\n");
fclose($file);
break;
case 'remove':
$file = fopen($dir.'.htaccess','w+') or die('Kann Datei .htaccess nicht öffnen');
fwrite($file,"Options -Indexes\n");
fclose($file);
break;
}
}
function short_string($string,$len=20)
{
if (strlen($string) <= $len) return $string;
else {
$len = floor($len/2);
$string = substr($string,0,$len-3).'...'.substr($string,$len*-1);
return $string;
}
}
if (loggedin() AND $_SESSION['authright'] <= $right) {
$name = escapeshellcmd($_SESSION['authname']);
$uploadordner .= $name.'/';
if (file_exists($uploadordner) AND !file_exists($uploadordner.'.htaccess')) dir_access($uploadordner,'remove');
$server = 'http://'.$_SERVER['HTTP_HOST'].str_replace('index.php','',$_SERVER['PHP_SELF']);
//Upload
if(!empty($_FILES['file']['name'])) {
if (!file_exists($uploadordner)) {
mkdir($uploadordner,0744) or die('Konnte kein Verzeichnis erstellen');
dir_access($uploadordner,'remove');
}
if (($sizelimit == "yes") && ($_FILES['file']['size'] > $sizebytes)) {
echo "Die Datei ist zu groß, sie darf maximal $sizebytes bytes sein.";
}
$ext = strrchr($_FILES['file']['name'],'.');
$fname = escape($_FILES['file']['name'],'string');
$fname = str_replace(' ','',$fname);
if (($extlimit == "yes") && (!in_array($ext,$limitedext))) {
echo "Der Dateiname hat eine nicht erlaubte Endung.";
}
//falls im Ordner der Name der Datei schon existiert, dann soll eine Fehlermeldung kommen.
elseif (file_exists($uploadordner.$fname)) {
echo "Der Dateiname existiert bereits. Bitte ändere deinen Dateinamen und versuche es nochmal.";
}
//ansonsten wird die Datei im Ordner images kopiert
elseif ( move_uploaded_file($_FILES['file']['tmp_name'], $uploadordner.$fname) ){
//chmod($uploadordner.$fname, 0755);
$link = $server.$uploadordner.$fname;
echo '<br />Link zu deiner Datei ist: <a href="'.$link.'">'.short_string($link,70).'</a><br /><br />';
}
}
?>
<form name="mf" action="index.php?upload" method="post" enctype="multipart/form-data" style="border-style:dotted; border-width:medium; border">
<table>
<tr><td>Datei auswählen:</td><td><input type="file" name="file" value="durchsuchen"></td></tr>
<tr><td><input type="submit" name="senden" value="Datei hochladen"></td></tr>
</table>
</form><br />
<?
//Datei löschen
if ($menu->getA(1) == 'd') {
$files = scandir($uploadordner);
$filenr = $menu->getE(1) + 3;
$del = unlink($uploadordner.$files[$filenr]);
if ($del == TRUE) echo "Datei <b>{$files[$filenr]}</b> erfolgreich gelöscht<br />";
else "Datei {$files[$menu->getE(1)]} konnte nicht gelöscht werden<br />";
}
//Verzeichnissichtbarkeit ändern
if ($menu->getA(1) == 'c') {
dir_access($uploadordner,($menu->getE(1) == 0 ? 'give' : 'remove'));
}
//Verzeichnisinhalt auflisten
if (file_exists($uploadordner)) {
$files = array_slice(scandir($uploadordner),3);
$dirvis = (dir_access($uploadordner) == TRUE ? 1 : 0);
echo "<b>Dateien in deinem Verzeichnis <a href=\"$server$uploadordner\">".short_string($server.$uploadordner,70)."</a>:</b>
Verzeichnis ist <a href=\"?upload-c$dirvis\">".($dirvis == 1 ? '' : 'nicht')." sichtbar</a> für alle.<br />
<table width=\"100%\">
<tr class=\"Chead\" align=\"center\"><th>Dateien</th><th width=\"70\">Größe</th><th width=\"50\">Löschen</th></tr>";
foreach ($files as $filenr => $file)
echo "<tr class=\"Cnorm\"><td><a href=\"$server$uploadordner$file\">".short_string($file,43)."</a></td><td align=\"right\">".round(filesize($uploadordner.$file)/1024,1)."K</td><td align=\"center\"><a href=\"?upload-d$filenr\"><img src=\"include/images/icons/del.gif\" alt=\"Löschen\" border=\"0\" \></a>";
echo "</table>";
}
else echo 'Verzeichnis ist leer.<br />';
}
else
echo 'Diese Funktion steht für dich nicht zur Verfügung!<br />';
$design->footer(); ?>
*UPDATED* Zuletzt modifiziert von Mairu am 03.12.2006 - 09:52:17 Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite |
||
| assault Hall Of Fame
Posts: 2928 |
hab das mal ausprobiert,
Fatal error: Call to undefined function: scandir() in /usr/export/www/hosting/assault/clan-lant/include/contents/upload.php on line 110 und in der zeile 110 is das: $files = array_slice(scandir($uploadordner),3); die datei die ich geuppt hab is auch da, nur wenn ich sie mitm browser aufrufe kommt fehler 404, aber wenn ich über ftp-client darein gehe, sehe ich die geuploadete datei aufm server is htaccess erlaubt |
||
| Mairu Coder
Posts: 12770 |
Ja hab gerade nachgeschaut und die Funktion ist erst ab PHP5 verfügbar, mal sehen, vielleicht mach ich noch ne Alternativversion für php4.
Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite |
||
| ZeroX Mitglied
Posts: 616 |
das ist jetzt aber für ilch oder ?
ich bräuchte eins das ich auch ohne ilch benutzen kann ! aber so ist das script schonmal geil thx |
||
| Mairu Coder
Posts: 12770 |
Also für die PHP4 Leute, fügt einfach diese Funktion direkt hinter //Options End ein.
function scandir($dir){
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) $files[] = $filename;
closedir($dh);
sort($files);
return $files;
}
Und wenn du das Uploadscript nicht mit ilch nutzen willst (geht nur mit dem ersten, da das 2. mit Usern/Rechten arbeitet) einfach, das zu Beginn löschen defined ('main') or die ( 'no direct access' );
$title = $allgAr['title'].' :: Upload';
$hmenu = 'Upload';
$design = new design ( $title , $hmenu );
$design->header(); und die letzte Zeile <? $design->footer(); ?> auch.
Und in der Zeile $link = 'http://'.$_SERVER['HTTP_HOST'].str_replace('index.php','',$_SERVER['PHP_SELF']).$uploadordner.$fname; ggf. noch index.php in den Namen deiner Datei ändern.
Zuletzt modifiziert von Mairu am 03.12.2006 - 09:54:09 Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite |
||
| assault Hall Of Fame
Posts: 2928 |
jau geht, aber nicht dahinter sondern dadrunter
/edit: nur das andere Prob is immernoch, wenn man auf die datei draufklick, dann kommt fehler:404 , und was ich grad bemerkt hab, alles was ich uploade und wieder downloade indem ich auf ziel speichern unter klicke ist beschädigt Zuletzt modifiziert von assault am 03.12.2006 - 09:13:59 |
||
| Mairu Coder
Posts: 12770 |
Also bei mir funktioniert es, ich hab allerdings eine Domain, es könnte daran liegen, das vielleicht noch Ordner bis zur index.php kommen, kannst ja mal einen Link schicken, wie er dir ausgegeben wird und dann noch einen zu deiner Seite, und das beim Hochladen Fehler in die Datei reinkommen, kann ich mir nicht erklären, bei mir geht es und genau die gleiche Methode kommt bei allen anderen Uploadformularen im Script zum Einsatz.
*EDIT* So ich hab versucht das jetzt zu lösen, kannst es ja nochmal versuchen, allerdings hat das nichts mit der Korruption der Daten beim Upload zu tun. Zuletzt modifiziert von Mairu am 03.12.2006 - 09:55:40 Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite |
||
| assault Hall Of Fame
Posts: 2928 |
das das ilchscript liegt in einem unterverzeichnis, also nicht direkt auf dem server, hier die url: assault880.as.funpic.de/testscript/
ich schätze mal es kommen fehler rein, weil ich die dateien aus assault880.funpic.de/include/downs/uploads/assault/ laden wollte, aber da sich das script in dem Ordner "testscript" befindet, lade ich eine nicht existierende datei runter *lol* /edit: wenn ich bei den optionen testscript/...usw eingebe, kann ich garnichts mehr machen, wenn ichs dann wieder wegnehme, geht der upload nicht, wegen irgentwelchen rechten, aber der ordner hat chmod 777 Zuletzt modifiziert von assault am 03.12.2006 - 10:45:14 |
||
| Mairu Coder
Posts: 12770 |
Genau, darauf hatte ich nicht geachtet, da ich es bei beiden Testumgebungen im root liegen hab, aber mit der letzten Version sollte es jetzt eigentlich gehen.
Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite |
||
| ZeroX Mitglied
Posts: 616 |
gibts auch ne möglichkeit das script ohne ilch zu benutzen ?? den das wollte ich eigentlich !
|
||
| Mairu Coder
Posts: 12770 |
Und was hab ich in meinem Post von 03.12.2006 - 08:10:32 geschrieben?
Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite |
||
| ZeroX Mitglied
Posts: 616 |
Zitat geschrieben von Mairu
Und was hab ich in meinem Post von 03.12.2006 - 08:10:32 geschrieben? aso sry ! ok vielen dank für deine hilfe ! |
||
| Thousandhands Mitglied
Posts: 1251 |
Der Matthias-Schlich(.de) hat auch ein echt cooles upload skript geschieben!
EInfach auf der seite matthias-schlich.de unter downloads forschen!
Das skript läuft unabhängig von ilch oder einem anderen cms o.ä. ![]() Pion hat sich hier verewigt |
||
| Advokad Mitglied
Posts: 137 |
Hi!
Funpic unterstützt doch .htaccess oder?? Der bringt mir da nämlich die Fehlermeldung, dass er die htaccess-Datei nich mag: ( Serverfehler. Überprüfe Deine htaccess-Datei bzw. lösche diese. ) Wenn ich die .htaccess datei lösche funktionierts, aber dann hab ich eben die öffentlich/privat funktion nicht mehr. Weiß jemand woran des liegt? Frohe Weihnachten ürbigens ![]() ilchTestseite|[/url]|Schüler mit Verantwortung |
||
| Panicsheep ilch.de Team
Posts: 10191 |
Guck mal bei funpic in die FAQ's die .htaccess darf bestimmte Elemente/Befehle nicht enthalten
Omnia bona erunt |
||
| Advokad Mitglied
Posts: 137 |
Ok, danke für die superschnelle Hilfe, habs gefunden, bei funpic is anscheinend .htacces nur als passwortschutz erlaubt ..
ilchTestseite|[/url]|Schüler mit Verantwortung |
||
| Mairu Coder
Posts: 12770 |
Zitat geschrieben von Peter am 26 Sep. 2007
ilch.de/forum-showposts-16216-p1.html#101886 das ist ja von dir aber leider hab ich das mit dem ".htaccess" bei mir kommt ne fehlermeldung das des net funtzt. das kommt bei beiden scripten bei dem "einfachen" und dem "komplexeren" Naja und das mit der leeren index hab ich net verstanden kannste mir das erklärn pls thx im vorraus Warum auch immer sowas als PM und nicht direkt als Post in diesem Thread gekommen ist... Also um das mit .htaccess in den Griff zu bekommen, würde ich jetzt vorschlagen ganz einfach die Funktionen zu "kastrieren", sprich die Funktion dir_access durch das function dir_access($dir,$mode='none'){
return true;
} zu ersetzen. Mit leere Indexdatei ist einfach eine leere oder kleine index.html im jeweiligen Verzeichnis gemeint.
<?xml version="1.0" encoding="iso-8859-2"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
<title>Kein Zugriff</title>
</head>
<body>
Kein Zugriff auf dieses Verzeichnis.
</body>
</html>Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite |
||
| Peter Mitglied
Posts: 145 |
der thread war alt und adchte da schaut eh keiner drauf...
Naja trotzdem danke wüsste nur gern was du mit jeweilgen verzeichnist meinst ? da wo der upload rein kommt? edit: ich habs ma getestet und er erstellt das verzeichnis, aber uploaden tut er nichts... naja trotzdem danke... Zuletzt modifiziert von Peter am 28.09.2007 - 15:46:22 |
||
| imu Mitglied
Posts: 17 |
muss ich safe mode auf meinem server ausmachen?
um dieses modul nutzen zu können? |
||
| Mairu Coder
Posts: 12770 |
Wenn ein safe_mode Restriktion kommt, dann solltest du ihn ausmachen.
Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite |
||
| imu Mitglied
Posts: 17 |
hab mir mal das download von deiner hp bneutzt und die geht bei mir einwandfrei.
hab vorher den code oben benutzt. Zuletzt modifiziert von imu am 05.12.2007 - 20:14:15 |
||
| [ Anmelden zum schreiben ] |