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ü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öße</th><th width=\"50\">Lö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ö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ü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 "Änderungen konnten nicht vorgenommen werden, überprü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öscht<br />"; else echo "Verzeichnis <b>{$files[$_POST['delid']]}</b> konnte nicht gelöscht werden, Verzeichnisse müssen leer sein damit man sie löschen kann.<br />"; } else { $del = unlink($ordner . $files[$filenr]); if ($del == true) echo "Datei <b>{$files[$filenr]}</b> erfolgreich gelöscht<br />"; else echo "Datei <b>{$files[$_POST['delid']]}</b> konnte nicht gelö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öße (Bytes):</td><td><input name="uplsize" type="text" value="<? echo $opt['v2']?>" size="16" /></td></tr> <tr class="Cnorm"><td>Ordnergröß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ä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="Ü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änken, da man sonst php Dateien hochladen könnte, mit denen man z.B. die Datenbank auslesen oder leeren könnte usw.</font></li> <li>Ordner (relativ zu index.php) muss existieren und die nötigen Rechte (CHMOD 777) haben</li> <li>Erweiterungen (Groß-&Kleinschreibung ist dabei egal) durch Komma getrennt und ohne zusätzliche Leerzeichen eintragen z.B.:txt,jpg,gif</li> <li>Dateigröße in Bytes, wenn 0 keine Beschränkung von diesem Script -> Gefahr von Fehlern, da Webserver die Größe meist beschränkt</li> <li>Ordnergröße (Limit aller Dateien im Ordner) in Bytes, wenn 0 keine Beschränkung von diesem Script</li> <li>.htaccess ist empfohlen, wird allerdings nicht auf allen Servern unterstü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/