скрыть код на определенной странице

Как убрать что угодно на любом сайте

Самый популярный приём разработчиков.

Итак, очередной сайт решил перегородить вам обзор своей никчемной нападайкой. Она должна провисеть на экране 10 секунд и только потом отключиться. Но зачем тратить 10 секунд жизни, если можно отключить нападайку самостоятельно за 8?

Как работают всплывающие нападайки и поп-апы с рекламой

Такие всплывающие окна делаются очень просто:

Наша задача — отключить оба объекта, чтобы они пропали с глаз долой.

скрыть код на определенной странице. browser. скрыть код на определенной странице фото. скрыть код на определенной странице-browser. картинка скрыть код на определенной странице. картинка browser. Самый популярный приём разработчиков. скрыть код на определенной странице. image3 1. скрыть код на определенной странице фото. скрыть код на определенной странице-image3 1. картинка скрыть код на определенной странице. картинка image3 1. Самый популярный приём разработчиков.

Всё дело — в CSS

Чтобы компьютер понимал, какие элементы есть на странице, используют язык HTML, который говорит: «Тут заголовок, тут ссылка, тут обычный текст, тут картинка». А чтобы было ясно, как эти элементы должны выглядеть и работать, используют специальные правила — их называют стилями. Стили задают цвет и внешний вид всего, что есть на странице, а ещё управляют размером и поведением каждого элемента.

Стили хранятся в таблицах, таблицы называют каскадными, всё вместе называется CSS — cascading style sheets.

👉 Вот больше примеров и практики по CSS:

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

Как найти код нужного элемента

Чтобы увидеть, какой именно кусок кода отвечает за всплывающее окно, будем пользоваться средствами самого браузера — Инспектором. В Хроме он вызывается нажатием клавиш Ctrl+Shift+i, а в Сафари — Cmd+Option+i.

скрыть код на определенной странице. browser. скрыть код на определенной странице фото. скрыть код на определенной странице-browser. картинка скрыть код на определенной странице. картинка browser. Самый популярный приём разработчиков. скрыть код на определенной странице. image4. скрыть код на определенной странице фото. скрыть код на определенной странице-image4. картинка скрыть код на определенной странице. картинка image4. Самый популярный приём разработчиков.

Но есть ещё один способ, который сейчас нам подходит больше:

Мы нашли участок кода, который отвечает за назойливую рекламу. Теперь пусть браузер сам закроет окно. Для этого используем свойство display — оно решает, показывать этот элемент или нет.

Скрываем элемент со страницы

Осталось вставить эту команду в нужное место. Оставляем синюю линию Инспектора на той же строке и переходим на вкладку Styles:

скрыть код на определенной странице. browser. скрыть код на определенной странице фото. скрыть код на определенной странице-browser. картинка скрыть код на определенной странице. картинка browser. Самый популярный приём разработчиков. скрыть код на определенной странице. image2 3. скрыть код на определенной странице фото. скрыть код на определенной странице-image2 3. картинка скрыть код на определенной странице. картинка image2 3. Самый популярный приём разработчиков.

скрыть код на определенной странице. browser. скрыть код на определенной странице фото. скрыть код на определенной странице-browser. картинка скрыть код на определенной странице. картинка browser. Самый популярный приём разработчиков. скрыть код на определенной странице. image5. скрыть код на определенной странице фото. скрыть код на определенной странице-image5. картинка скрыть код на определенной странице. картинка image5. Самый популярный приём разработчиков.

Картинка исчезла, но осталось затемнение, которое всё равно мешает читать. Разберёмся и с этим: щёлкаем правой кнопкой мыши в любом месте затемнения, выбираем «Посмотреть код», вставляем в element.style нашу команду — готово.

скрыть код на определенной странице. Zapis ekrana 2021 05 04 v 16.39.35. скрыть код на определенной странице фото. скрыть код на определенной странице-Zapis ekrana 2021 05 04 v 16.39.35. картинка скрыть код на определенной странице. картинка Zapis ekrana 2021 05 04 v 16.39.35. Самый популярный приём разработчиков.

Это работает только с нападайками?

