Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


chukcha

Recommended Posts

Кто так пишет

 


 
 
При этом 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;

Надіслати
Поділитися на інших сайтах

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

Ну я просто обратился также к 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 ?

Надіслати
Поділитися на інших сайтах

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

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

 

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

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

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.