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/