Этим способом можно скрыть что угодно, поскольку свойство display есть у всего на странице: у новостей ВКонтакте, постов в Facebook или картинок в Instagram.

❗️ Важный момент: всё, что мы делаем таким образом, происходит только внутри нашего браузера и не влияет на отображение сайта у других людей. Если перезагрузить страницу сайта, то сайт может напасть на вас рекламой снова.

Источник

Методы скрытия элементов веб-страниц

скрыть код на определенной странице. e9jtr4svpvlwf. скрыть код на определенной странице фото. скрыть код на определенной странице-e9jtr4svpvlwf. картинка скрыть код на определенной странице. картинка e9jtr4svpvlwf. Самый популярный приём разработчиков.

Веб-разработчикам приходится скрывать элементы веб-страниц по самым разным причинам. Например, есть кнопка, которая должна быть видимой при просмотре сайта на мобильном устройстве, и скрытой — при использовании настольного браузера. Или, например, имеется некий навигационный элемент, который должен быть скрыт в мобильном браузере и отображён в настольном. Элементы, невидимые на странице, могут пребывать в различных состояниях:

HTML5-атрибут hidden

Рассмотрим следующий пример:

В CSS я воспользовался атрибутом hidden для вывода элемента только в том случае, если область просмотра страницы имеет необходимый размер.

скрыть код на определенной странице. 5fccf240a4fd79109f64e39aa6a5f318. скрыть код на определенной странице фото. скрыть код на определенной странице-5fccf240a4fd79109f64e39aa6a5f318. картинка скрыть код на определенной странице. картинка 5fccf240a4fd79109f64e39aa6a5f318. Самый популярный приём разработчиков.

Вот CSS-код, который здесь использован:

→ Вот пример этой страницы на CodePen

▍Атрибут hidden и доступность контента

Если рассмотреть атрибут hidden с точки зрения доступности контента, то окажется, что этот атрибут полностью скрывает элемент. В результате с этим элементом не смогут работать средства для чтения с экрана. Не используйте этот атрибут в тех случаях, когда некие элементы страниц нужно делать невидимыми для человека, но не для программ для чтения с экрана.

CSS-свойство display

Представим, что мы хотим скрыть изображение из предыдущего примера и решили воспользоваться следующим CSS-кодом:

При таком подходе изображение будет полностью исключено из документа (из так называемого document flow — «потока документа»), оно будет недоступно программам для чтения с экрана. Возможно, вы не очень хорошо представляете себе понятие «поток документа». Для того чтобы с этим понятием разобраться — взгляните на следующий рисунок.

скрыть код на определенной странице. image loader. скрыть код на определенной странице фото. скрыть код на определенной странице-image loader. картинка скрыть код на определенной странице. картинка image loader. Самый популярный приём разработчиков.

Синюю книгу убрали из стопки

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

скрыть код на определенной странице. image loader. скрыть код на определенной странице фото. скрыть код на определенной странице-image loader. картинка скрыть код на определенной странице. картинка image loader. Самый популярный приём разработчиков.

Если убрать книгу из стопки — положение других книг в ней изменится

▍Производится ли загрузка ресурсов, скрытых средствами CSS?

Если коротко ответить на этот вопрос — то да, загрузка таких ресурсов производится. Например, если элемент скрыт средствами CSS, и мы показываем этот элемент в некий момент работы со страницей, к этому моменту изображение уже будет загружено. Наличие на странице изображения, даже скрытого средствами CSS, приведёт к выполнению HTTP-запроса на его загрузку.

скрыть код на определенной странице. image loader. скрыть код на определенной странице фото. скрыть код на определенной странице-image loader. картинка скрыть код на определенной странице. картинка image loader. Самый популярный приём разработчиков.

Исследование страницы, содержащей скрытое изображение

Источник

Прячем, обфусцируем и криптуем клиентскую часть веб-приложений

Обфусцированный скрипт

Теория

скрыть код на определенной странице. facafd27. скрыть код на определенной странице фото. скрыть код на определенной странице-facafd27. картинка скрыть код на определенной странице. картинка facafd27. Самый популярный приём разработчиков.

