Боты через манифест часто ищут лазейки в СMS. Перед отключением Клауда проверьте, как найти уязвимости в вэб-приложении. Мы юзаем сканер уязвимостей CURATOR он подсветит бреши.
Проблема, частично решена. Прежде всего, неправильно был настроен домен! Его нужно было настроить глубже в файловой системе.
При нажатии на "Добавить в корзину" на странице определённого товара появляется цифра напротив "В корзине", "Добавить в корзину" - исчезает. Что и требовалось!
Остаётся один момент, который, по-хорошему, решить бы. Когда обновляешь страницу, то в корзине без изменений, а вот "Добавить в корзину" снова появляется (зачем?) на странице.
Как сделать, чтобы "Добавить в корзину" снова не появлялось? То есть, заходишь на страницу определённого товара - нажимаешь "Добавить в корзину" - и "Добавить в корзину" исчезает - и больше не появляется.
Как писал выше, при нажатии на 12/ в консоли выводились данные файла index.php, который к данному сайту не имел никакого отношения. Сначала удалил этот файл, в консоли появилось, что файл idex.php не найден. То есть, скрипт упорно продолжал искать этот файл... несмотря на то, что его нет. Тогда в файле Apache_vhost изменил путь с DocumentRoot "C:/OSPanel/domains/test/www" на "C:/OSPanel/domains/test/www/myshop.local/www"
Теперь, при нажатии в консоли на 12/ на вкладке Network-Preview появляется контент главной страницы:
Но, проблема, описанная в начале темы, так и остаётся.
totamon#: какая проблема в отдельном каталоге и домене расположить тестовый сайт? тем более это локалка
Делаю сайт по видеоуроку, но изначально, настроил домен не как у автора, не придав этому особого значения. Плюс к этому в одной директории расположил сразу несколько сайтов: по нескольку файлов index.php, .htacces, и образовалось такая каша. Немного опасаюсь, что если сейчас этот сайт вынесу в отдельный каталог и домен, то нужно будет все ссылки снова переделывать.
Последние действия... Как я уже писал выше, папка с моим сайтом находится в директории C:\OSPanel\domains\test\www\myshop.local Так вот, файл index.php лежит в этой же директории C:\OSPanel\domains\test\www\index.php (ранее я об этом не писал). Файл index.php сейчас пуст, но эта пустота отображается, если нажать в Network 12/ на вкладке Network - Preview, как писалось выше. Если этот файл удалить, то в Network будет вот, что:
То есть, возможно дело не скриптах, а я, что-то напутал в путях. Но что?
Файл htaccess, который лежит в папке со всеми сайтами:
Файл index.php, тоже который в сайте myshop.local:
<?php session_start(); // стартуем сессию
// если в сессии нет массива корзины, то создаём его if(! isset($_SESSION['cart'])) { $_SESSION['cart'] = array(); }
include_once '../config/config.php'; // Инициализация настроек include_once '../config/db.php'; // Инициализация базы данных include_once '../library/mainFunctions.php'; // Основные функции
// определяем с каким контроллером будем работать $controllerName = isset($_GET['controller']) ? ucfirst($_GET['controller']) : 'Index';
// определяем с какой функцией будем работать $actionName = isset($_GET['action']) ? $_GET['action'] : 'index';
// инициализируем переменную шаблонизатора количества элементов в корзине $smarty->assign('cartCntItems', count($_SESSION['cart']));
Смотрите. Обычно алгоритм поиска проблем с аяксом следующий 1. Отключаете любое кэширование 2. оставляете только xhr и очищаете все логи дебагера, включаете все сообщения в консоли 3. смотрите консоль нет ли каких ошибок с яваскриптом 4. производите действие. Которое должно привести к аяксовому запросу. 5. обращаетесь обратно к консоли. смотрите. Нет ли чего интересного (ошибок яваскрипта, сообщений от самого скрипта, выполнившего запрос) 6. если есть - изучаете вопрос, штопаете. Если нет открываете вкладку сеть 7. смотрите содержимое запроса. Что он передал на сервер (закладка "заголовки" и "запрс" ) и что он получил от сервера (закладка "ответ") 7а. запрос должен быть вида (адрес: Вашсайт.ru/путь/до/скрипта/обработчика.php , + запрос постом, в котором указываются параметры товара ) на что сайт возвращает джейсон с параметрами корзины. 8. проверяете правильный ли адрес, на который уходят данные (бывает так, что дергается другой скрипт) 9. Проверяете полноту отправляемых клиентом данных и подпись (если она используется) 10. Проверяете ответ сервера. 11. если сервер обрабатывает запрос, но не отправляет валидные данные, то скорее всего в отправляемый контент влезает какой-то мусор, от варнинга, до лишнего пробела 12. это проверяется очень просто. при релоаде страницы товар должен быть в корзине. Это говорит о том. что запрос с клиента на сервер поступает, но в обратную сторону идет битый джейсон. 13. если запрос из п.9 валидный, а товар все-равно в корзине не появляется, значит где-то ошибка в пхп скрипте и надо копать его.
Спасибо, конечно, но похоже, приходят данные с другого сайта, который расположен в этой же директории (При нажатии на 12/ на вкладке Network - Preview, как я выше писал). Не пойму, почему так происходит?
При выполнении запроса со стороны сервера приходит ответ. На вкладке network смотри док, который приходит в ответ на запрос (тип xhr, видимо 12/ это он). Нажми на него и посмотри текст ответа. Вариантов громадное количество, посмотри что возвращается. А еще лучше измени js на
И смотри приходящие данные в консоли. Если это не json, в чем я уверен на 99%, то смотри что отдает сервер.
При нажатии на 12/ на вкладке Network - Preview появляется:
Это контент другого сайта (bitrix.mini), не имеющего отношения к тому, о котором создана тема! Каким-то образом данные другого сайта попадают в этот. Просто, я два разных сайта: myshop.local (о котором сейчас речь) и другой - bitrix.mini расположил в одной директории:
При нажатии на 12/ на вкладке Network - Headers появляется:
При нажатии на 12/ на вкладке Network - Cookies появляется:
При нажатии на 12/ на вкладке Network - Response появляется:
Проблема, частично решена. Прежде всего, неправильно был настроен домен! Его нужно было настроить глубже в файловой системе.
При нажатии на "Добавить в корзину" на странице определённого товара появляется цифра напротив "В корзине", "Добавить в корзину" - исчезает. Что и требовалось!
Остаётся один момент, который, по-хорошему, решить бы. Когда обновляешь страницу, то в корзине без изменений, а вот "Добавить в корзину" снова появляется (зачем?) на странице.
Как сделать, чтобы "Добавить в корзину" снова не появлялось? То есть, заходишь на страницу определённого товара - нажимаешь "Добавить в корзину" - и "Добавить в корзину" исчезает - и больше не появляется.
Как это сделать в моём вышеприведённом коде?
Как писал выше, при нажатии на 12/ в консоли выводились данные файла index.php, который к данному сайту не имел никакого отношения. Сначала удалил этот файл, в консоли появилось, что файл idex.php не найден. То есть, скрипт упорно продолжал искать этот файл... несмотря на то, что его нет. Тогда в файле Apache_vhost изменил путь с DocumentRoot "C:/OSPanel/domains/test/www" на "C:/OSPanel/domains/test/www/myshop.local/www"
Теперь, при нажатии в консоли на 12/ на вкладке Network-Preview появляется контент главной страницы:
Но, проблема, описанная в начале темы, так и остаётся.
какая проблема в отдельном каталоге и домене расположить тестовый сайт? тем более это локалка
Делаю сайт по видеоуроку, но изначально, настроил домен не как у автора, не придав этому особого значения. Плюс к этому в одной директории расположил сразу несколько сайтов: по нескольку файлов index.php, .htacces, и образовалось такая каша. Немного опасаюсь, что если сейчас этот сайт вынесу в отдельный каталог и домен, то нужно будет все ссылки снова переделывать.
отправь запрос по полному URL, что будет?
Последние действия... Как я уже писал выше, папка с моим сайтом находится в директории C:\OSPanel\domains\test\www\myshop.local Так вот, файл index.php лежит в этой же директории C:\OSPanel\domains\test\www\index.php (ранее я об этом не писал). Файл index.php сейчас пуст, но эта пустота отображается, если нажать в Network 12/ на вкладке Network - Preview, как писалось выше. Если этот файл удалить, то в Network будет вот, что:
То есть, возможно дело не скриптах, а я, что-то напутал в путях. Но что?
Файл htaccess, который лежит в папке со всеми сайтами:
Тоже, файл htaccess, который лежит в сайте myshop.local, о котором и речь:
Файл index.php, тоже который в сайте myshop.local:
Не с путями ли, где-то, ошибка?
Смотрите. Обычно алгоритм поиска проблем с аяксом следующий
1. Отключаете любое кэширование
2. оставляете только xhr и очищаете все логи дебагера, включаете все сообщения в консоли
3. смотрите консоль нет ли каких ошибок с яваскриптом
4. производите действие. Которое должно привести к аяксовому запросу.
5. обращаетесь обратно к консоли. смотрите. Нет ли чего интересного (ошибок яваскрипта, сообщений от самого скрипта, выполнившего запрос)
6. если есть - изучаете вопрос, штопаете. Если нет открываете вкладку сеть
7. смотрите содержимое запроса. Что он передал на сервер (закладка "заголовки" и "запрс" ) и что он получил от сервера (закладка "ответ")
7а. запрос должен быть вида (адрес: Вашсайт.ru/путь/до/скрипта/обработчика.php , + запрос постом, в котором указываются параметры товара ) на что сайт возвращает джейсон с параметрами корзины.
8. проверяете правильный ли адрес, на который уходят данные (бывает так, что дергается другой скрипт)
9. Проверяете полноту отправляемых клиентом данных и подпись (если она используется)
10. Проверяете ответ сервера.
11. если сервер обрабатывает запрос, но не отправляет валидные данные, то скорее всего в отправляемый контент влезает какой-то мусор, от варнинга, до лишнего пробела
12. это проверяется очень просто. при релоаде страницы товар должен быть в корзине. Это говорит о том. что запрос с клиента на сервер поступает, но в обратную сторону идет битый джейсон.
13. если запрос из п.9 валидный, а товар все-равно в корзине не появляется, значит где-то ошибка в пхп скрипте и надо копать его.
Спасибо, конечно, но похоже, приходят данные с другого сайта, который расположен в этой же директории (При нажатии на 12/ на вкладке Network - Preview, как я выше писал). Не пойму, почему так происходит?
При выполнении запроса со стороны сервера приходит ответ. На вкладке network смотри док, который приходит в ответ на запрос (тип xhr, видимо 12/ это он). Нажми на него и посмотри текст ответа. Вариантов громадное количество, посмотри что возвращается. А еще лучше измени js на
И смотри приходящие данные в консоли. Если это не json, в чем я уверен на 99%, то смотри что отдает сервер.
При нажатии на 12/ на вкладке Network - Preview появляется:
Это контент другого сайта (bitrix.mini), не имеющего отношения к тому, о котором создана тема! Каким-то образом данные другого сайта попадают в этот. Просто, я два разных сайта: myshop.local (о котором сейчас речь) и другой - bitrix.mini расположил в одной директории:
При нажатии на 12/ на вкладке Network - Headers появляется:
При нажатии на 12/ на вкладке Network - Cookies появляется:
При нажатии на 12/ на вкладке Network - Response появляется:
Видите ли Вы ошибку? может, ещё, какие-либо вкладки, файлы стоит посмотреть?
Путь до php файла точно правильный?
Вы, кажется, мне помогли! Убрал слэш, стало url: 'api.php', И код стал работать. Спасибо!
F12, console вкладка, network вкладка . изучайте что там
К сожалению, ещё не очень это умею, но учту. Спасибо!