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

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

Всем добрый день. Подскажите, в чём может быть проблема. На домене пропадает сайт и висит ошибка, то же самое в админке, при любом действии с модулем seo pro. Появилось после работы программиста и пропали отзывы на сайте.

В 62 строке на которую ссылается ошибка имелся код: <?php $occms_version='5.0'; $file = DIR_SYSTEM . 'library/front_loader.php'; $this->registry->set('admin_work', true); if (file_exists($file)) {include_once($file);} $occms_version='5.0'; ?>

 

 

 

 

 

Parse error: syntax error, unexpected/home.php on line 424

 

Parse error: syntax error, unexpected/maintenance.php on line 62

Parse error: syntax error, unexpected

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


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

Прежде всего надо сказать, что эта строка кода довольно гавнокодистая.

 

А второе - почему вы обрезали тексты ошибок? Вы оттуда удалили самое важное как раз.

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


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

..

 

А второе - почему вы обрезали тексты ошибок? Вы оттуда удалили самое важное как раз.

И чем же она такая (строка кода)!?

Вот просто интересно, когда вы делаете такие громогласные заявления, не зная сути и в про самый обычный код с маркером начала и конца кода

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


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

Всем добрый день....

 

Да вы модуль пытались купить (сегодня, но liqpay не принял платеж)

Так вы решили на варезе скачать и поставить ?

Отсюда и ошибка

Вы устанавливаете ВАРЕЗНЫЙ модуль

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


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

И чем же она такая (строка кода)!?

Вот просто интересно, когда вы делаете такие громогласные заявления, не зная сути и в про самый обычный код с маркером начала и конца кода

 

Если б вы процитировали ту фразу из моего поста, на которую отвечаете, было бы проще понять, что вы говорите :)

 

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

 

И тут есть сразу два замечания:

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

2. Но более важно то, что так вообще не делается! Если значение переменной нужно модифицировать в каком-то локальном скоупе, а затем продолжить использовать оригинальное значение в глобальном скоупе, то в локальном скоупе нужно скопировать значение в локальную переменную и делать с ней что угодно.

 

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

 

Следующий пункт: судя по названиям файлов - это контроллеры. Дополнять код контроллеров вставками с php тегами - это уже само по себе, как минимум некрасиво (и нарушает стиль кодинга в ОК), но если эта вставка не в конце файла (а в конце файла нет смысла восстанавливать значение переменной), то эта вставка ещё и режет код контроллера на куски.

 

И напоследок: прямой инклюд файлов в контроллерах противоречит и архитектуре ОК и современным принципам кодинга в целом.

  • +1 2

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


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

 

И напоследок: прямой инклюд файлов в контроллерах противоречит и архитектуре ОК и современным принципам кодинга в целом.

Это шутка такая была, я так понял

Поищите поиском "include_once" в файлах opencart хотя бы для начала

И вы еще наверно никогда не сталкивались у пользователей когда у них в настройках ftp клиента стоит очистка комментариев в коде (изменение файлов css, html, php и т п ). Я сталкивался и часто

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

  • +1 1

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


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

Поищите поиском "include_once" в файлах opencart хотя бы для начала

 

Поискал:

https://github.com/opencart/opencart/search?utf8=%E2%9C%93&q=include_once

 

Это как-то противоречит моим словам?

 

 

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

 

Действительно, что комментировать, если уже на include_once зафейлились.

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


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

Dotrox не стоит!!!

Такой кол... т.е. о коментах мы ничего не знаем...То что эти две строки - маркеры - я давно понял.

Но !!! кому!! кроме программеров нужно в это влазить... Работает? И... БЕЗ изменения системных файлов!!!!! Какой нах ocmod (vqmod)

Марк!!! ... Что есть, то есть.. не утруждайтесь!!!

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


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

 

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

 

Следующий пункт: судя по названиям файлов - это контроллеры. Дополнять код контроллеров вставками с php тегами - это уже само по себе, как минимум некрасиво (и нарушает стиль кодинга в ОК), но если эта вставка не в конце файла (а в конце файла нет смысла восстанавливать значение переменной), то эта вставка ещё и режет код контроллера на куски.

 

И напоследок: прямой инклюд файлов в контроллерах противоречит и архитектуре ОК и современным принципам кодинга в целом.

вы когда-нибудь интересовались защитой php скриптов от нелегального использования?

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


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

Поискал:

https://github.com/opencart/opencart/search?utf8=%E2%9C%93&q=include_once

 

Действительно, что комментировать, если уже на include_once зафейлились.

 

Ваши слова ?

 

И напоследок: прямой инклюд файлов в контроллерах противоречит и архитектуре ОК и современным принципам кодинга в целом.

 

 

opencart все основное грузит через include_once /engine

Вопросы еще будут по include_once в opencart ?

Признать свои ошибочные слова слабо видно

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


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

opencart все основное грузит через include_once /engine

Вопросы еще будут по include_once в opencart ?

Признать свои ошибочные слова слабо видно

 

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

Что во фразе "прямой инклюд файлов в контроллерах" вам непонятно? Или вы не знаете, где в ОК контроллеры?

Разве я что-то говорил о том, что инклюд как таковой - это плохо?

Ну а по ссылке отлично видно, что на весь ОК инклуд есть всего в трёх файлах, где без инклюда или реквайра движок просто бы не собрался в кучу.

 

 

 

вы когда-нибудь интересовались защитой php скриптов от нелегального использования?

 

Учитывая, что я не понимаю, как это относится к обсуждаемому коду, то, видимо, я интересовался не той защитой, о которой идёт речь.

  • +1 1

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


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

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

Что во фразе "прямой инклюд файлов в контроллерах" вам непонятно? Или вы не знаете, где в ОК контроллеры?

Разве я что-то говорил о том, что инклюд как таковой - это плохо?

Ну а по ссылке отлично видно, что на весь ОК инклуд есть всего в трёх файлах, где без инклюда или реквайра движок просто бы не собрался в кучу.

И напоследок: прямой инклюд файлов в контроллерах противоречит и архитектуре ОК и современным принципам кодинга в целом.

 

 

Ваши отмазки - не зачтены.

В трех файлах ... основных файлах engine opencart (в maintenance.php точка входа, фактически он engine). Которые грузят почти "ВСЁ" в opencart. Не видите? Ну тогда вообще говорить не о чем.

Заканчивайте отмазки, 3.14ли не в попад, так и скажите.

При этом "громогласно" заявили и обвинили.

 

Насчет безопасности freelancer правильно сказал. Не забываем что код может собираться из кусков, проверяться хеш и т.п.

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

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


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

Ваши отмазки - не зачтены.

В трех файлах ... основных файлах engine opencart (в maintenance.php точка входа, фактически он engine). Которые грузят почти "ВСЁ" в opencart. Не видите? Ну тогда вообще говорить не о чем.

Заканчивайте отмазки, 3.14ли не в попад, так и скажите.

При этом "громогласно" заявили.

 

Насчет безопасности freelancer правильно сказал. Не забываем что код может собираться из кусков, проверяться хеш и т.п.

 

Марк, не обращай внимание на обелившегося админа варез-ресурса.

Все посты персонажа - попытка набить репу. Не более.

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


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

Марк, не обращай внимание на обелившегося админа варез-ресурса.

Все посты персонажа - попытка набить репу. Не более.

И каким образом модерирование варез-форума - влияет на профессиональный уровень человека?

Дорогу перешел?

Или уличен в варезе?

  • +1 2

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


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

Ваши отмазки - не зачтены.

В трех файлах ... основных файлах engine opencart (в maintenance.php точка входа, фактически он engine). Которые грузят почти "ВСЁ" в opencart. Не видите? Ну тогда вообще говорить не о чем.

Заканчивайте отмазки, 3.14ли не в попад, так и скажите.

При этом "громогласно" заявили и обвинили.

 

Вероятно, вы провоцируете меня на грубость, иначе я никак не могу расценить откровенное нежелание понимать о чём я говорю.

 

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

 

Вам не кажется, что такими отмазками вы себя позорите?

 

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

Если вы думаете, что мой комментарий мог сильно навредить репутации модуля или вашей, если б вы не начали тут так отчаянно защищаться, то должен сказать, что эта нелепые попытки оправдать код по принципу "сам дурак" (а не попытавшись, например, объяснить почему нужно было только так и никак иначе) - намного больше навредили вашей репутации и не только как программиста.

А так бы, вероятно. никто бы даже не обратил внимание, что этот код из вашего модуля.

 

 

Насчет безопасности freelancer правильно сказал. Не забываем что код может собираться из кусков, проверяться хеш и т.п.

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

 

Но, вероятно, это не ваш случай, иначе вы бы сами об этом сразу сказали, а не разводили сопли.

 

 

 

Все посты персонажа - попытка набить репу. Не более.

 

Вот уж действительно, холивар о качестве кода - отличный способ набить репу, как я раньше то не додумался :-D

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

 

 

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


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

Вероятно...

А при чем здесь модуль.

Вы просто не понимаете что такое говнокод вот и все

Ваш уровень junior не позволяет этого понять и отмазки последующие не зачтены.

Говнокод - это архитектурная ошибки, к примеру когда не объявленному методу вдруг начинают оверлолдить или используют пробойный код безопасности или к примеру вызов простого кода opencart (как бы оригинальный код то, но в том архитектурном контексте это говнокод) дважды.

А вы громогласно обвинили обычный стандартный код. И вызов include_once там обязытелен и оправдан так как это точка входа. Если вы не заметили то он вызывается не в контроллере, а как точка входа engine - фактически loader

Так что давайте не делать громогласных заявлений,  не подумавши и не имея квалификации определить что такое понятие говнокод

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


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

Ваш уровень junior не позволяет этого понять и отмазки последующие не зачтены.

 

Вы оцениваете мой уровень по количеству сообщений на этом форуме? Тогда, действительно, по сравнению с вами я даже не джун, а вообще младенец :)

 

Говнокод - это архитектурная ошибки

 

Использовать вместо опенкартовского лоадера прямой инклюд в контроллерах - это не архитектурная ошибка?

Говоря про инклюд я сразу сказал, что это противоречит архитектуре ОК и вы так и не смогли показать хоть один контроллер в ОК, где подобное происходит, а loader.php, action.php и startup.php - никаким боком не контроллеры, а как раз те элементы архитектуры ОК, благодаря которым нет необходимости использовать прямой инклюд на более высоких уровнях.

 

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

 

 

 

И вызов include_once там обязытелен и оправдан так как это точка входа.

 

Точка входа куда?

Вообще, что является точкой входа зависит от конкретного языка и в случае php  - это первая строка в первом файле вызова, но обычно в php точкой входа в приложение называют весь первый файл, то есть в случае ОК - это /index.php для витрины и /admin/index.php - для админки.

 

 

Если вы не заметили то он вызывается не в контроллере

 

А где тогда? В ошибках из первого поста, конечно, путь обрезан, но я не знаю в ОК других файлов с названием maintenance.php не считая языкового, но, если это вставка из языкового файла - это было бы уж совсем не смешно.

 

Так что я уверен, что это файл /catalog/controller/common/maintenance.php.

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


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

 

Вы оцениваете мой уровень по количеству сообщений на этом форуме? Тогда, действительно, по сравнению с вами я даже не джун, а вообще младенец :)

 

 

Использовать вместо опенкартовского лоадера прямой инклюд в контроллерах

Читать умеете - НЕ в контроллере

Для тех кто в танке и не понимает где заканчивается код контроллера  болдом даже выделил

Не понимаешь архитектуру - не умничай, промолчи лучше

 

Всё закончили - надоел, лепишь отмазки

Отправляю вообще в бан у себя, надоела демагогия отмазок

Бред какой то придумал что нельзя вызывать include_once в контроллерах

Сам додумался ? Где написано что в контроллерах opencart нельзя вызывать include_once ? Расскажи это другим разработчикам

Если надо кто хочет тот и вызывает, если в данном случае не обойтись

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


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

Читать умеете - НЕ в контроллере

Для тех кто в танке и не понимает где заканчивается код контроллера  болдом даже выделил

 

Да, с чётким выражением мыслей у вас явно проблемы.

То что вы пытались сказать, называется - "не в классе контроллера", а не просто "не в контроллере", ибо слово контроллер в случае ОК обозначает и класс и его файл (в таких файлах всё равно больше нет ничего).

 

Тем не менее, это файл контроллера, что всё равно противоречит архитектуре ОК, где действует принцип: один файл - один класс и ничего более (когда идёт речь о файлах с декларацией классов).

 

И, что более важно, это также противоречит PSR-1 (если вы знаете, что это)!

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

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


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

 

...

И, что более важно, это также противоречит PSR-1 (если вы знаете, что это)!

 

:ugeek:

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

По вашей "логике" opencart нарушает PSR-1 (так как  содержит "побочный эффект" и объявление класса (во всем коде кстати), но там написано "не следует", а не "не позволяется", т е если в данном случае избежать невозможно, то это приходится делать)

:-D

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


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

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

Вот цитата оттуда:

 

A file SHOULD declare new symbols (classes, functions, constants, etc.) and cause no other side effects, or it SHOULD execute logic with side effects, but SHOULD NOT do both.

The phrase "side effects" means execution of logic not directly related to declaring classes, functions, constants, etc., merely from including the file.

 

"Side effects" include but are not limited to: generating output, explicit use of require or include, connecting to external services, modifying ini settings, emitting errors or exceptions, modifying global or static variables, reading from or writing to a file, and so on.

 

И ссылка на саму спецификацию: http://www.php-fig.org/psr/psr-1/

 