Работа JJEncode

Базовое шифрование HTML/CSS

Что делать, если нам нужно зашифровать HTML или CSS код? Все просто: зашифровать на JavaScript, а после расшифровки вставить как HTML код.
Пример вставки (без шифровки/крипта/обфускации):

Точно так же мы поступим и с CSS-стилями:

Теперь постараемся абстрагироваться от HTML и CSS и поговорить только о самой сути — сначала скрытии, а затем и криптовке JavaScript.
Прежде, чем кто-либо захочет посмотреть и расшифровать наш код, он постарается его найти. Ниже ты найдешь несколько действенных методов сокрытия кода от глаз любопытных пользователей.

скрыть код на определенной странице. 9c355287. скрыть код на определенной странице фото. скрыть код на определенной странице-9c355287. картинка скрыть код на определенной странице. картинка 9c355287. Самый популярный приём разработчиков.

Прячем слово «][akep» в теле документа

Замена атрибутов тега

А теперь просто создадим папку «text», в которую положим наш скрипт («script.js») под именем «javascript» и поменяем атрибуты местами. Это будет выглядеть так:

Для лучшего эффекта сразу отвлечем внимание пользователя на путь. Например, так:

Проверено на личном опыте: работает отлично! Таким способом я сам накручивал партнерку по кликам, так как пришлось использовать накрутчик на JavaScript. Администрация партнерки его так и не увидела :).

JavaScript-обработчики

Данный способ также не является универсальным средством для сокрытия JS-кода, но все же я расскажу о нем. Главная идея состоит в том, чтобы прятать код внутрь обработчиков событий onLoad, onClick и т.д. То есть примерно в следующие конструкции:

Например, для тегов body и frameset есть обработчик onLoad, который запустит в нем прописанный код после загрузки страницы/фрейма.
Отмечу, что не для всех объектов обработчики одинаковы.

Cookie, Referrer и адрес

JavaScript можно также спрятать и в такие нестандартные места, как cookie (document.cookie), реферрер (document.referrer) и адрес страницы (location.href). В данном случае код будет храниться как обычный текст, а выполняться с помощью функции eval(), которая берет в качестве аргумента текст и выполняет его как JavaScript-код.
В качестве примера примем такое допущение, что у нас уже установлены кукисы следующего вида:

Теперь выполним этот алерт следующим образом:

Здесь мы берем текст всех cookie-записей для нашего хоста и делим его на части в местах, где стоит «||». Затем берем второй элемент ([1]) и запускаем его через eval().
Данный способ не так уж и плох, так как код, который мы хотим исполнить, не виден на самой странице, а также потому, что мы можем заставить код удалить самого себя! Пример реализации:

Аналогичным образом можно использовать и другие строки, доступные через JavaScript, например, location.href и document.referrer.

Сокрытие кода на Ajax

Нуллбайт атакует Оперу

Этот метод прост и достаточно эффективен, но, к сожалению, он рассчитан только на браузер Opera. Суть метода в том, чтобы перед скрываемым кодом поставить так называемый нуллбайт (нуллбайт или nullbyte — это символ с ASCII кодом «0»). Зачем? Затем, что Opera просто-напросто не показывает код во встроенном просмотрщике после данного символа. Пример:

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

Прячемся в HTML-коде и комментариях

Код можно легко спрятать в HTML, затем обработать его и выполнить. Например, вот так:

В данном случае мы спрятали код в атрибутах тега img, после чего обработали код всей страницы, собирая разбросанные кусочки. Таким же способом можно скрывать текст в HTML/JavaScript комментариях:

Отдельно стоит отметить, что очень эффективно можно прятать код внутри популярных фреймворков — например, jQuery, mooTools и подобных. Эти файлы не являются подозрительными, а исследование их займет много времени (хотя всегда существует возможность автоматического сравнения оригинала и измененного файла).
Теперь же, думаю, можно поговорить о том, что, в конце концов, видит эксперт безопасности, и о том, что исследуют антивирусы. Ниже читай о наиболее популярных методах криптовки и обфускации JS-кода.

Субституция стандартных функций/методов JavaScript

