Форумы портала PHP.SU » » Вопросы новичков » Скрипт поиска и удаления изображений. Помогите новичьку

Страниц (1): [1]
 

1. ushkom - 14 Декабря, 2017 - 15:36:42 - перейти к сообщению
Добрый день. Нужен скрипт для сравнения ссылок на изображения в базе и соответственно в папке на сервере. Если ссылки в базе нет а в папке есть это изображение, его с сервера удаляем. в сети нашел несколько похожих скриптов и собрал их в один.
Сам скрипт:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?
  2. if (!defined('DATALIFEENGINE')) {
  3.    define('DATALIFEENGINE', true);
  4. }
  5.  
  6. #позвол¤ем скрипту анализировать картинки без лимита (если их много будет)
  7. # ----------------------- декларирование основных параметров ------------------------
  8. #путь к папке с картинками
  9. define("IMGDIR", 'uploads/posts/2017-01/thumbs');
  10. #путь к конфигу
  11. define("CONF", 'engine/data/dbconfig.php');
  12. define( 'DATALIFEENGINE', true );
  13. #задать произвольный логин и пороль админа
  14. define( 'LOGIN', 'ushkom' );
  15. define( 'PASSWORD', 'ushkom102030' );
  16. class db{}
  17. # ----------------------- проверки ------------------------
  18. if (!is_dir(IMGDIR))
  19. die(IMGDIR . ' not found!');
  20. #подключаем длешный конфиг
  21. if (!file_exists(CONF))
  22. die(CONF .' not found!');
  23. include  CONF ;
  24. # ----------------------- настройки ------------------------
  25. header("Content-Type: text/html; charset=".COLLATE);
  26. # ----------------------- класы и функции ------------------------
  27. class SQL
  28. {
  29. public $server,$user,$password,$database,$connected;
  30.    function __construct($server,$password,$database,$user)
  31.    {
  32.        $this -> count = 0;
  33.        $this -> connected = false;
  34.        $this -> server = $server;
  35.        $this -> user = $user;
  36.        $this -> password = $password;
  37.        $this -> database = $database;
  38.    }  
  39.    function SetBase($base)
  40.    {
  41.    $this->database = trim($base);
  42.    }
  43.  
  44.    function connect()
  45.    {
  46.  
  47.        if ($this->connected)
  48.            mysql_close();
  49.        $curent = @mysql_connect ($this->server, $this->user, $this->password);
  50.        if (!$curent)
  51.        {
  52.            $this->connected = false;
  53.            return( mysql_error() );
  54.        }      
  55.        unset($curent);
  56.            $curent = @mysql_select_db ($this->database);
  57.            if (!$curent)
  58.            {
  59.                $this->connected = false;
  60.                return( mysql_error() );
  61.            }      
  62.        $this->connected = true;
  63.        $this->run("SET NAMES ".COLLATE);
  64.        return $this->connected;
  65.    }
  66.    function query($query)
  67.    {
  68.        $result = $this->run($query);
  69.        if (!$result)          
  70.            return(mysql_error());
  71.        $d = array ();
  72.                while ($row = mysql_fetch_assoc($result))
  73.                        $d[] = $row;  
  74.        return $d;
  75.    }
  76.  
  77.    function run($query)
  78.    {
  79.    if (!$this->connected)
  80.                $this -> connect();
  81.    $query = trim($query);
  82.    $result = mysql_query($query);
  83.    return $result;
  84.    }
  85. function SimpleQuery($query)
  86. {
  87.    $result = $this->run($query);
  88.        if (!$result)          
  89.            return(mysql_error());
  90.        $d = array ();
  91.        while ($row = mysql_fetch_assoc($result))
  92.                        return $row;  
  93.        return false;
  94. }
  95. }
  96. function IsUsed($name)
  97. {
  98. global $sql;
  99. $name = addslashes($name);
  100. $data = $sql -> query("select `id` from `" . PREFIX ."_post` where `short_story` like '%$name%' or `full_story` like '%$name%' or `xfields` like '%$name%'");
  101. if (!$data) return false;
  102. if (!isset($data[0])) return false;
  103. $id = '';
  104. foreach ($data as $c)
  105. {
  106. $id .= '<b>' . $c['id'] . '</b> , ';
  107. }
  108. return rtrim($id , ', ');
  109. }
  110. #--------------------авторизаци¤--------------------------------
  111. if (isset($_POST['Tlogin']))
  112. {
  113. if ($_POST['login'] == LOGIN && $_POST['password'] == PASSWORD) $_SESSION['logined'] = true;
  114. }
  115. if (!isset($_SESSION['logined']))
  116. {
  117. #если не залогинен
  118. ?>
  119. <form method="POST">
  120. LOGIN:</br><input type="text" name="login"></br>
  121. PASSWORD:</br><input type="password" name="password"></br>
  122. <input type="submit" name="Tlogin">
  123. </form>
  124. <?
  125. exit(0);
  126. }
  127. #всЄ ниже если залогинен
  128. #--------------------попытка подключитс¤ к базе----------------
  129. $sql = new SQL( DBHOST , DBPASS , DBNAME , DBUSER );
  130. $error = $sql -> connect();
  131. if (!$sql -> connected) die($error);
  132. #--------------главна¤ часть-------------
  133. $images = array_merge( glob(IMGDIR .'/*.jpg') , glob(IMGDIR .'/*.jpeg') , glob(IMGDIR .'/*.gif') , glob(IMGDIR .'/*.png'));
  134. if (is_null($images) || !isset($images['0'])) die("нет картинок !");
  135. ?>
  136. <table border="4">
  137. </tr>
  138.   <th>
  139.   название
  140.   </th>
  141.     <th>
  142.   используетс¤ (id)
  143.   </th>
  144.     <th>
  145.   предосмотр
  146.   </th>
  147.       <th>
  148.   ”далить
  149.   </th>
  150. </tr>
  151. <? foreach($images as $img)
  152. {
  153. echo "<tr>";
  154. #name
  155. echo "<td><a href='$img' target='blank'>$img</a></td>";
  156. #used
  157. $ids = IsUsed($img);
  158. if (!$ids)
  159. echo "<td><font color='red'>нигде не используется !</font></td>";
  160. else
  161. echo "<td>$ids</td>";
  162. echo "<td><img src='$img' height='50px'></img></td><td><a href='?d=".$img."'>Удалить!!!</a><br></td>";
  163.  
  164. if (!empty($_GET['d'])){
  165.        unlink($_GET['d']);}
  166.  
  167.  
  168.  
  169. }
  170. ?>
  171. </table>

Подскажите как можно сделать выборку и выводить только картинки которые не используются, и как их после просмотра можно массово удалить? большое всем спасибо за помощь.

 

Powered by ExBB FM 1.0 RC1