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

Научите меня, или...

Рекомендуемые сообщения

Кто так пишет

 


 
 
При этом simpla перехватывает чужой вызов и выводит свои данные не проверяя входящие данные (это основа программирования - проверка входящих данных) Т е выводит уже запрос модуль simpla

 
В каком месте?
Пока simpla не научилась проверять входящие данные

Какие данные? Свои она проверяет.
А не проще ли отбросить чужие?

 

 

Уже давно 2015 год и все вызывают ajax полным URL, чтобы не было дублей  контента и в индексе не болтались URL в виде

/index.php?route=module/my

Это плохо для SEO
К примеру: каждый второй модуль с быстрым просмотром ( и не только быстрый - таких модулей сейчас валом)  вызывает полный URL ajax вызова и как бы реагировали другие если бы не проверяли свои это входящие данные или нет. (как твоя 3-ка , когда видит XMLHttpRequest  - считает что вызвали только её, по логике твоей тогда выводился только контент твоего модуля при вызове любого ajax запроса с полным путем вызова, а другие как же)

 

Все или так делает только автор цитаты?

 

 

За url и его параметры отвечает контроллер, и контроллер обязан проверить свои входные данные..

Если туда пришло что-то еще чужое - или игнор, или принятие решение о... попытке взлома.

 

Если кому-то надо еще как-то иначе обрабатывать параметр в uri - добро пожаловать в роутер и там решайте свои вопросы маршрутизации.

Контроллер занимается только своими маршрутами, а не чужими хотелками.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

chukcha сказал(а) 09 Сен 2015 - 12:23 PM:

.

....

deeman попросил тему завести? deeman надо выключать эмоции, никто не наезжает на его любимый "мозоль" А наоборот хочет сделать как лучше!

В старой версии simple 3

Цитата

В каком месте?

Какие данные? Свои она проверяет.

А не проще ли отбросить чужие?

Вот здесь:

Цитата

$this->data['ajax'] = true;

$this->data['simple'] = $this->simple;

if (!isset($this->request->server['HTTP_X_REQUESTED_WITH']) || $this->request->server['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {

$this->data['ajax'] = false;

В 4-ке уже добавлен "маркер" проверки (т е deeman противоречит сам себе)

Цитата

public function isAjaxRequest() {

$ajax = false;

if ((!empty($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') || (!isset($this->request->server['HTTP_X_REQUESTED_WITH']) && $this->request->server['REQUEST_METHOD'] == 'POST'

&& !empty($this->request->post['ajax']))) {

$ajax = true;

}

return $ajax;

}

Т е в 4-ке все работает как надо

Ведь почему то изменил код, добавил "маркер" проверки вызова ajax!

Т е получается если рассуждать демагогией предложенной deeman у меня в теме поддержки

Simpla - арендодатель "офиса" (да, да - так как там работают и другие модули, к примеру рекомендуемые могут вставить или меню какое и т п была бы там simpla одна без меню, футеров, модулей то другое дело)

Т е человек пришел на работу в офис со своим мобильным, ему звонит на ЕГО мобильный кто-то, но прибегает арендодатель выхватывает телефон и выдает в трубку свой "контент" в стиле "иди...", потом вешает трубку и говорит - мой "офис" - мой телефон :)

Т е на ЛЮБОЙ ajax запрос с полный URL (напомню что для seo важен вызов полного URL в ajax запросе чтобы не болтались обрывки в индексе /index.php?route=module/my) - simpla версии 3) считает его своим априори и выдает только свой контент

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

Загружает подкатегории ajax - ом полным URL вызовом (чтобы ссылочная масса не болталась по индексам поисковиков (к тому же без контентной поддержки) с /index.php?route=module/my (все уже знаю что ПС научились выкусывать URL из ajax запросов). Это тоже вызов simpla?

Так что давайте без эмоций

Нет ПО без ошибок априори и в Windows куча ошибок хотя её делают гении

И у deeman они есть и у меня есть где-то, просто надо не включать эмоции а работать над улучшением

В 3-ке Simpla просто надо сделать также как deeman сделал в 4 -ке (ну он же сделал это в новой версии!) !empty($this->request->post['ajax'])))

Всё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

За url и его параметры отвечает контроллер, и контроллер обязан проверить свои входные данные..

Если туда пришло что-то еще чужое - или игнор, или принятие решение о... попытке взлома.

 

 

Так в том то и дело что не доходит очередь до других модулей.

Simpla версии 3 считает это своим вызовом (не проверяя входящие данные, а они не изменились в форме!) и ТОЛЬКО она выдает контент, не модули!

 