Данный метод ориентирован на то, чтобы вместо стандартных функций или методов JavaScript подставить свои переменные:

Флуд комментариями и кодом

Данный способ рассчитан на то, чтобы вставить в обфусцируемый код флуд, то есть что-то, что не несет смысловой нагрузки для кода скрипта. Флудить можно как код, так и комментарии:

В данном случае мы — во-первых, использовали внутреннюю переменную «cookie» объекта «document», как элемент массива. Во-вторых, мы перевели ее имя в шестнадцатеричный формат. Если бы мы использовали переменную «cookie» через точку, то есть как document.cookie, то мы бы не смогли перевести обращение к ней в шестнадцатеричный формат, так как это относится только к строкам (в массиве ключ является строкой), а в document.cookie строк нет.
PHP-функция перевода в шестнадцатеричный формат:

Трюк с несуществующими функциями

Как мы уже знаем из прочитанного выше, в JavaScript можно вызывать методы, как элементы обьекта: document.getElementById и document[‘getElementById’]. Оба варианта фактически одинаковы, различие есть только в записи — во втором варианте мы используем строку.
Как-то вечером я придумал очень интересный способ получения подобных строк. Например, нам нужно зашифровать вышеупомянутый «getElementById». Отвлечемся на короткое объяснение данного способа с помощью такого примера:

Этот скрипт не будет работать, так как функции b, c и d не были ранее объявлены. Теперь попробуем сделать так, чтобы этот код заработал, для этого будем использовать «песочницу» конструкции try<>catch()<>:

После запуска мы увидим ошибку, а это значит, что, хоть код и не является рабочим, он не остановил выполнение оставшейся корректной части.
А вот теперь мы зададимся вопросом, как такая схема может быть связана с шифрованием строки «getElementById»? А вот так:

После выполнения этого кода у нас получится строка «getElementById», содержащаяся в переменной «x».
В чем соль этого метода? В том, что эвристический анализ антивирусов при нахождении функций будет ругаться на то, что они не существуют. Тем самым мы обфусцируем код не на уровне шифровки строк разными способами, а на уровне получения данных строк от самого JavaScript.

Числа с помощью оператора «

» (тильда) является битовым отрицанием и используется вот так: «alert(

13);». Этот код выведет нам «-14». Работает данный оператор по принципу «-(число+1)».
Представим, что мы хотим присвоить переменной «a» какое-нибудь число, причем нигде это число не писать: «a =

[]»;
Данный код присвоит переменной «a» число «-1». Почему? Потому что массив представляет собой нейтральный элемент с числовым значением «0», следовательно,

Буквы и строки без строковых данных

Иногда требуется получить букву/символ или какой-то текст без его явного написания. Сделать это позволяет одна особенность JavaScript. В этом языке существуют различные внутрисистемные сообщения, которые можно преобразовать в текст, а затем этот текст обработать.
Например, представим, что нам нужно получить текст «code». Эта строка содержится в именах таких методов, как charCodeAt(), fromCharCode() и других. Получить текст можно следующим образом:

В данном примере переменная «a» будет содержать текст «code». Разберем подробнее. Попробуй исполнить вот такой код: «alert(alert+»);». Ты увидишь что-то вроде «function alert() < [native code] >». Тем самым, использовав всего-навсего два раза функцию alert(), мы получили совершенно другие символы.
Теперь постараемся понять, как это все работает. Представим, что у каждого объекта, функции и всего остального в JavaScript есть некое «описание». Чтобы получить к нему доступ, нужно явно изменить тип данного объекта или функции на строковой, присоединив, например, пустую строку (+»»).

Шифровка строк

Для шифровки/расшифровки строк в JavaScript существуют несколько полезных функций. Разберем некоторые из них:

Также есть два метода объекта String, которые работают с преобразованием символа в ASCII-код и наоборот:

Преобразование объектов/переменных

