<?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='\
опробуем спс.
61 скачка и 3 комментария не по теме — печаль… 🙁
Ну скажите хоть кто-нибудь использовать будет, а то как то аж грустно 🙁
сгодится… тока поправь:
и
не нада писать… просто
100 скачек, 1 отзыв по теме, прогресс 😮
спасибо
Идея хорошая и реализовано простенько и со вкусом.А по сети это возможно пустить?
Рекомендую! 🙂
(15) в смысле «по сети пустить»? работает в пределах базы, неважно откуда ты заходишь
(17) т.е. одна флешка,на одной машине в сети, а пользователей много,я правильно понимаю?
(18) т.е. Индивидуальный ключ защиты 🙂 подразумевает 1 флешка в одни руки, т.е. даже зная пароль пользователя — в базу врага не пустит 🙂
ну и соответственно — забыл флешку — день потерян 🙂
С изменениями (11) взлетело 😎 .
А как ключи делать? …
… ага вроде разобрался.
Стоит добавить в конфу обработочку с примером использования….
(18) вот теперь ясно ))
💡 В модуле приложения предусмотреть вывод предупреждения, иначе если нет ключа конфигурация не загружается без всяких объяснений:
Показать
(20) там комментирован код подробно, если я добавлю еще и реализацию, то буду продавать как независимое внедрение 😉
(22) Вот так реализовано у меня (УТ, МодульУправленияПользователями, ПроверитьВозможностьРаботыПользователя(Отказ))
——
Показать
(23) Вижу ответ в шапке новости. Спасибо. Идея класс …. 😎
Добавил «демо» базу с реализацией.
ВНИМАНИЕ: демо — как пример использования, а не как руководство по составлению кода 😉
идея интересная+
В терминале работать не будет((( Если работа идет как в терминале (географически удаленные точки), так и по сети, то надо как-то разделять их… А так — идея классная.
А eToken так подключить можно? 😉
(28) думаю можно и етокен, если посмотреть 😉
а насчет терминала — нужно попробовать.
Не понял про «по сети», это ИКЗ в 1 компе а сам на другом, так что ли?
Это как войти в свою квартиру через дверь соседа… нет уж, у тебя есть рабочее место — сел, вставил ИКЗ — работаешь 🙂
А то получится я «сел, вставил свой ИКЗ — работаю», а ты с другого компа под моим паролем бамс и тама? 🙂
Добавил изменения для 7.7, может кому пригодится
(4) а что тут комментировать! за комментировал и пользуйся дальше :0))
(31) Закомментировать код сможет только тот, у кого есть доступ к конфигурации, а подобный доступ кому попало давать не стоит. Хотя, конечно, данный код никак не защитит Конфигуратор.
(31) Вносить изменения в конфу как комплект поставки без исходного кода, тогда — буй там плавал а не код комментить.
Кто-нибудь уже внедрил ? 🙂
(30)
Куда добавил? Где можно прочитать про способы работы с 7.7?
(35)
Для 7.7 в шапке есть функция возврата ком по моникеру, ну а сам код под 7.7 изменить думаю займет минут 10
(36) т.е. каждый 7-ник должен скачать версию для 8-ки, а потом еще и поменять ее?
А может, Вы сами сделаете такую 7-ную версию? Это же 10 минут всего 😉
А людям будет удобно.
(37) люди уже на 8.2 бодаются, думаю не стоит тянуть за собой то, что уже не актуально(7.7), к тому же нет возможности работать с клюшками
(38) вот именно, что бодаются 😀
Добавил выгрузку для 8.2 (не конвертировано а переписано 🙂 )
а что если какой-нибудь «злыдень» утащит файл с флешки и вытащит пароль?возможно ли закрыть физический доступ к флешке,но не программный?
(41) Ну «злыдню» нужно еще серийник флешки перепрошить, защита идет в связке имя пользователя + пароль + серийник 🙂
(41) Добавил обработку, для «скрытия» ИКЗ из списка дисков, при старте 1С «скроет» при выходе из 1С «откроет»
почему в «»?, да потому что не видит только виндовый эксплорер, все остальные менеджеры будут видеть.
А смысл, если ключ HASP HL Pro стоит от 700 руб. (практически как флешка)? 😉
А если использовать сразу сетевой HASP… Так на 10 рабочих месте это получается значительно дешевле 10 флешек ❗
(45) — > (29)
Узнал пароль любого из 10 рыл и работай, воруй данные, сливай все врагам 🙂
(46) там технология немного другая: 1 ключ — 1 программа… Но с помощью ключей и пароли хранить можно, половина из них имеет встроенную память 😉
(47) Ничего не понял, но было интересно… 1 ключ — 1 программа.. ключ сетевой на 10 пользователей, ключ торчит постоянно т.к. работает хотя бы 1 из 10 пользователей, что мешает мне, как «корпоративному шпиону» войти под другими 9 (1 из 9) пользователями?
ИКЗ создан для:
1. Личного использования
2. Выработки дисциплины (забрал домой после работы, сутра принес, если оставил в компе- штраф)
3. Защиты инфы, нет ключа — нет инфы.
Он для того и «индивидуальный», что бы всяких хитро
жопыхумных отвадить от базы.(48) ну Вы даете… Храните все эти же данные сетевом ключе, никто не запрещает. Насмотрелись на платформу, которой любой ключ (подходящел модели) подсунул и она работает, все намного серьезнее, примерно те же маневры, что и в случае с флешкой, можно проделать и с ключом хасп, только намного надежнее, плюс по цене выходит ну ни чуть не дороже, а то и дешевле. Аппаратные ключи как раз для этого и предназначены, а то, что вместо ботинок можно надевать полиэтиленовые пакеты на ноги, ну ни чуть не выдвигает последние, как альтернативу обуви 😉
(49) Ну так объясните мне, чем ваша система, основанная на хасп, надежнее? Тем что сам хасп защищен? Распишите принцип работы с сетевым ключом, возможно я не так все понял. У меня просто флешки на 2Гб (стоимостью 200р за шт) служат не только как ИКЗ, но и как хранилище для почты и покупать «альтернативу» за 700р. с 128 метрами на борту — считаю бредом.
(50) вот преимущества:
http://www.aladdin-rd.ru/catalog/hasp/hasp_srm/tech_details.php
во всяком случае, перед флешкой это точно преимущество 😉 И Вас, уважаемый, немного понесло, считать привязку к флешке альтернативой аппаратной защите — явный перебор 😀 А то, что на ключ защиты нельзя запихать пару фильмов, это вообще не недостаток.
(19)
Сдохла флешка — день потерян
Сдох порт USB — день потерян
В терминальном режиме как? 100 USB портов на теминальном сервере и все в очередь на вставку? (метод расшаривания флех на компах юзверей не предлагать!)
В точку!
P.S. Наш сисадмин на предложение просто разрешить юзверям использование USB-портов и втыкания ими флешек туда вообще скажет как Никулин вороватому завскладом:
(52) В одной конторе вообще сисблоки не доступны, так что тут как в анекдоте «не каждый алгоритм, разработанный программистом, подходит конечному пользователю», как быть?
(51) На мой вопрос «чем хасп лучше усб» вы отвечаете «чем усб», так что, уважаемый, нравится хасп — привязывайтесь к хасп 😎 . И я смотрю много дала аппаратная «защита» 1С 😀
(53)
Супер-правильная контора 😀 Мы немного не доросли. Хотя у нас доступность сисблоков дает только возможность комп включить/выключить 😉
(54) Все зависит от конторы, если ФАПСИ — то да, так и нужно, в любом случае, если человек не хочет работать — он не будет, мне вон комп выключи, так я на перекуры бегать буду… и как кто-то сказал: «90% вирусов находятся в 70см от монитора»
(55) Просто у нас задача состоит в том, чтобы информацию не спёр как раз тот, у кого есть «индивидуальный ключ защиты».
А другие у нас просто ¡No pasarán!.
(56) в этом случае вам не поможет даже сканер сетчатки глаза и отпечатков пальцев, т.к. информацию все равно сливает тот, у кого есть доступ. В этом и заключается проблема безопасности, тот у кого нет доступа не может слить и платит тому у кого доступ есть.
(57)
Во! Хоть какая-то польза, кто-то бабло получит 😀 😀
Писал нечто подобное. Правда задача была другая — привязать конфигурацию к конкретной флешке, для защиты от копирования. Слабость такой защиты в том, что можно очень легко сделать образ флешки и залить на другую флешку. Получим совершенно идентичный ключ.
Писал нечто подобное. Правда задача была другая — привязать конфигурацию к конкретной флешке, для защиты от копирования. Слабость такой защиты в том, что можно очень легко сделать образ флешки и залить на другую флешку. Получим совершенно идентичный ключ.
Даже не рядом, я привязался как минимум к 3 параметрам (файл,метка,серийник), вы же только к файлу на флешке, сдается мне если я закину файл на диск «С:» (да хоть на «Ж»), то конфа будет работать…
бредятина полнейшая. (29) вообще улет
защита должна быть такая которую трудно снять, чего не скажешь в данном случае
Кстати, есть способ не отключать USB-порты, а запрещать съёмные носители.
Т.е. флешка определяется, буква диска назначается, а диск «не вставлен».
Хорошо бы предусмотреть разные параметры и возможность гибко настраивать их связки.
Параметры, например, такие — мак-адрес сетевой карты, пользователь системы,
пользователь 1С, серийник флешки (смарт-карты).
(62) Ну поделись «снятием» этой защиты, без ковыряния в коде.
(63) Никто не ограничивает доработку ИКЗ под свои нужды, код я вроде не закрывал, дерзайте, ибо мне уже не интересно, т.к. это не приносит мне ни какого дохода.
когда-нибудь скачаю и попробую!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
хрень!
(54) Abadonna,
Я понял тут важна не «доступность» блоков, а верификация.
У нас сменные сотрудники работали под 1 паролем,убеждения не помогали. Как косяк и отвечать надо — сразу навели порядок 🙂
PS
Интересно было бы решение со сканерами отпечатков пальцев, они вроде недорогие
реализация хорошая, надо допиливать конечно
(68) Допиливание — основная часть работы одинесников, дерзайте 🙂
возможно кому-то и пригодится, но, думаю, не многим
интересная затея
а что имеется ввиду под серийным номером флешки? Тот номер который присваивается ОС или тот что вшит с завода?
Задумка интересная