В 3-ке Simpla просто надо сделать также как deeman сделал в 4 -ке (ну он же сделал это в новой версии!) !empty($this->request->post['ajax'])))

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тема заведена мной, без чьей-либо просьбы, дабы не трогать тему поддержки

 

И, в конце концов, давно не били тарелки :)

 

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

 

появилось в 4-ке - замечательно, значит это так надо было для модуля, но не для случайной проверки маркера кем-то

 

 

Так в том то и дело что не доходит очередь до других модулей.

 

 

А с каких таких должно доходить, когда на себя берет ответственность  контроллер simple, а дальше  по факту...

 

Я понимаю о чем речь. и представляю откуда появился маркер ajax - но это разные стороны решения одного вопроса. Как по мне проще проверить наличие маркера, чем в ответе XMLHttpRequest, который можно и "поломать"

 

Насколько помню, deeman говорил, что не будет трогать третью версию, пусть живет своей жизнью

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тема заведена мной, без чьей-либо просьбы, дабы не трогать тему поддержки

 

И, в конце концов, давно не били тарелки :)

 

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

 

появилось в 4-ке - замечательно, значит это так надо было для модуля, но не для случайной проверки маркера кем-то

 

 

 

А с каких таких должно доходить, когда на себя берет ответственность  контроллер simple, а дальше  по факту...

 

Я понимаю о чем речь. и представляю откуда появился маркер ajax - но это разные стороны решения одного вопроса. Как по мне проще проверить наличие маркера, чем в ответе XMLHttpRequest, который можно и "поломать"

 

Насколько помню, deeman говорил, что не будет трогать третью версию, пусть живет своей жизнью

 

chukcha давайте только без демагогии :) Только фактами.  На странице не только модуль simpla работает, там работают те модули кторые пользователь хочет видеть на этой странице и вешает на layouts. Simpla только "арендодатель" страницы. Не переводите тему в другое русло

 

Насколько помню, deeman говорил, что не будет трогать третью версию, пусть живет своей жизнью

 

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

Я вообще не знаю зачем там вызывать ajax - ом, все равно страница оформления закрыта от индексации и её закрывают

 

Мой модуль прекрасно дружит и с 3-кой :)

 

Просто Вы завели тему.

 

А вот другие модули у который нет такого переключателя и вызывают полный путь в ajax запросе работать не будут в 3-ке

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если отбросить споры о правильной архитектуре, какие вы видите пути решения конфликта двух модулей?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Меня не интересует ни симпла ни модульцмс

 

Меня заинтересовал факт

 

выводит свои данные не проверяя входящие данные

Вот с этого момента мне и захотелось подробностей

 

Чтобы выяснить,  а как модуль должен реагировать на чужие данные?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

а вообще с опытом приходит понимание как писать более универсальные, гибкие модули, которые будет легко подкрутить если такая интеграция потребуется

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если отбросить споры о правильной архитектуре, какие вы видите пути решения конфликта двух модулей?

 

А у меня нет конфликта то!

Вот в чем вопрос. Я могу перевести виджет в положение ajax выключено для 3-ки

 

А с 4 кой так и в помине, все работать будет и ajax

 

Вопрос про 3-ку. Она забирает на себя ВСЕ ajax запросы с полным URL и выдает ТОЛЬКО СВОЙ  контент. Не проверяя входящие данные.

 

Извините deeman - но это не только страница вашего модуля, это пользователю решать что вешать на схему CHECKOUT (разницу заметили, схема не   только simple ;) ?) Ваш модуль только "купил в БОЛЬШОМ небоскребе офис и его сдает"

Он может туда повесить что угодно начиная от комплектов и заканчивая рекомендованными товарами или вызовом какого то контента для пользователя

 

Контроллер Simpla только "арендодатель" страницы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

а вообще с опытом приходит понимание как писать более универсальные, гибкие модули, которые будет легко подкрутить если такая интеграция потребуется

Да интеграции то и нет никакой :)

Вот я и говорю, что модуль 3 версии Simpla оказался по ajax запросам НЕ инкапсулирован, самодостаточен и атомарен

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А всего то надо было изменить код 3 версии  deeman как ОН ЖЕ СДЕЛАЛ в 4-й версии

 

А "развели" сопли, демагогию и эмоции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Чтобы выяснить,  а как модуль должен реагировать на чужие данные?

Да на чужие НЕ надо реагировать - пусть на свои реагирует и проверяет!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну так реагировал ?

 

Я не понимаю о чем речь?

 

 

