ilch Forum » Ilch Clan 1.1 » Fehlersuche und Probleme » Upload Modul-Fehler im Adminbereich

Geschlossen
  1. #1
    User Pic
    corian Entwickler
    Registriert seit
    16.06.2011
    Beiträge
    1.096
    Beitragswertungen
    122 Beitragspunkte
    Hey, also ich habe folgendes Problen, ich kann nicht´s an dem Upload Modul änder.
    Ich würde gerne die Rechte verteilen wollen.
    Der Upload funktioniert sonst wunderbar, aber leider nur als Admin.



    <?php
    defined ('main') or die ('no direct access');
    defined ('admin') or die ('only admin access');
    
    $design = new design ('Admins Area', 'Admins Area', 2);
    $design->header();
    
    include_once('include/includes/func/upload.php');
    // Verzeichnisse aus dem Uploadordner auflisten (für Formular)
    function listdirs($dir)
    {
        $files = array_slice(scandir($dir), 2);
        $dirs = "<option value=\"keins\">keins</option>\n";
        foreach ($files as $filenr => $file) {
            if ($_POST['folder'] == $file) $sel = 'selected="selected"';
            else $sel = '';
            if (is_dir($dir . '/' . $file)) $dirs .= "<option value=\"$file\" $sel>$file</option>\n";
        }
        return $dirs;
    }
    // Verzeichnisinhalt auflisten
    function showdir($uploadordner)
    {
        global $sizelimituser;
        if (!is_dir($uploadordner)) {
            echo 'Uploadverzeichnis existiert nicht.';
            return false;
        } elseif (!is_writeable($uploadordner)) {
            echo 'Uploadverzeichnis ist schreibgesch&uuml;tzt.';
            return false;
        }
        $server = 'http://' . $_SERVER['HTTP_HOST'] . str_replace('admin.php', '', $_SERVER['PHP_SELF']);
        $dsize = 0;
        $pfiles = 0;
        $bool = true;
        $files = scandir($uploadordner);
        while ($bool AND substr(current($files), 0, 1) == '.') {
            $pfiles++;
            $bool = next($files);
        }
        $files = array_slice($files, $pfiles);
        if (!$upload_htaccess AND ($i = array_search('index.html',$files)) !== false) {
            unset($files[$i]);
        }
        $dirvis = (dir_access($uploadordner) == true ? 1 : 0);
        echo "<b>Dateien in dem Verzeichnis <a href=\"$server$uploadordner\" target=\"_blank\">" . short_string($server . $uploadordner, 70) . "</a>:</b><br />
      Verzeichnis ist " . ($dirvis == 1 ? '' : 'nicht') . " sichtbar für alle.<br />
      <script type=\"text/javascript\">
      function senddel(id) {
        document.files.delid.value = id;
        document.files.submit();
      }
      </script>
      <form name=\"files\" action=\"admin.php?upload\" method=\"post\">
      <input type=\"hidden\" name=\"folder\" value=\"{$_POST['folder']}\"/>
      <input type=\"hidden\" name=\"delid\" value=\"-1\"/>
      <table width=\"100%\">
      <tr class=\"Chead\" align=\"center\"><th>Dateien</th><th width=\"90\">Gr&ouml;&szlig;e</th><th width=\"50\">L&ouml;schen</th></tr>";
        foreach ($files as $filenr => $file) {
            if (is_dir($uploadordner . $file)) {
                $fsize = dirsize($uploadordner . $file . '/');
            } else {
                $fsize = filesize($uploadordner . $file);
            }        
            $dsize += $fsize;
            echo "<tr class=\"Cnorm\"><td><a href=\"$server$uploadordner$file\" target=\"_blank\">" . short_string($file, 43) . "</a></td><td align=\"right\">" . (is_dir($uploadordner . $file) ? 'DIR - ' : ' '). round($fsize / 1024, 1) . " K</td><td align=\"center\"><a href=\"javascript:senddel(" . ($filenr + $pfiles) . ");\"><img src=\"include/images/icons/del.gif\" alt=\"L&ouml;schen\" border=\"0\" \></a>";
        }
        if ($sizelimituser > 1) {
            $percentage = intval( $dsize / $sizelimituser * 100);
            $percentage2 = 100-$percentage;
            $rest = round( ($sizelimituser - $dsize) / 1024, 1) . " K";
        }
        $dsize = round( $dsize / 1024, 1) . " K";
        echo "<tr class=\"Cdark\"><td>".( $sizelimituser == 0 ? '' : "<table width=\"100%\" height=\"10\" title=\"Zu $percentage% ausgelastet, noch $rest verf&uuml;gbar\"><tr><td bgcolor=\"red\" width=\"$percentage%\"></td><td width=\"$percentage2%\"></td></tr></table>")."</td><td align=\"right\">$dsize</td><td></td></tr>";
        echo "</table></form>";
    }
    // Optionen in die Datenbank eintragen
    if (isset($_POST['sub_opt'])) {
        if (is_dir($_POST['uplfldr']) AND is_numeric($_POST['uplsize']))
            db_query("UPDATE `prefix_allg` SET  v1 = '" . escape($_POST['uplfldr'], 'string') . "',
                                                v2 = '" . escape($_POST['uplsize'], 'integer') . "',
                                                v3 = '" . escape($_POST['dirsize'], 'integer') . "',
                                                t1 = '" . escape($_POST['extensions'], 'string') . "',
                                                v4 = '" . ($_POST['extlimit_on'] == 'on' ? 1 : 0) . "',
                                                v5 = '" . escape($_POST['recht'], 'integer') . "',
                                                v6 = '" . escape($_POST['htaccess'], 'integer') . "'
                                                WHERE k = 'uploadmodul'");
        else echo "&Auml;nderungen konnten nicht vorgenommen werden, &uuml;berpr&uuml;fe deine Angaben!<br />";
    }
    // Optionen aus der Datenbank auslesen
    $opt = db_fetch_assoc(db_query("SELECT v1,v2,v3,v4,v5,v6,t1 FROM `prefix_allg` WHERE k = 'uploadmodul' LIMIT 1"));
    $ordner = $opt['v1'] . '/';
    $upload_htaccess = $opt['v6'];
    $sizelimituser = $opt['v3'];
    // Ordner für die Anzeige wählen
    if (isset($_POST['folder']) AND $_POST['folder'] != 'keins') $ordner = $opt['v1'] . '/' . $_POST['folder'] . '/';
    // Datei/Verzeichnis löschen
    if (isset($_POST['delid']) AND $_POST['delid'] != '-1') {
        $files = scandir($ordner);
        $filenr = $_POST['delid'];
        $err = error_reporting(0);
        if (is_dir($ordner . $files[$filenr])) {
            $del = rmdir($ordner . $files[$filenr]);
            if ($del == true) echo "Verzeichnis <b>{$files[$filenr]}</b> erfolgreich gel&ouml;scht<br />";
            else echo "Verzeichnis <b>{$files[$_POST['delid']]}</b> konnte nicht gel&ouml;scht werden, Verzeichnisse m&uuml;ssen leer sein damit man sie l&ouml;schen kann.<br />";
        } else {
            $del = unlink($ordner . $files[$filenr]);
            if ($del == true) echo "Datei <b>{$files[$filenr]}</b> erfolgreich gel&ouml;scht<br />";
            else echo "Datei <b>{$files[$_POST['delid']]}</b> konnte nicht gel&ouml;scht werden<br />";
        }
        error_reporting($err);
    }
    
    ?>
    <h2>Upload Modul</h2>
    <table width="100%" border="0" cellspacing="0">
    <tr>
      <td valign="top">
        <form name="folder" action="admin.php?upload" method="post">
          Ordner von:
          <select name="folder" onchange="this.form.submit()">
          <?php echo listdirs($opt['v1']);
    ?>
          </select>
        </form><br />
        <?php
        if ($ordner == $opt['v1'].'/') {
            $sizelimituser = 0;
        }
        showdir($ordner);
    ?>
      </td>
      <td valign="top">
        <form name="config" method="post" action="admin.php?upload"><table border="0" cellspacing="0">
          <tr class="Chead"><th colspan="2">Optionen</th></tr>
          <tr class="Cnorm"><td>Uploadorder:</td><td><input name="uplfldr" type="text" value="<? echo $opt['v1']?>" size="45" /></td></tr>
          <tr class="Cnorm"><td>Uploadgr&ouml;&szlig;e (Bytes):</td><td><input name="uplsize" type="text" value="<? echo $opt['v2']?>" size="16" /></td></tr>
          <tr class="Cnorm"><td>Ordnergr&ouml;&szlig;e (Bytes):</td><td><input name="dirsize" type="text" value="<? echo $opt['v3']?>" size="16" /></td></tr>
          <tr class="Cnorm"><td>Dateierweiterungen:</td><td rowspan="2"><textarea name="extensions" cols="45" rows="2"><? echo $opt['t1']?></textarea></td></tr>
          <tr class="Cnorm"><td><input name="extlimit_on" type="checkbox"<? echo ($opt['v4'] == 1 ? 'checked="checked"':' ')?>> Beschr&auml;nken</td>
          <tr class="Cnorm"><td>Recht:</td><td colspan="2"><select name="recht">
          <?php echo dblistee($opt['v5'], 'SELECT * FROM `prefix_grundrechte` WHERE id < 0 ORDER BY id DESC');
    ?>
          </select></td></tr>
          <tr class="Cnorm"><td>Zugriffsrecht auf Ordner</td><td><input type="radio" name="htaccess" value="1" <?php echo ($opt['v6'] == 1 ? 'checked="checked"' : '') ?>/> htaccess / <input type="radio" name="htaccess" value="0" <?php echo ($opt['v6'] == 0 ? 'checked="checked"' : '') ?> /> index.html </td></tr>
          <tr class="Cnorm"><td><input type="submit" value="&Uuml;bernehmen" name="sub_opt"/></td><td></td></tr>
        </table></form>
        <br />
        <b>Anmerkung:</b>
        <ul>
        <li><font color="red">Du solltest die Dateierweiterungen immer beschr&auml;nken, da man sonst php Dateien hochladen k&ouml;nnte, mit denen man z.B. die Datenbank auslesen oder leeren k&ouml;nnte usw.</font></li>
        <li>Ordner (relativ zu index.php) muss existieren und die n&ouml;tigen Rechte (CHMOD 777) haben</li>
        <li>Erweiterungen (Groß-&amp;Kleinschreibung ist dabei egal) durch Komma getrennt und ohne zusätzliche Leerzeichen eintragen z.B.:txt,jpg,gif</li>
        <li>Dateigr&ouml;ße in Bytes, wenn 0 keine Beschr&auml;nkung von diesem Script -> Gefahr von Fehlern, da Webserver die Gr&ouml;ße meist beschr&auml;nkt</li>
        <li>Ordnergr&ouml;ße (Limit aller Dateien im Ordner) in Bytes, wenn 0 keine Beschr&auml;nkung von diesem Script</li>
        <li>.htaccess ist empfohlen, wird allerdings nicht auf allen Servern unterst&uuml;tzt, deswegen gibt es noch die Variante ohne, wo eine index.html angelegt wird</li>
        </ul>
      </td>
    </tr></table>
    <?php
    $design->footer();
    
    ?>


    Hat wer ne Lösung?

    betroffene Homepage: www.boses-ladder.de/
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    she Mitglied
    Registriert seit
    13.11.2010
    Beiträge
    1.115
    Beitragswertungen
    82 Beitragspunkte
    ändere mal die <? in <?php
    Google+ shelfinger.eu
    Das Wissen verfolgt mich - doch ich bin schneller!
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    corian Entwickler
    Registriert seit
    16.06.2011
    Beiträge
    1.096
    Beitragswertungen
    122 Beitragspunkte
    ah ja danke so gehts, aber wieso?? ich dachte man kann das php weglassen.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    BAMBOIHH Mitglied
    Registriert seit
    22.05.2008
    Beiträge
    221
    Beitragswertungen
    23 Beitragspunkte
    ZitatZitat geschrieben von corian

    ah ja danke so gehts, aber wieso?? ich dachte man kann das php weglassen.


    Kommt auf die Config des Webservers an! zunge
    Besser ist es auf jeden Fall immer <?php zu verwenden!
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten