ilch Forum » Allgemein » HTML, PHP, SQL,... » Probs mit dem Uploader

Geschlossen
  1. #1
    User Pic
    Thumbnail Mitglied
    Registriert seit
    10.06.2006
    Beiträge
    365
    Beitragswertungen
    0 Beitragspunkte
    Hi ich habe hier mal einen Uploader für ilch:

    <?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 &ouml;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 &ouml;ffnen'); 
    fwrite($file,"Options +Indexes\n"); 
    fclose($file); 
    break; 
    case 'remove': 
    $file = fopen($dir.'.htaccess','w+') or die('Kann Datei .htaccess nicht &ouml;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&szlig;, 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 &auml;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&auml;hlen:</td><td><input type="file" name="file" value="durchsuchen"></td></tr> 
    <tr><td height="27"><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&ouml;scht<br />"; 
    else "Datei {$files[$menu->getE(1)]} konnte nicht gel&ouml;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&uuml;r alle.<br /> 
    <table width=\"100%\"> 
    <tr class=\"Chead\" align=\"center\"><th>Dateien</th><th width=\"70\">Gr&ouml;&szlig;e</th><th width=\"50\">L&ouml;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&ouml;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(); ?>



    Wenn ich das Bild erfolgreich hochlader gibt er mir zurück:

    Dateien in deinem Verzeichnis http://localhost/ilch/include/downs/uploads/admin/: Verzeichnis ist nicht sichtbar für alle.


    So ich will aber dass er mir den BBcode vom dem Bild auspuck also in diesem Falle

    ["img"]http://localhost/ilch/include/downs/uploads/admin/bild.gif["/img"]


    in meinem Fall heißt das Bild eben "bild" und hat die endung gif

    hab es zwar probiert allerdings nicht geschafft.

    mich interessiert nähmlich nicht ob das Verzeichnis geschützt ist oder nicht das einzige was mich interessiert ist der BBcode^^


    und dann zeigt es noch an:

    Link zu deiner Datei ist: localhost/ilch/include/downs/uploads/admin/erstentwurf.gif

    oberhalb vom uploader das kann man lassen und darunter gleich den bbcode schreiben nur den rest das. Die Datei soll geschützt werden oder so interessiert mich nicht.



    Zuletzt modifiziert von Thumbnail am 14.07.2007 - 18:31:40
    Nur Idioten halten Ordnung. Ein Meister beherrscht das Chaos
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Naja hab die Auflistung und das mit dem Verzeichnis mal entfernt und das mit dem BBCode hinzugefügt.
    <?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; 
    }*/ 
    
    if (loggedin() AND $_SESSION['authright'] <= $right) { 
    $name = escapeshellcmd($_SESSION['authname']); 
    $uploadordner .= $name.'/'; 
    $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'); 
    } 
    
    if (($sizelimit == "yes") && ($_FILES['file']['size'] > $sizebytes)) { 
    echo "Die Datei ist zu gro&szlig;, 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 &auml;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.'">'.$link.'</a><br />BBCode: [img]'.$link.'[/img]<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&auml;hlen:</td><td><input type="file" name="file" value="durchsuchen"></td></tr> 
    <tr><td height="27"><input type="submit" name="senden" value="Datei hochladen"></td></tr> 
    </table> 
    </form><br /> 
    <? 
    } else echo 'Diese Funktion steht für dich nicht zur Verfügung!<br />'; 
    $design->footer(); ?>



    Zuletzt modifiziert von Mairu am 23.07.2007 - 20:02:03
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    MagistYata Mitglied
    Registriert seit
    22.12.2007
    Beiträge
    861
    Beitragswertungen
    6 Beitragspunkte
    Muss den alten Thread noch mal her holen.
    Habe gerade festgestellt, dass wenn ein User die Dateien "nicht sichtbar" macht, ich sie als Admin auch nicht sehen kann.

    Gibt es da eine Lösung, dass ich als Admin die Dateien vorher freischalten muss, bzw. nachkontrollieren kann das keine verbotenen Dateien hochgeladen werden?

    Selbst ich als Admin kann meine eigenen Dateien nicht sehen, wenn ich sie "nicht sichtbar" eingestellt habe.
    Streß ist Lebensdiebstahl
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Du hast schon diese ein-Dateien Version?
    Also das ist eine Webservereinstellung, dass man den Inhalt eines Ordner nichts sehen kann und hat nichts mit Rechten etc. zu tun.
    Ich hab das mal zum Modul gemacht mit Admininterface, sollte es auf meiner Seite geben, ich weiß nicht genau wie es da ist, aber ich denke da kann man die Order auch als Admin sehen, da gibts ne eigene Auflistung.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    MagistYata Mitglied
    Registriert seit
    22.12.2007
    Beiträge
    861
    Beitragswertungen
    6 Beitragspunkte
    Ich habe was? Eine ein-Dateien Version?
    Nee, habe das Upload Modul von dir Version 1.0.
    Man kann im Admin Menü alle Ordner sehen.
    Ich kann aber nur die Ordner öffnen, die von den einzelnen Usern freigegeben worden sind. Ansonsten habe ich einen 403 Fehlercode

    Wie ich schon geschrieben habe. Ich habe einen Webspace Ordner als Admin. Wenn ich nun "nicht sichtbar für alle" aktiviere, so habe selbst ich als Admin keinen Zugriff auf meinen eigenen Ordner.
    Streß ist Lebensdiebstahl
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten