1Bot |
Отправлено: 3 октября 2011 — 17:49
|
Super Member
Покинул форум
Сообщений всего: 773
Дата рег-ции: Апр. 2009
Откуда: Днепропетровск
Репутация: 69
|
Для безопасности рекомендую проверить каждому свой форум на наличие не связанных с сообщениями файлов в папке/UPLOADS.
Скрипт нужно залить в корень форума и вызвать в браузере.
upload-list.php
CODE:<?php
/**************************************************************************
Поиск файлов в папке uploads форума ExBB FM 1.0 RC1, которые не связаны
с сообщениями в темах
(c) 1Bot aka Strobe, 2011
**************************************************************************/
echo <<<DATA
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=win1251">
<meta http-equiv="Content-Language" content="ru">
</head>
<body>
DATA;
// 1. пройти по всем форумам и считать имена файлов вложений
$linkfiles = array();
$reflink = array();
$df = @opendir('.');
if ($df) {
while(false !== ($f = readdir($df))) {
if ('.' == $f | '..' == $f | !is_dir($f) | 'FORUM' !== strtoupper(substr($f,0,5))) continue;
// $f - папка форума
$dt = @opendir($f);
if ($dt) {
while (false !== ($t = readdir($dt))) {
if (is_dir($t) | 'THD.PHP' !== strtoupper(substr($t,-7,7))) continue;
// $t - файл темы
$t_attach = 'ATTACHES-'.substr($t,0,strlen($t)-8).'.PHP';
if (file_exists($t_a = "./$f/$t_attach")) { // у темы есть прикрепленные файлы
$fp = @fopen($t_a,'r')
or die("Could not read from the file <b>$t_a</b>");
flock($fp, 1);
$filesize = filesize($t_a);
$filesize = (0 === $filesize) ? 1:$filesize-8;
fseek($fp,8);
$str = fread($fp,$filesize);
flock($fp, 3);
fclose($fp);
$str = unserialize($str);
foreach ($str as $k => $v) {
$s = array(
'hits' => $v['hits'],
'size' => $v['size'],
'type' => $v['type'],
'file' => $v['file'],
'topic' => $f.'/'.$t);
$reflink[$v['id']] = $s;
$linkfiles[] = $v['id']; // имя прикрепленного файла в папке uploads
}
unset($str);
}
}
closedir($dt);
}
}
closedir($df);
}
// 2. считать список файлов из uploads
$upfiles = array();
$d = @opendir('uploads');
if ($d) {
while (false !== ($e = readdir($d))) {
if ($e == 'index.html' | is_dir($e)) continue;
$upfiles[] = $e;
}
closedir($d);
}
// 3. вывод имен несвязанных с сообщениями файлов
$count = 0;
$size = 0;
echo "<h2>Losted files</h2>\n";
echo "<table border=1 cellpadding=10>\n";
echo "<tr><th>Filename</th><th>Size (bytes)</th><th>Image</th></tr>\n";
foreach($upfiles as $file){
if (!in_array($file, $linkfiles)) {
$filesize = filesize("./uploads/$file");
echo "<tr><td>$file</td><td>$filesize</td><td> ";
if ('.EXT' !== strtoupper(substr($file,-4,4))) { // картинка
echo "<img src='./uploads/$file'>";
}
echo "</td></tr>\n";
$size += $filesize;
$count++;
}
}
echo "<tr><td>Total: $count file(s)</td><td>Total size: $size</td><td> </td></tr>\n";
echo '</table>';
echo <<<DATA
</body>
</html>
DATA;
?> |
|
|
yura3d |
Отправлено: 16 марта 2012 — 09:12
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
roma1 пишет:хотел спросить, дело в том что удалено много тем которые не актуальны, но картинки прикреплённые средствами форума в папке аплоадс остались и сильно утяжеляют форум, я понял что при удалении темы картинка или прикрепленное фото не удаляется, папка раздута ненужными файлами, их выгребать руками дело длительное, что делать?
Прикреплённые файлы должны удаляться, если удаляется тема, в которую они прикреплены. Проверьте правильность расстановки прав доступа на файлы в папке uploads. Взял на контроль этот вопрос, сегодня вечером посмотрю |
|
|
Леший |
Отправлено: 7 апреля 2012 — 17:31
|
Full Member
Покинул форум
Сообщений всего: 212
Дата рег-ции: Дек. 2011
Репутация: 7
|
1Bot пишет:Для безопасности рекомендую проверить каждому свой форум на наличие не связанных с сообщениями файлов в папке /UPLOADS.
Скрипт нужно залить в корень форума и вызвать в браузере.
upload-list.php
CODE:<?php
/**************************************************************************
Поиск файлов в папке uploads форума ExBB FM 1.0 RC1, которые не связаны
с сообщениями в темах
(c) 1Bot aka Strobe, 2011
**************************************************************************/
echo <<<DATA
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=win1251">
<meta http-equiv="Content-Language" content="ru">
</head>
<body>
DATA;
// 1. пройти по всем форумам и считать имена файлов вложений
$linkfiles = array();
$reflink = array();
$df = @opendir('.');
if ($df) {
while(false !== ($f = readdir($df))) {
if ('.' == $f | '..' == $f | !is_dir($f) | 'FORUM' !== strtoupper(substr($f,0,5))) continue;
// $f - папка форума
$dt = @opendir($f);
if ($dt) {
while (false !== ($t = readdir($dt))) {
if (is_dir($t) | 'THD.PHP' !== strtoupper(substr($t,-7,7))) continue;
// $t - файл темы
$t_attach = 'ATTACHES-'.substr($t,0,strlen($t)-8).'.PHP';
if (file_exists($t_a = "./$f/$t_attach")) { // у темы есть прикрепленные файлы
$fp = @fopen($t_a,'r')
or die("Could not read from the file <b>$t_a</b>");
flock($fp, 1);
$filesize = filesize($t_a);
$filesize = (0 === $filesize) ? 1:$filesize-8;
fseek($fp,8);
$str = fread($fp,$filesize);
flock($fp, 3);
fclose($fp);
$str = unserialize($str);
foreach ($str as $k => $v) {
$s = array(
'hits' => $v['hits'],
'size' => $v['size'],
'type' => $v['type'],
'file' => $v['file'],
'topic' => $f.'/'.$t);
$reflink[$v['id']] = $s;
$linkfiles[] = $v['id']; // имя прикрепленного файла в папке uploads
}
unset($str);
}
}
closedir($dt);
}
}
closedir($df);
}
// 2. считать список файлов из uploads
$upfiles = array();
$d = @opendir('uploads');
if ($d) {
while (false !== ($e = readdir($d))) {
if ($e == 'index.html' | is_dir($e)) continue;
$upfiles[] = $e;
}
closedir($d);
}
// 3. вывод имен несвязанных с сообщениями файлов
$count = 0;
$size = 0;
echo "<h2>Losted files</h2>\n";
echo "<table border=1 cellpadding=10>\n";
echo "<tr><th>Filename</th><th>Size (bytes)</th><th>Image</th></tr>\n";
foreach($upfiles as $file){
if (!in_array($file, $linkfiles)) {
$filesize = filesize("./uploads/$file");
echo "<tr><td>$file</td><td>$filesize</td><td> ";
if ('.EXT' !== strtoupper(substr($file,-4,4))) { // картинка
echo "<img src='./uploads/$file'>";
}
echo "</td></tr>\n";
$size += $filesize;
$count++;
}
}
echo "<tr><td>Total: $count file(s)</td><td>Total size: $size</td><td> </td></tr>\n";
echo '</table>';
echo <<<DATA
</body>
</html>
DATA;
?> у меня всё подряд показывает. И лишние картинки,и прикрученные к сообщениям. Для поиска лишних файлов использую это: CODE:<?php
$listok='index.php';
if ($handle = opendir('./'))
{
echo "";
while (false !== ($file = readdir($handle)))
{
if(is_file($file))
{
if($file!=$listok and $file!='style.css')
{
print"<table align='center' style='font-size:13;font-family:Comic Sans MS;width:300;height:200;border:solid black 1;'>\n";
print"<tr><th style='width:150px;'>\n";
print"<A HREF='$file' target='blank'>\n";
print"<img src='$file' style='border:dotted 1 silver;width:150;height:130;'></a>\n";
print"</th><th>".$file."\n<br></th></tr></table>\n";
}
}
}
closedir($handle);
}
?>
загружается в саму папку uploads с именем index.php и запускается строкой сайт/uploads/index.php можно использовать в качестве галереи,удалив в таблице последнюю ячейку <th>. |
|
|
|