Имена объектов и переменных можно также преобразовать в строку (например, чтобы потом эту строку зашифровать). Преобразование происходит по тому же принципу, что и преобразование имен методов, то есть с помощью перехода из формы «.метод» в форму «[метод]». Для корректного преобразования нужно найти еще более высокий в иерархии объектов элемент, который бы имел внутри себя слово «document». Имя ему this. Согласно стандартам JavaScript, this не является объектом, а является оператором, возвращающим ссылку на объект. В результате теперь мы можем безболезненно использовать getElementById таким образом: «this[«document»][«getElementById»]».

Привязка кода

Избегание подозрительных функций

Советую также избегать явное использование функций eval(), document.write() и других. При поиске настоящего кода люди часто используют метод подстановки alert() вместо данных функций, так как после этого код можно сразу прочитать таким, каким мы его начинали шифровать, следовательно, весь смысл обфускации пропадает. Как же выполнить код, не используя фунцкию eval()?
Вспомним про то, что во главе всего стоит оператор this. С помощью него функцию eval() можно превратить вот в такой код:

После такого преобразования мы спокойно сможем использовать «a()» вместо «eval()».

Изменение на нечитаемые строки

Шифрование кода

Способов шифровки текста существует неограниченное количество, хотя все они основаны на использовании каких-либо текстовых/числовых функций. Часто работает конструкция: eval() + функция_расшифровки() + шифрованная_строка. Попробую без лишней воды показать один из таких способов.
Допустим, нам нужно зашифровать строку «alert(1);». Мне пришло в голову брать по два символа из нее, переводить их в числа (ASCII код), считывать их и рядом ставить первый символ в чистой (без перевода) форме. Только стоит учесть, что, разделяя код на такие двухбуквенные части, мы получим код примерно в 2-2,5 раза больше оригинала, а также нельзя забывать, что такие блоки лучше как-то разделять (как элемент массива или через разделитель). За разделитель возьмем знак «%», так как он делает шифрованную строку похожей на URL-строку. Напишем простой PHP-скрипт:

Вот что у нас получилось: « %a205%e215%t156%190%;59 ».
А теперь напишем дешифровщик этого кода на JavaScript:

Вызов кода в таком случае будет выглядеть так: «eval(d(‘%a205%e215%t156%190%;59’));».

Теперь остается только немного обфусцировать весь этот скрипт. Мы не будем использовать все описанные методы, а затронем лишь некоторые из них:

Напоследок

Ну что ж, подведем итоги. При комбинации всех этих способов можно быть на 100% уверенным, что простой или даже средний пользователь не сможет прочитать или скопировать к себе твой код. Но так как специалисты по компьютерной безопасности прекрасно знают о большинстве данных трюков, а также потому что я выкладываю эту информацию на всеобщее обозрение, могу предположить, что данные методы станут более популярными и известными. Я надеюсь, что ты сможешь использовать представленную информацию в благих целях.

скрыть код на определенной странице. 6c4da6ce. скрыть код на определенной странице фото. скрыть код на определенной странице-6c4da6ce. картинка скрыть код на определенной странице. картинка 6c4da6ce. Самый популярный приём разработчиков.

Делаем скрипт читаемым

