<?php // Полная загрузка сервисных книжек, создан 2025-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
Вот и выросло поколение одноэсников не знающих кто такая тетя Обфускация.http://infostart.ru/public/15907/
А гадить преемнику — за такое из профессии гнать нужно…
изобрел велосипед, да еще и с одним колесом
Alt+Shift+F
на каждого хацкера найдется антихацкер
вот качественнее «не удобочитаемый код 1с» получается с помощьюhttp://infostart.ru/public/287653/ 🙂
что-то мне подсказывает, что обычное форматирование его сделает читаемым))
Есть вопрос:
Сколько времени автор потратил на создание этой обработки?
Коллега на работе и без этой обработки так код пишет, что хуже уже не сделать. Спрашиваю его, где хоть один комментарий, говорит » А зачем?»
(6) xten,
можно еще целиком на латинице писать) по себе знаю на латинице код в 1с прям расплывается с непривычки, несмотря на то что в свое время с Си и плюсами не по наслышке знаком, вроде б должен быть наметан глаз
(6) Дай ему кусок кода таког-же ламера разобрать — и пусть объяснит что там делается. Может тогда поймет зачем.
Такую лажу было бы стыдно выкладывать. А тут на те вам — очередная перделкасвистелка, зато авторская!
(0) это самый жёсткий обфускатор, из тех что я видел))
На ИС впору делать рейтинг публикаций которые лучше б и не вылезали на свет божий. Чтобы перед написанием статьи человек мог ознакомиться, как лучше делать не стоит.
(7) AlexInqMetal,
это еще фигня, я встречал когда через слово то англоязычный литерал, то русскоязычный =((
(10) Патриот, ccылку кидал в основном к теоретической части)
Пожалуй, самый адекватный обфускатор.
Нашёл в нем один баг.
Если в ориганальном тексте запросов есть перенос строк (новая строка всегда начинается с симвова |)
то при склеивании строк Шредером символы | добавляются в текст запросов, что вызывает ошибку выполнения запросов.
Вы тут про адекватность обфускаторов пишете, а представьте себе, что программист, который продал зашифрованную обработку, на следующий день сдох, а клиенту через пару недель подправить что-то приперло. И что ему делать?? Деньги отдал и нифига … А если таких обработок в базе уже 10 и теперь за каждым гением бегать, когда ситуация изменилась??! Вы и так получаете свой гонорар, когда обработку продаете, но все, что попадает в базу ДОЛЖНО быть доступно для настройки потому, что становится частью этого организма. А вы господа шифровщики продаете импланты, которые через некоторое время отторгаются, что априори сволочизм!!! Сходите также к стоматологу с претензией, что вставленный зуб отвалился через два года и послушайте о том, что вы оказывается не доплатили бабла, чтобы он дольше стоял!!!
(13) Можно подумать, вас заставляют с ножом у горла покупать зашифрованную обработку. Что значит «вы и так получаете свой гонорар»? Если автор продает обработку зашифрованной, значит он считает что исходники стоят еще дороже. Значительно дороже. Ваше мнение может отличаться, но навязывать его автору вы права не имеете. Даже морального.
Это обычный рынок. Не нравится товар или цена — пожимаешь плечами и проходишь мимо. Можно попробовать связаться с автором и договориться. Истерить-то зачем?
Я тоже не люблю шифрованные обработки и стараюсь их избегать. В 95% случаев это обычные скрипты понятной функциональности не абы каких трудозатрат и сложности, которые хотелось бы дорабатывать при необходимости самому. Но встречаются и целые сложные подсистемы, для которых желание автора воспрепятствовать их пиратскому распространению вполне понятно. Тут уже приходится делать выбор и оценивать все возможные риски с точки зрения совокупной стоимости владения. В том числе и вероятность того, что автор обработки сдохнет на следующий день.
(14) а Вы не задумывались, почему 1С не шифрует свои конфы?
(15) Это 1с то не шифрует? 1с продает конфу, которая запускается исключительно на 1с платформе и 99% кода типовой конфы завязаны на механизмы платформы, которая зашифрована полностью.
(15)
Да уже практически шифрует — нагромождение кода, вызовов функций и процедур в последних редакциях заставляют вспомнить о стеганографии: вроде все на виду, а нужное хрен найдешь.
(15) По ряду причин:
1) увеличивается сопутствующий доход из других источников (продажа лицензий на платформу)
2) та же бухия, к примеру, завязана на поддержку законодательства, что снижает стимул использовать ворованное решение. Проще платить и беспроблемно получать свежие обновления, которые жизненно необходимы. И то. Если бы 1С не проводила активную политику противодействия пиратству, картина была бы несколько другой. Но она может это себе позволить.
А вот отраслевые конфигурации частенько так или иначе содержат шифрованные участки кода, потому что иначе дополнительное лицензирование можно строить только на честном слове.