Heavenanvil Опубликовано 19 апреля, 2016 Поделиться Опубликовано 19 апреля, 2016 Здравствуйте. В прошлый раз сделал скрипт, помогающий изменять автора темы, благодаря чему можно создать анонимный раздел. Но мне этого показалось мало и вот, я решил немного доработать свой файлик. Скажу сразу, это не мод, не хак и вообще не относится к движку форума. Это просто 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 (или куда вы там его засунули), вы увидите вот такую картину: После того, как вы введете номер поста и свой пароль, появится примерно вот такое окно: Дальше думаю разберетесь. Есть два способа изменить время: сдвинуть вперед или назад на определенное количество времени, либо указать точное. Если в полях "сдвига" ничего не написано, то учитывается время из поля "Точное время". Внимание! Код очень сырой, кривой и весь на костылях, поскольку я не специалист и поэтому использование этого кода только на ваш страх и риск, ко мне прошу никаких претензий. Но у меня всё работает p.s. Решил дописать, если для вас составляет трудность, определить id поста, то можете в редакторе шаблонов, например в forums -> topics -> post или forums -> topics -> postContainer в нужное вам место вставить {$comment->pid} У меня получилось вот так: hostrk, ArcheR_AWG, Ryo и 3 других 6 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Redneck Опубликовано 19 апреля, 2016 Поделиться Опубликовано 19 апреля, 2016 Вот готовый плагин для анонимных сообщений - https://invisionpower.com/files/file/7862-post-anonymously-in-forums/ Вот готовый плагин для смены автора темы - https://invisionpower.com/files/file/7352-change-post-author/ Megalex, t_reks и Respected 3 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Heavenanvil Опубликовано 19 апреля, 2016 Автор Поделиться Опубликовано 19 апреля, 2016 Redneck, спасибо за ссылки. Правда думаю эти плагины работают не совсем так, как мне нужно. В плагине анонимного постигла пользователи сами переключают возможность анонимного постинга, а у меня получается раздел (а-ля послушано). И могу сделать анонимным любой пост быстро. Хотя я его не ставил, не знаю точно. Плагине смены автора хорош, но у меня ещё есть возможность смены времени и аппрува, если тема не утверждена. Да и зачем я буду покупать, когда могу сделать сам)) *Постигла=постинга *Плагине=плагин. Очепятки)) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
ArcheR_AWG Опубликовано 20 апреля, 2016 Поделиться Опубликовано 20 апреля, 2016 13 часов назад, Sergeevich сказал: Да и зачем я буду покупать, когда могу сделать сам)) Зачем я буду делать сам, когда могу скачать? Простите - шутка минутка А вообще задумка интересная ) Heavenanvil 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Heavenanvil Опубликовано 20 апреля, 2016 Автор Поделиться Опубликовано 20 апреля, 2016 @ArcheR_AWG, просто скачать или купить и скачать? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
ArcheR_AWG Опубликовано 20 апреля, 2016 Поделиться Опубликовано 20 апреля, 2016 41 минут назад, Sergeevich сказал: @ArcheR_AWG, просто скачать или купить и скачать? зависит от необходимости и срочности Heavenanvil 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Heavenanvil Опубликовано 5 мая, 2016 Автор Поделиться Опубликовано 5 мая, 2016 Я немного доработал свой скрипт и исправил пару ошибок, но изменить первое сообщение увы не могу. Если кому-то понадобится актуальная версия, пишите в личку. Askr и Ryo 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Heavenanvil Опубликовано 12 мая, 2016 Автор Поделиться Опубликовано 12 мая, 2016 Так как несколько раз уже просили в личку, выкладываю новую версию своего скрипта. Проделано очень много работы, кода стало в 3 раза больше. Исправлено куча ошибок. Пользуйтесь. db_time.php btt, Ryo и hostrk 3 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Verty Опубликовано 9 августа, 2016 Поделиться Опубликовано 9 августа, 2016 Установил, не хочет работать, когда ввожу ID поста и пароль пишет Table 'host5567_admin.forums_posts' doesn't exist Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Heavenanvil Опубликовано 17 августа, 2016 Автор Поделиться Опубликовано 17 августа, 2016 В 09.08.2016 в 00:20, Verty сказал: Установил, не хочет работать, когда ввожу ID поста и пароль пишет Table 'host5567_admin.forums_posts' doesn't exist Возможно проблема связана с вашим префиксом имен таблиц БД. Напишите мне в личку, попробуем решить вопрос. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Azazel Опубликовано 5 ноября, 2017 Поделиться Опубликовано 5 ноября, 2017 В 12.05.2016 в 09:13, Heavenanvil сказал: Так как несколько раз уже просили в личку, выкладываю новую версию своего скрипта. Проделано очень много работы, кода стало в 3 раза больше. Исправлено куча ошибок. Пользуйтесь. db_time.php Интересный скрипт. Жаль не работает. Файл настроил, загрузил, права выставил. При открытии файла белая страница. IPS 4.2.5. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Heavenanvil Опубликовано 5 ноября, 2017 Автор Поделиться Опубликовано 5 ноября, 2017 Версия ips тут не причем. Вероятно скрипт не адаптирован под php 7. Напишите мне в личку, решим вопрос. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
КонстантинОрлов Опубликовано 30 декабря, 2017 Поделиться Опубликовано 30 декабря, 2017 В 17.08.2016 в 12:46, Heavenanvil сказал: Возможно проблема связана с вашим префиксом имен таблиц БД. Напишите мне в личку, попробуем решить вопрос. У меня аналогичная проблема, как решить? Напишите в открытом доступе плз Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
КонстантинОрлов Опубликовано 30 декабря, 2017 Поделиться Опубликовано 30 декабря, 2017 Нашел решение. Нужно в файл автора добавить свой префикс ко всем таблицам. Я делал вручную, смотрел что в коде похоже на таблицу, смотрел есть ли она в PhpMyAdmin и если есть, то добавлял префикс. Удивительно, но получилось с первого раза, и даже код заработал - изменил дату поста. Очень удобно. Я думаю автор напишет точно, где именно добавлять префикс. Всего 125 добавлений надо будет сделать. Я могу сказать, что это следующие: core_members forums_posts forums_topics forums_forums core_search_index Heavenanvil 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
КонстантинОрлов Опубликовано 30 декабря, 2017 Поделиться Опубликовано 30 декабря, 2017 Пару багов нашел, описал тут http://forum.orkons.ru/topic/179-kak-smenit-datu-posta-ips-425/ Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Gondreznim Опубликовано 14 мая, 2018 Поделиться Опубликовано 14 мая, 2018 Братья, а если админ не имеет доступа к БД, то как можно поменять таблицу members? Надо изменить дату регистрации юзверя. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
tunofak Опубликовано 4 ноября, 2018 Поделиться Опубликовано 4 ноября, 2018 Ошибка на версии 4.3.6 - Unknown column 'название базы' in 'where clause' Я так понял, нужно что-то в скобки добавить, но не пойму что. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Heavenanvil Опубликовано 4 ноября, 2018 Автор Поделиться Опубликовано 4 ноября, 2018 28 минут назад, tunofak сказал: Ошибка на версии 4.3.6 - Unknown column 'название базы' in 'where clause' Я так понял, нужно что-то в скобки добавить, но не пойму что. А вы не путаете название базы и название столбца? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
tunofak Опубликовано 4 ноября, 2018 Поделиться Опубликовано 4 ноября, 2018 mysql_connect("localhost", "ЛОГИН", "ПАРОЛЬ"); // Ваши параметры подключения к бд mysql_select_db("bazamysql"); // Если у пользователя больше одной базы, имя этой базы (иначе эту строку нужно удалить) Я когда переходу по ссылке в dm_dbtime.php у меня показывает, что название базы bazamysql-1 (Я когда базу создавал, сделал такое название, потом я выкачал БД и заново закачал под названием bazamysql Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
bsnet Опубликовано 12 сентября, 2021 Поделиться Опубликовано 12 сентября, 2021 (изменено) Для 4.6 актуально, работает? ☺️ Вот ещё есть решение https://invisioncommunity.com/files/file/8684-change-post-date/ Изменено 12 сентября, 2021 пользователем bsnet Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
by_ix Опубликовано 12 сентября, 2021 Поделиться Опубликовано 12 сентября, 2021 31 минуту назад, bsnet сказал: Для 4.6 актуально, работает? ☺️ если на пхп от 5.6 и ниже скрип запускать будете, то вероятно. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 12 сентября, 2021 Поделиться Опубликовано 12 сентября, 2021 поменять mysql на mysqli с правкой синтаксиса и заработает Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.