Перейти к содержанию

Heavenanvil

Актив
  • Постов

    89
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Сообщения, опубликованные Heavenanvil

  1. В любом случае этот блок видят только админы.

    А я бы предпочел узнавать о выходе новых версий (а также нуллов :D), так что мне оно не мешает.

    Просто, в главной панели админки не часто бываю, а значит возможно несвоевременное обновление движка ≈ уязвимость.

  2. Redneck, спасибо за ссылки. 

    Правда думаю эти плагины работают не совсем так, как мне нужно. В плагине анонимного постигла пользователи сами переключают возможность анонимного постинга, а у меня получается раздел (а-ля послушано). И могу сделать анонимным любой пост быстро. Хотя я его не ставил, не знаю точно. 

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

    Да и зачем я буду покупать, когда могу сделать сам)) 

    *Постигла=постинга 

    *Плагине=плагин. 

    Очепятки)) 

  3. Здравствуйте.

    В прошлый раз сделал скрипт, помогающий изменять автора темы, благодаря чему можно создать анонимный раздел.

    Но мне этого показалось мало и вот, я решил немного доработать свой файлик.
    Скажу сразу, это не мод, не хак и вообще не относится к движку форума.
    Это просто php файл, который изменяет данные в вашей MySQL базе.

    Итак, в любом месте вашего форума создаем файлик, с именем db_time.php и копируем в него вот это:
     

    Спойлер
    
    <!DOCTYPE html>
    <html>
    <head>
      <META content="text/html; charset=utf-8" http-equiv="Content-Type">
      <style>
      table {
        border: 1px solid #ccc;
        border-radius: 5px;
      }
      table td {
        padding: 2px;
      }
      tr:nth-child(2n-1) {
        background: #f8f8f8;
      }
      body {
        font-family: Tahoma, Arial;
        font-size: 13px;
      }
      a {
        text-decoration: none;
        cursor: pointer;
      }
      a:hover {
        text-decoration: underline;
      }
      </style>
    </head>
    <body>
      <?php
    $mypass = "1234";                 //Ваш секретный пароль
    $mypage = "db_time.php";          //Имя этого файла
    $id_post = $_POST['id_post'];
    $pass = $_POST['pass'];
    $days = $_POST['days'];
    $hours = $_POST['hours'];
    $minuts = $_POST['minuts'];
    $seconds = $_POST['seconds'];
    $plusminus = $_POST['plusminus'];
    $approved = $_POST['approved'];
    $calendar_dt = $_POST['calendar_dt'];
    $dt = new DateTime($calendar_dt);
    $author_id = $_POST['author_id'];
    $new_author = $author_id;
    
    if (!isset($dt)) { $dt = "0"; }
    if (!isset($days)) { $days = "0"; }
    if (!isset($hours)) { $hours = "0"; }
    if (!isset($minuts)) { $minuts = "0"; }
    if (!isset($seconds)) { $seconds = "0"; }
    if (!isset($plusminus)) { $plusminus = "0"; }
    if (!isset($approved)) { $approved = "0"; }
    if (!isset($author_id)) { $author_id = "1"; }
    
    if (!isset($message)) { $message = "<span style=\"color: #777\">Введите параметры</span>"; }
    
    mysql_connect("localhost", "username", "password");    //Ваши параметры подключения к бд 
    mysql_select_db("dbname");                         //Если у пользователя больше одной базы, имя этой базы (иначе эту строку нужно удалить... вроде :) )
    mysql_query  ("set_client='utf8'");
    mysql_query  ("set character_set_results='utf8'");
    mysql_query  ("set collation_connection='utf8_general_ci'");
    mysql_query  ("SET NAMES utf8");
    
    if ((isset($id_post)) AND ($id_post != "") AND ($pass == $mypass))
      {
        $sql = "SELECT `post_date` FROM `forums_posts` WHERE `pid` = $id_post";
        $result = mysql_query($sql) or die(mysql_error());
        $current_post_time = mysql_fetch_array($result);
        
        
        if ((isset($current_post_time)) AND ($current_post_time != "")) 
          {
            $sql1 = "SELECT `author_name` FROM `forums_posts` WHERE `pid` = $id_post";
            $result1 = mysql_query($sql1) or die(mysql_error());
            $post_author = mysql_fetch_array($result1);
            $post_author_old = $post_author[];
      
            $sql7 = "SELECT `author_id` FROM `forums_posts` WHERE `pid` = $id_post";
            $result7 = mysql_query($sql7) or die(mysql_error());
            $author_id  = mysql_fetch_array($result7);
            $old_author = $author_id[];
      
            if (!isset($new_author))        
              {
                $new_author = $old_author;
              }
        
            $sql10 = "SELECT `name` FROM `core_members` WHERE `member_id` = $new_author";
            $result10 = mysql_query($sql10) or die(mysql_error());
            $post_author_new  = mysql_fetch_array($result10);
            $post_author_new1 = $post_author_new[];
            $post_author_new2 = mysql_escape_string($post_author_new1);
    
            if ((isset($current_post_time)) AND ($current_post_time != "")) 
              {
                $current_post_time1 = date('H:i:s, d.m.Y ', $current_post_time[]);
                $message = "<span style=\"color: #777\">Время поста: <strong>". $current_post_time1 ."</strong> (" . $current_post_time[] . ") </span>";
              }
            }
          else
          {
            $message = "<span style=\"color: red\">Неверное введен id поста (" . $id_post . ")</span>";
          }
        }
    
      
    
    
    if ((isset($current_post_time[])) AND ($current_post_time[] != "") AND ($plusminus != )) 
      {
        if ($plusminus == 1) {  $new_post_time = $current_post_time[] + ($seconds + ($minuts * 60) + ($hours * 60 * 60) + ($days * 60 * 60 * 24));  }
        if ($plusminus == 2) {  $new_post_time = $current_post_time[] - ($seconds + ($minuts * 60) + ($hours * 60 * 60) + ($days * 60 * 60 * 24));  }
        if ((isset($new_post_time)) AND ($new_post_time > ))
          {
            $new_post_time1 = date('H:i:s, d.m.Y ', $new_post_time);
            $message = "<span style=\"color: #0fc834\">Новое время: <strong>". $new_post_time1 ."</strong> (" . $new_post_time . "). ID автора: " . $new_author . "</span>";
          }
      }
    
    if ((($days == "0") AND ($hours == "0") AND ($minuts == "0") AND ($seconds == "0")) OR (($days == "") AND ($hours == "") AND ($minuts == "") AND ($seconds == ""))) 
      {
        if ((isset($calendar_dt)) AND ($calendar_dt != "")) 
          {
            $new_post_time = $dt->getTimestamp();
            if ((isset($new_post_time)) AND ($new_post_time > ))
              {
                $new_post_time1 = date('H:i:s, d.m.Y ', $new_post_time);
                $message = "<span style=\"color: #0fc834\">Новое время: <strong>". $new_post_time1 ."</strong> (" . $new_post_time . "). ID автора: " . $new_author . "</span>";
              }
          }
      }
    
    if ($pass == $mypass) 
      {
        if ((isset($new_post_time)) AND ($new_post_time > ))  
          {
            $old_post_time = $current_post_time[];  
            $sql2 = "UPDATE `forums_posts` SET `post_date` = $new_post_time WHERE `post_date` = $old_post_time";
            $result2 = mysql_query($sql2) or die(mysql_error());
              
            $sql3 = "UPDATE `forums_topics` SET `start_date` = $new_post_time WHERE `start_date` = $old_post_time";
            $result3 = mysql_query($sql3) or die(mysql_error());
      
            $sql4 = "UPDATE `forums_topics` SET `last_post` = $new_post_time WHERE `last_post` = $old_post_time";
            $result4 = mysql_query($sql4) or die(mysql_error());
      
            $sql5 = "UPDATE `forums_topics` SET `last_real_post` = $new_post_time WHERE `last_real_post` = $old_post_time";
            $result5 = mysql_query($sql5) or die(mysql_error());
      
            $sql6 = "UPDATE `forums_forums` SET `last_post` = $new_post_time WHERE `last_post` = $old_post_time";
            $result6 = mysql_query($sql6) or die(mysql_error());  
      
            $sql11 = "UPDATE `forums_forums` SET `last_poster_id` = $new_author WHERE `last_post` = $old_post_time";
            $result11 = mysql_query($sql11) or die(mysql_error());
      
            $sql12 = "UPDATE `forums_topics` SET `last_poster_id` = $new_author WHERE `start_date` = $old_post_time";
            $result12 = mysql_query($sql12) or die(mysql_error());
      
            $sql13 = "UPDATE `forums_topics` SET `last_poster_id` = $new_author WHERE `last_post` = $old_post_time";
            $result13 = mysql_query($sql13) or die(mysql_error());
      
            $sql14 = "UPDATE `forums_topics` SET `starter_id` = $new_author WHERE `last_post` = $old_post_time";
            $result14 = mysql_query($sql14) or die(mysql_error());
      
    
            if ((isset($id_post)) AND ($id_post != "")) 
              {
                $sql8 = "UPDATE `forums_posts` SET `author_id` = $new_author WHERE `post_date` = $old_post_time";
                $result8 = mysql_query($sql8) or die(mysql_error());  
              }
      
            if ($approved == "1")
              {
                $sql15 = "UPDATE `forums_topics` SET `approved` = 1 WHERE `start_date` = $old_post_time";
                $result15 = mysql_query($sql15) or die(mysql_error());
              }
      
            if ($approved == "2")
              {
                $sql15 = "UPDATE `forums_topics` SET `approved` = 0 WHERE `start_date` = $old_post_time";
                $result15 = mysql_query($sql15) or die(mysql_error());
              }
    
            }
      }
    else
      {
        if ((isset($pass)) AND ($pass != $mypass))
          {
            $message = "<span style=\"color: red\">Неверный пароль!</span>";
          }
      }
    
    
    if ((isset($new_post_time)) AND ($new_post_time > ))
      {
        $oktime = date('Y-m-d\TH:i:s', $new_post_time);
      }
    else 
      {
        $oktime = date('Y-m-d\TH:i:s', $current_post_time[]);
      }
    ?>
          <form method="post" action="<?php echo $mypage; ?>">
            <table align="center">
              <tr>
                <td colspan="2" align="center">
                  <?php echo $message; ?>
                </td>
              </tr>
              <tr>
                <td width="350px">
                  ID поста: 
                  <?php if ((isset($id_post)) AND ($id_post != "") AND ($pass == $mypass) AND (isset($current_post_time)))
                    {
                      echo "<strong>" . $id_post . "</strong>";
                    }
                  ?>
                    </td>
                <td width="100px" align="center">
                  <?php 
                  if ((isset($id_post)) AND ($id_post != "") AND ($pass == $mypass) AND (isset($current_post_time)))
                    {
                      echo ("<input type=\"text\" name=\"id_post\" size=\"10\" style=\"width: 5px; text-align: center; visibility: hidden; margin-right: -9px;\" readonly=\"readonly\" value=\"" . $id_post . "\">[<a href=\"". $mypage. "\">Изменить</a>]");
                    }
                  else
                    {
                      echo ("<input type=\"text\" name=\"id_post\" size=\"10\" style=\"width: 88px; text-align: center;\" placeholder=\"id поста\" value=\"" . $id_post . "\"");
                    }
                  ?>
                </td>
              </tr>
                <?php 
                  if ((isset($pass)) AND ($pass != $mypass))
                    {
                      $message = "<span style=\"color: red\">Неверный пароль!</span>";
                    }
    
                  if ((isset($current_post_time)) AND ($current_post_time != "") AND ($pass == $mypass)) 
                    {
                      echo ("
              <tr>
                <td colspan=\"2\">
                  Сдвиг времени:
                </td>
              </tr>
              <tr>
                <td>
                  <select size=\"1\"  name=\"plusminus\" style=\"width: 92px; height: 21px;\">
                    <option selected value=\"0\">Знак</option>
                    <option value=\"1\">Плюс</option>
                    <option value=\"2\">Минус</option>
                  </select>
                   <input type=\"text\" name=\"days\" size=\"3\" style=\"width: 50px; text-align: center;\" placeholder=\"дней\" value=\"\">
                   <input type=\"text\" name=\"hours\" size=\"3\" style=\"width: 50px; text-align: center;\" placeholder=\"часов\" value=\"\">
                   <input type=\"text\" name=\"minuts\" size=\"3\" style=\"width: 50px; text-align: center;\" placeholder=\"минут\" value=\"\">
                   <input type=\"text\" name=\"seconds\" size=\"3\" style=\"width: 50px; text-align: center;\" placeholder=\"секунд\" value=\"\">
                </td>
                <td align=\"center\">
                  <input type=\"reset\" style=\"width: 90px;\" value=\"Сброс\" />
                </td>
              </tr>
              <tr>
                <td colspan=\"2\">
                  Либо точное время:
                </td>
              </tr>
              <tr>
                <td>
                  <input type=\"datetime-local\" step=\"1\" value=\"" . $oktime ."\" name=\"calendar_dt\"/>
                </td>
                <td align=\"center\">
                  <input type=\"reset\" style=\"width: 90px;\" value=\"Сброс\" />
                </td>
               </tr>
               <tr>
                <td colspan=\"2\">
                    Изменить автора поста:
                </td>
              </tr>
              <tr>
                <td>
                  Текущий автор поста <strong>" . $post_author_new2 . "</strong> (id: " . $new_author . ")
                </td>
                <td width=\"70px\" align=\"center\">
                  <input type=\"text\" name=\"author_id\" size=\"3\" style=\"width: 88px; text-align: center;\" placeholder=\"id автора\" value=\"" . $new_author . "\">
                </td>
              </tr>
              <tr>
                <td>
                  Если пост является темой, утвердить?
                </td>
                <td width=\"70px\" align=\"center\">
                  <select size=\"1\"  name=\"approved\" style=\"width: 92px; height: 21px;\">
                    <option selected value=\"0\">Не менять</option>
                    <option value=\"1\">Да</option>
                    <option value=\"2\">Нет</option>
                  </select>
                </td>
              </tr>
                      ");
                    }
                ?>
               <tr>
                <td>
                  Введите пароль:
                </td>
                <td width="70px" align="center">
                  <input type="text" name="pass" size="10" style="width: 88px; text-align: center;" placeholder="пароль" value="<?php echo $pass ?>">
                </td>
              </tr>
              <tr>
                <td colspan="2" align="center">
                  <input type="submit" style="width: 90px;" value="Применить" />
                </td>
              </tr>
            </table>
          </form>
    </body>
    </html>

     

    Немного настраиваем наш файлик: Изменяем ваш секретный пароль, имя файла (если оно отличается от db_time.php) и настраиваем ваше подключение к базе данных.

    Теперь, при переходе по адресу, например http://ваш_сайт.ru/db_time.php (или куда вы там его засунули), вы увидите вот такую картину:

    0.png

    После того, как вы введете номер поста и свой пароль, появится примерно вот такое окно:

    1.png

    Дальше думаю разберетесь.
    Есть два способа изменить время: сдвинуть вперед или назад на определенное количество времени, либо указать точное.
    Если в полях "сдвига" ничего не написано, то учитывается время из поля "Точное время".

    Внимание! Код очень сырой, кривой и весь на костылях, поскольку я не специалист и поэтому использование этого кода только на ваш страх и риск, ко мне прошу никаких претензий.
    Но у меня всё работает :)

    p.s. Решил дописать, если для вас составляет трудность, определить id поста, то можете в редакторе шаблонов, например в forums -> topics -> post или forums -> topics -> postContainer в нужное вам место вставить {$comment->pid}
    У меня получилось вот так:
    2.png

  4. Всем привет. Решил сделать на своем форуме анонимный раздел, аналог "Подслушано".

    Суть его проста: Пользователь пишет сообщение, а оно публикуется анонимно.
    Но проблема в том, что форум не умеет делать анонимные сообщения. Можно, допустим написать от Гостя, но если гостям у вас на форуме запрещено писать?

    Возможно как-то можно разрешить гостям создавать темы только в определенном разделе, но я не нашел. Я придумал свой способ.

    Создаем нужный раздел, и ставим, в его настройках, модерацию новых тем, во вкладке "Публикация"
    Сообщения должны быть утверждены -> Новые темы

    Затем, создаем нового пользователя, называем его что-то вроде Аноним, или как пожелаете. Запоминаем его id.
    Ну, а дальше самое интересное. В папке с корнем форума создаем файлик, например anonim.php, и вставляем туда вот это

    Спойлер
    
    <!DOCTYPE html>
    <html>
    <head>
      <style>
      table {
        border: 1px solid #ccc;
        /* border="0" */
        border-radius: 5px;
      }
      table td {
        padding: 2px;
        /* cellpadding="0" */
      }
      tr:nth-child(2n-1) {
        background: #f8f8f8;
        /* Цвет фона */
      }
      body {
        font-family: Tahoma, Arial;
        font-size: 13px;
      }
      </style>
    </head>
    <body>
      <?php
    $topic_id_anon = $_POST['topic_anon'];	
    $pass = $_POST['password'];
    if (!isset($message)) {
    $message = "<span style=\"color: red\">Введите правильные параметры!</span>";
    }
    
    if (isset($_POST['new_user'])){
    $new_user = $_POST['new_user'];
    }
    else
    {
      $new_user = "1"; //id пользователя, который будет новым автором темы, если не введен вручную
    }
    mysql_connect("localhost", "username", "password");		//Параметры подключения к вашей БД (можно посмотреть в файле conf_global.php)
    mysql_select_db("db_name");
    mysql_query  ("set_client='utf8'");
    mysql_query  ("set character_set_results='utf8'");
    mysql_query  ("set collation_connection='utf8_general_ci'");
    mysql_query  ("SET NAMES utf8");
    
    if ((isset($pass)) AND ($pass == "6280"))                                                             //Ваш пароль
     {
    if ((isset($new_user)) AND ($new_user != "") AND (isset($topic_id_anon)) AND ($topic_id_anon != "") AND (isset($pass)) AND ($pass != ""))
      {
        $sql = "UPDATE `forums_topics` SET `starter_id` = $new_user WHERE `tid` = $topic_id_anon";        //Меняем автора темы
        $result = mysql_query($sql) or die(mysql_error());
    
        $sql2 = "UPDATE `forums_topics` SET `last_poster_id` = $new_user WHERE `tid` = $topic_id_anon";   //Меняем последнего автора сообщения
        $result2 = mysql_query($sql2) or die(mysql_error());
    
        $sql3 = "UPDATE `forums_posts` SET `author_id` = $new_user WHERE `topic_id` = $topic_id_anon";    //Меняем автора темы в списке тем
        $result3 = mysql_query($sql3) or die(mysql_error());
        $message = "<span style=\"color: green\">Выполнено. Не забудьте утвердить тему.</span>";
      } 
     }
    else
    {
      if ((isset($pass)) AND ($pass != "6280")) {    //Сюда вписываем свой пароль
    $message =  "<span style=\"color: red\">Неверный пароль!</span>";
    }
    else
    {
     $message = "<span style=\"color: #777\">Введите параметры:</span>";
    }
    }
    ?>
        <form method="post" action="db_vk.php">
          <table align="center" width="300px">
            <br>
            <tr>
              <td colspan="2" align="center">
                <?php echo $message; ?>
              </td>
            </tr>
            <tr>
              <td width="300px">
                ID нового автора темы
              </td>
              <td>
                <input type="text" name="new_user" size="3" style="width: 50px; text-align: center;"placeholder="id user" title="id нового автора темы" value="<?php echo "$new_user " ?>">
              </td>
              <br>
            </tr>
            <tr>
              <td>
                ID темы, которую нужно изменить
              </td>
              <td>
                <input type="text" name="topic_anon" size="3" style="width: 50px; text-align: center;" placeholder="id темы" title="id темы">
              </td>
            </tr>
            <tr>
              <td>
                Ваш секретный пароль
              </td>
              <td>
                <input type="text" name="password" size="3" style="width: 50px; text-align: center;" placeholder="пароль" title="Секретный пароль">
              </td>
            </tr>
            <tr>
              <td colspan="2" align="center">
                <input type="submit" style="width: 100px;" value="OK" />
              </td>
            </tr>
          </table>
        </form>
    </body>
    </html>

     

    Обязательно немного настраиваем наш файлик. Нужно указать параметры подключения к базе данных, а также свой пароль.

    Теперь при открытии страницы http://ваш_форум.ru/anonim.php

    Вы увидите примерно следующую картину:

    info.png

    Алгоритм примерно такой:

    • Пользователь создает тему в нашем разделе.
    • Мы с помощью нашего файлика меняем автора новой темы на своего анонима.
    • Утверждаем тему.

    Дальше думаю разбересь.

    Будут вопросы, пишите.

  5. Здравствуйте.

    Использую плагин Portal, на главной странице.
    Мне нужно рядом с заголовком темы, чтобы выводился его раздел.
    Заголовок выводится примерно так: {$topic->title}
    А как определить его раздел (категорию)?
    пробовал $topic->url, $topic->id, $topic->category и прочее.

×
×
  • Создать...