markimax, модуль simple перехватывает чужие ajax запросы?

Да-да

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

markimax, модуль simple перехватывает чужие ajax запросы?

А по коду не видно?

Да - 3 версия перехватывает ВСЕ ajax запросы где в url вызова полный путь

 

            $this->data['ajax'] = true;

            $this->data['simple'] = $this->simple;

            

            if (!isset($this->request->server['HTTP_X_REQUESTED_WITH']) || $this->request->server['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {

                $this->data['ajax'] = false;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да - 3 версия перехватывает ВСЕ ajax запросы где в url вызова полный путь

считаю это не правильно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

считаю это не правильно

Ну я просто обратился также к deeman  с таким же вопросом, а он почему то принял это как "наезд", хотя и в мыслях не было, да так эмоционально еще, как будто я наступил на любимый мозоль (может настроения не было - бывает :ugeek: )

А когда эмоции вступают в диалог про логику можно забыть :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не говорите загадками
 

$this->data['ajax'] = true;

            $this->data['simple'] = $this->simple;
            
            if (!isset($this->request->server['HTTP_X_REQUESTED_WITH']) || $this->request->server['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {
                $this->data['ajax'] = false;

$this->data - это чье свойство, я имею ввиду, какому экземпляру оно принадлежит?

if (!isset($this->request->server['HTTP_X_REQUESTED_WITH']) || $this->request->server['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {

Где здесь перехват?

 

Где здесь полный путь в url?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не говорите загадками

 

$this->data['ajax'] = true;

            $this->data['simple'] = $this->simple;
            
            if (!isset($this->request->server['HTTP_X_REQUESTED_WITH']) || $this->request->server['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {
                $this->data['ajax'] = false;

$this->data - это чье свойство, я имею ввиду, какому экземпляру оно принадлежит?

if (!isset($this->request->server['HTTP_X_REQUESTED_WITH']) || $this->request->server['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {

Где здесь перехват?

 

Где здесь полный путь в url?

Вот здесь:

 

$this->data['ajax'] = true;

            $this->data['simple'] = $this->simple;

            

            if (!isset($this->request->server['HTTP_X_REQUESTED_WITH']) || $this->request->server['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {

                $this->data['ajax'] = false;

 

А вызов обычный, любой, даже НЕ МОЕГО модуля

 

$.ajax({

   type: 'POST',

   url: 'страница схемы checkout',

   data: {данные для вызова модуля},

 

И этот вызвов даже не доходит до модуля - его обрабатывает simpla

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а где этот код описан? в каком файле?

3- я версия /catalog/controller/checkout/simplecheckout.php

 

$this->data['ajax'] = true;

            $this->data['simple'] = $this->simple;

            

            if (!isset($this->request->server['HTTP_X_REQUESTED_WITH']) || $this->request->server['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {

                $this->data['ajax'] = false;

                

                $this->children = array(

                    'common/column_left',

                    'common/column_right',

                    'common/content_top',

                    'common/content_bottom',

                    'common/footer',

                    'common/header',

                );

            }

                  

            $this->response->setOutput($this->render());

        } else {

            $this->data['heading_title'] = $this->language->get('heading_title');

            

            $this->data['text_error'] = $this->language->get('text_empty');

            

            $this->data['button_continue'] = $this->language->get('button_continue');

            

            $this->data['continue'] = $this->url->link('common/home');

            

            $this->data['simple'] = $this->simple;

            

            if (isset($this->request->server['HTTP_X_REQUESTED_WITH']) && $this->request->server['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {

                $this->response->setOutput('<script type="text/javascript">location="'.$this->url->link('checkout/simplecheckout', '', 'SSL').'";</script>');

                return;    

            }

 

 

И здесь simpla выводит в ajax запрос с полным URL  чужого модуля свой КОД

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрел код? А где "перехват"? Мне в своих контроллерах тоже завязываться на то, что кто-то позовет меня с какими то особыми параметрами POST/GET ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

погоди, Марк, но ведь это контроллер его модуля checkout/simplecheckout.php и он что хочет то и делает с запросами, которые пришли в его модуль.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрел код? А где "перехват"? Мне в своих контроллерах тоже завязываться на то, что кто-то позовет меня с какими то особыми параметрами POST/GET ?

Посмотрите выше посты, код - там все четко описано

 

Сейчас 2015 год и по ОБОСНОВАННЫМ требованиям SEO специалистов - в ajax запросе надо вызывать полный путь страницы, чтобы в индексе не болтались ошметки

/index.php?route=module/my с ДУБЛЯМИ кусков контента

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.