скрыть код на определенной странице. b7f72ea7fa4cd764bcff301000c3d144. скрыть код на определенной странице фото. скрыть код на определенной странице-b7f72ea7fa4cd764bcff301000c3d144. картинка скрыть код на определенной странице. картинка b7f72ea7fa4cd764bcff301000c3d144. Самый популярный приём разработчиков.
Журнал Хакер, Сентябрь (09) 152
|qbz| (lopuxin.iv@yandex.ru, http://essenzo.net)
.

Источник

Как скрыть или удалить элемент со страницы при помощи jQuery

Есть несколько способов как можно удалить или скрыть практически любой элемент (селектор) на странице. Давайте рассмотрим случаи, когда это стоит делать, а когда нет.

Как скрыть HTML элемент при помощи jQuery

Для начала рассмотрим пару примеров, как мы можем скрыть элемент со страницы при помощи обычного CSS:

opacity — отвечает за прозрачность, height — за высоту нашего контейнера, display — за отображение, text-indent — обычно влияет только на отступ текста (в очень редких случаях такой вариант тоже можно применять). Не будем писать про извращения c position: absolute 🙂

В jquery чаще всего используют связки:

Кроме этого, иногда целесообразней использовать переключатели (toggle). Просто скрыв элемент, вы не убираете его из кода — это полезно когда в ваших скриптах он может позже появиться (на например это меню аккордеон — если вы удалите код со страницы нечего будет показывать). Для удаления селектора со страницы используется remove()

И хотя это не самый лучший вариант, ведь ваша страница сначала прогружается, а только потом скрипт ищет элемент и удаляет его. Будет гораздо лучше, если вы найдете файл, с помощью которого выводится тот или иной кусок кода, например на странице index.html или index.php — но если вы работаете с CMS, то не стоит рассчитывать что все будет так просто 🙂

Как скрыть или показать элемент используя анимацию на jQuery

Можно применять комбинацию fadeIn() и fadeOut(), использовать slideDown() и slideUp(), или же быстрая смена по клику — slideToggle() и fadeToggle(). Соответственно коды для них:

Конечно это не самый лучший вариант, и я вам настоятельно рекомендую несколько раз подумать прежде чем это всё использовать — ведь все эти эффекты создавались явно не для того чтобы скрывать элементы со страницы

Как скрыть элемент использую присвоение классов в jQuery

В самом начале статьи уже рассматривались варианты скрытия на CSS, самый адекватный это:

и как всегда вся магия jQuery умещается в несколько строк:

$(this).addClass(‘js-hidden’); — добавляем класс тому объекту, по которому мы кликнули,
$(this).removeClass(‘js-hidden’); — убираем класс по клику,
$(this).toggleClass(‘js-hidden’); — автоматом убираем или добавляем класс, по очереди.

Надеюсь, вы сами разберетесь какие из этих советов можно считать «вредными», а какие можно смело применять 🙂

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

— Создание сайтов на 1С-Битрикс любой сложности
— Вёрстка макетов Figma, Photoshop, Zeplin
— Поддержка проектов на Битриксе
— Разработка нового функционала для сайта
— Парсинг данных
— Выгрузка из файлов в формате XML, YML, XLS, XLSX, CSV, JSON
— Интеграция по API со сторонними сервисами
и многое другое

Источник

Как скрыть код javascript на веб-странице? [дубликат]

этот вопрос уже есть ответ здесь:

можно ли скрыть код Javascript из html веб-страницы, когда исходный код просматривается через функцию просмотра исходного кода браузерами?

Я знаю, что можно запутать код, но я предпочел бы быть скрытый из функции источника просмотра.

9 ответов

Я не уверен, что кто-то еще на самом деле обратился к вашему вопросу напрямую, который просматривается из команды View Source браузера.

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

но, если вы поместите свой javascript во внешний файл javascript, который входит в комплект:

Если бы вы действительно хотели сделать больше работы для просмотра источника, вы бы сделали все следующее:

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

нет, это невозможно.

Если вы не даете его браузеру, то браузер не имеет его.

Если вы это сделаете, то он (или легко следовать ссылка на него) является частью источника.

используйте Html Encrypter часть головы, которая имеет

четкий код invisible_debut.js is:

обратите внимание, что в конце я удаляю созданный сценарий. невидимый.js is:

невидимым.js не отображается в консоли, потому что он был удален и никогда в исходном коде, потому что создан javascript.

о invisible_debut.Джей-Эс, я запутал это, что значит что очень сложно найти url невидимой.js. Не идеально, но достаточно сложно для обычного хакера.

Я не уверен, что есть способ, чтобы скрыть эту информацию. Независимо от того, что вы делаете, чтобы запутать или скрыть все, что вы делаете в JavaScript, это все равно сводится к тому, что ваш браузер должен загрузить его, чтобы использовать его. Современные браузеры имеют инструменты веб-отладки / анализа из коробки, которые делают извлечение и просмотр скриптов тривиальными (просто нажмите F12 в Chrome, например).

Если вы беспокоитесь о разоблачении какой-то коммерческой тайны или алгоритма, то ваш единственный способ-инкапсулировать эту логику в вызов веб-службы и заставить вашу страницу вызывать эту функциональность через AJAX.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *