Всего 125 355 комментариев

Николай Савин
10 января 2025, 10:35
0
Шифрование исходного кода PHP может быть полезно для защиты интеллектуальной собственности или предотвращения несанкционированного доступа к коду. Однако стоит учитывать, что полная защита исходного кода невозможна, так как PHP выполняется на стороне сервера, и расшифрованный код должен быть доступен для интерпретатора. Тем не менее, вот несколько способов, которые могут помочь затруднить чтение исходного кода:

1. Использование инструментов для обфускации кода

Обфускация — это процесс преобразования исходного кода в трудночитаемую форму, сохраняя его функциональность. Существуют инструменты, которые могут обфусцировать PHP-код:

PHP Obfuscator: Инструменты вроде PHP Obfuscator или ionCube PHP Obfuscator могут преобразовать код в нечитаемый вид.
YAK Pro: Бесплатный инструмент для обфускации PHP-кода.

Пример использования:
php yakpro-po.php your_script.php -o obfuscated_script.php
2. Шифрование с помощью ionCube или Zend Guard
Эти коммерческие инструменты позволяют зашифровать PHP-код и запускать его с помощью специального расширения на сервере.
  • ionCube: Шифрует код и требует установки ionCube Loader на сервере.
  • Zend Guard: Аналогично ionCube, шифрует код и требует Zend Optimizer.
Пример использования ionCube:

ioncube_encoder your_script.php -o encrypted_script.php
3. Использование base64_encode и eval
Этот метод не является надежным, но может затруднить чтение кода. Код кодируется в base64, а затем декодируется и выполняется с помощью eval.
Пример:

<?php
$code = '<?php echo "Hello, World!"; ?>';
$encoded = base64_encode($code);
eval(base64_decode($encoded));
?>
4. Самописное шифрование

Вы можете написать собственный алгоритм шифрования и расшифровки кода. Однако это требует глубоких знаний в криптографии и может быть ненадежным.
Пример:

<?php
function encrypt($code, $key) {
    return openssl_encrypt($code, 'AES-128-CBC', $key);
}

function decrypt($encrypted, $key) {
    return openssl_decrypt($encrypted, 'AES-128-CBC', $key);
}

$code = '<?php echo "Hello, World!"; ?>';
$key = 'your_secret_key';
$encrypted = encrypt($code, $key);
eval(decrypt($encrypted, $key));
?>
5. Использование PHP-расширений

Вы можете написать собственное PHP-расширение на C, которое будет содержать зашифрованный код. Это требует навыков программирования на C и работы с PHP API.

Важные замечания:

  • Производительность: Шифрование и расшифровка кода могут замедлить выполнение скрипта.
  • Безопасность: Ни один метод не обеспечивает 100% защиту. Злоумышленник с достаточными знаниями и временем может декомпилировать или расшифровать код.
  • Лицензирование: Убедитесь, что использование инструментов шифрования соответствует лицензионным соглашениям
Выбор метода зависит от ваших требований к безопасности, бюджета и уровня сложности, который вы готовы принять.
Артур Шевченко
10 января 2025, 10:18
0
Внести часть кода в exe или dll
Это же расширения из Windows, причём тут Modx и его компоненты?
Андрей Шевяков
10 января 2025, 09:11
0
Можно посмотреть вот это PayAndSee
Денис Усманов
10 января 2025, 01:07
0
Исправлено, читайте статью, внёс изменения по этому вопросу.
Владимир
09 января 2025, 23:00
0
нет, нашел проблему, все ок!

Кстати на modx 3 работает, только из магазина Modstore не установить, нет этого дополнения. Я качал из modx 2 и загружал пакет вручную.
Александр Туниеков
09 января 2025, 22:52
0
Внести часть кода в exe или dll и вызовы функций из них делать. Я конечно еще такое не делал но думаю это возможно.
Владимир
09 января 2025, 21:38
0
Ошибку по полю email вываливает из-за тестового режима?
Артур Шевченко
09 января 2025, 21:19
0
150р за кг должно прибавляться вне зависимости от суммы стоимости товаров в корзине?
Артур Шевченко
09 января 2025, 21:01
0
думаю защита только транспортного пакета для такой суммы недостаточна
А что ещё, кроме транспортника, вы можете зашифровать?
Николай Савин
09 января 2025, 17:21
+1
Вот так привязать к шаблонам.

$templates = array(1, 2); 
if(in_array($modx->controller->resource->get('template'), $templates)) {
	$modx->regClientStartupHTMLBlock('<script>Ext.onReady(function() {
if(MODx.loadRTE) MODx.loadRTE("modx-resource-introtext");
});</script>');
};
Вот так выводить для указанных шаблонов, и плюс отдельно для указанных ID.

$templates = array(1, 2); 
$ids = [112, 113];
if(

in_array($modx->controller->resource->get('template'), $templates) 
||  in_array($modx->controller->resource->get('id'), $ids) 
) {
	$modx->regClientStartupHTMLBlock('<script>Ext.onReady(function() {
if(MODx.loadRTE) MODx.loadRTE("modx-resource-introtext");
});</script>');
};
Серый
09 января 2025, 13:53
0
Хотелось бы «заклинание» и для шаблонов, а не только для конкретных ресурсов + комбинированно и номера шаблонов, и ресурсов — такой код можно будет считать законченным.
Поторопился я, видимо со своим «ух, класс...»
Подскажите пожалуйста, заранее благодарю!
Николай Савин
09 января 2025, 12:14
0
У работы нет стоимости, она у есть у исполнителя.
Соответственно зависит от того, кто будет делать.
Ну, а дальше уже нюансы. Что за файл, откуда он берется. Готовый он или нужно генерировать. Куда, когда отсылать, при каких условиях и т.п.
Prihod
08 января 2025, 23:14
+1
Блин, где ты был раньше с этой инфой? Сэкономил бы мне время. ))
Мое решение изначально заточено на MODX и требует минимум тело движений.
nikola
08 января 2025, 22:39
0
спасибо, стоимость такой работы не подскажите примерно?
Николай Савин
08 января 2025, 21:57
0
Да это возможно, но придется писать свой плагин скорее всего. В MODX и minishop2 из коробки такого нет
nikola
08 января 2025, 19:44
0
понял, а что бы вместе с оплатой, файл отправлялся, вернее клиент оплатил и получил файл, возможно так сделать?
ВитОс
08 января 2025, 19:32
0
там элементарная форма платежной системы. любую возьмите и по документации сделайте
Ruslan
08 января 2025, 11:12
0
@Артур Шевченко Помогите пожалуйста, никак не могу понять с этой фильтрацией по множественным параметрам.

1) По какой то причине когда я нахожусь на какой либо странице по пагинации (например на пятой page=5), и нажимаю на параметр для фильтрации, он фильтрует, но почему не сбрасывает пагинацию, а подгружает последнюю страницу результатов поиска и в УРЛ тоже показывает последнюю страницу (например страницу?page=2). Но так же заметил в консоли, что по какой-то причине он добавляет параметр offset. Из за которой он пропускает какие то страницы и выдаёт сообщение о пустом результате поиска.

2) Я использую в вызове снипета параметр "'hashParams' => 'building_status,property_rooms'," я так предполагал что этот параметр помогает при фильтрации так же в УРЛ автоматически записывать GET запросы фильтрации, так же как и пагинации. Я ошибаюсь?
Если ошибаюсь можете подсказать каким образом можно сделать так, что бы параметры фильтров тоже в УРЛ появлялись?
Алексей Соин
07 января 2025, 21:30
+2
Уже есть хорошее и гибкое решение(devilbox), которое хорошо документировано и постоянно актуализируется, есть возможность запуска не только разных версий пхп, но и приложений на других яп, например nodejs.

P.S. это не в упрёк к твоему варианту, а в тему того, что есть решение поддерживаемое сообществом и у которого есть документация.
Prihod
07 января 2025, 00:56
0
Для PHP 8 по запросу через тикет (так как modstore.pro до сих пор не поддерживает одновременно разные версии php ) доступна новая версия пакета.

## [2.1.2-pl] — 2025-01-07

### Добавлено
— Метод execSql в классе MsIeTools
— Поддержка TSV формата файла импорта/экспорта
— Экспорт ресурсов типа «Ссылка», «Символическая ссылка» и «Статичный ресурс»
— Для задачи в менеджере задач кнопку открытия окна импорта/экспорта с уже выбранными параметрами
— Виджет «Менеджер задач»
— Опция «Высота виджета» (msimportexport_widget_height)
— В пресете импорта опции для Excel:
«Пропускать листы»
«Использовать только первый лист»

### Исправлено
— Статус задачи: Убита (killed)
— Обновление TV в сервисах быстрого обновления
— Проверка алиаса на уникальность
— Импорт фото по ссылке с пробелом в названии
— Сброс всего кэша ресурсов при каждой итерации импорта документов modx