По вашей "логике" opencart нарушает PSR-1 (так как  содержит "побочный эффект" и объявление класса (во всем коде кстати)

 

Покажите конкретный пример из ОК. Я такого там вспомнить не могу.

 

но там написано "не следует", а не "не позволяется",

 

Суть гавнокодинга как раз в том, что автор такого кода плюёт на любые рекомендации, которые напрямую не влияют на работоспособность кода!

 

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

 

И кстати, обратите внимание, что в спецификации используется should, а не may или can, так что это всё же довольно настоятельные рекомендации!

 

 

т е если в данном случае избежать невозможно, то это приходится делать)

 

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

 

Кроме того, благодаря vQmod/OCMOD (которые сами являются костылями) есть возможность добавлять свой код практически куда угодно, а потому нет необходимости создавать костыли прикрываясь их неизбежностью - модификаторы позволят обойти нерасширяемость ОК без дополнительных костылей.

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


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

Вот цитата оттуда:

 

 

...

Покажите конкретный пример из ОК. Я такого там вспомнить не могу.

...

 

Ну я же говорил что не понимаете что там написано:  /engine - обьявление классов (тем более final class) и "побочный эффект" include_once

Вы даже не поняли что такое "побочный эффект" - изменение настроек тоже побочный эффект и много чего под него попадает.

Весь opencart натыкан тогда, по вашей логике, г.. кодом.

И что вы мне здесь "тулили" про контроллеры? В /engine значит можно, а в контроллерах нельзя (ваши слова). Откуда взял это, придумал сам видно.

 

А про vqmod лучше промолчите вообще, вы в расширяемости opencart и йоты не знаете. 90% функционала что лепят разработчики opencart vqmod - м можно спокойно сделать без него, причем по стандартам php  и PSR-1, только надо знать точку входа.

И не надо пачить seo_pro, seo_url, да и вообще модели не надо патчить, а полностью получить контроль над всем кодом opencart (а в opencart 2. и контроль контроллеров, причем без триггеров).

vQmod и ocmod - это костыли патчеры (ocmod - хоть стандарт opencart, а, vqmod это вообще 3.14)

А за vQmod в opencart 2.x вообще в табло сразу бить надо тому разработчику кто сделал на нем

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


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

Ну не надо... Нельзя сделать без vqmod, ocmod

 

Например

Не возможно изменить запрос - без вмешательства в сам запрос - нет инструмента (даже events пока не годятся). Был бы конструктор запросов - тогда можно было бы говорить о чем-то.

А использовать  свою модель - нехорошо, теряется совместимость/зависимость.

 

И ваше решение, по сути, ваш собственный патчер... Вы же что-то прописываете при инсталляции?

Но вы не вмешиваетесь в ядро (магазин) товар, категории, корзина. А только расширяете возможности опенкарта.

  • +1 1

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


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

markimax,

Ну не надо... Нельзя сделать без vqmod, ocmod

 

Например

Не возможно изменить запрос - без вмешательства в сам запрос - нет инструмента (даже events пока не годятся). Был бы конструктор запросов - тогда можно было бы говорить о чем-то.

А использовать  свою модель - нехорошо, теряется совместимость/зависимость.

 

И ваше решение, по сути, ваш собственный патчер... Вы же что-то прописываете при инсталляции?

Но вы не вмешиваетесь в ядро (магазин) товар, категории, корзина. А только расширяете возможности опенкарта.

 

Нет, не патчер - он не патчит код ;) Он добавляет пару строк кода (чувствуете разницу - патчить код и добавлять кусок НЕ в код opencart), при этом если бы делалось через ocmod - пришлось бы перепатчить половину системных файлов для такого функционала и забыть о совместимости. А пара добавленных строк решила этот  вопрос, при этом полная совместимость со всеми версиями и сборками opencart, темами, модулями ! Вот в чем самое главное. Никакие ocmod и vqmod не дали бы сделать так гибко модуль. Тем более всего парой добавленных строк НЕ в код.

При этом перехватывается всё. Я могу заменить результат любой переменной, в любом контроллере (при желании в любой точке контроллера). 

Да с запросами там проблема. Сделаны они в opencart немного коряво - просто строками и никаких "генераторов" fw запросов. Здесь без ocmod никак к сожалению. Но можно тоже разбирать (регулярками) строки (добавлять и изменять) как это делает автор Mega Filter PRO

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


Ссылка на сообщение
Поделиться на другие сайты
Но можно тоже разбирать (регулярками) строки (добавлять и изменять) как это делает автор Mega Filter PRO

 

 

 

Я вам по секрету скажу.. регулярка  это -50% производительности.

 

 

Я в курсе, что и как вы делаете.

 

Поэтому простым ocmod в і можете сделать тоже самое... т.е. загрузить свой loader

 

Я могу заменить результат любой переменной, в любом контроллере

 

Я вас боюсь.. Помолчу.

  • +1 1

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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