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




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2024-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='\

37 Comments

  1. o.nikolaev

    Правильно я понял, если разработка публикуется с доступом «для всех» (а не только для зарегистрированных), то она в эту «программу» не включается автоматически, и включена не будет?

    Цены на мой взгляд высоковаты. Надо поменьше сделать раза в два (150, 900, 1800).

    Reply
  2. CheBurator

    Похоже что так… я думаю саппорт ответит точнее.

    Reply
  3. CheBurator

    Подписка на полгода/год должна давать скидку…

    Reply
  4. MRAK

    не уверен, что взлетит….

    на мисте вообще какой срач развели:

    http://www.forum.mista.ru/topic.php?id=413304

    Reply
  5. biv75

    (4) А миста-то тут причем? Пускай разводят, но халяму пора прекращать, на содержание сайта должны быть деньги.

    Reply
  6. CheBurator

    (4) Злопчинский — это я тама… на мисте знающих людей в процетном отношении примерно как рапспределение программ на Исе… 😉 Халявщики поэтому там и тусуются (как и на ИСе), а на кубани — выдавливают быстро таких, но там труднее получить содержательные ответы…

    Reply
  7. vuzurp

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

    Сводить заказчика с исполнителем — это услуга.

    Помогать продавать разработки — это услуга.

    А брать плату за скачивание и только с зарегистрированных — это что? это для кого услуга? за что платить? Или это новая поддержка разработчиков, и им (разработчикам) будут отстегивать за скачивание их файлов?

    Reply
  8. biv75

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

    Reply
  9. biv75

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

    Reply
  10. kermit_80

    Ну наконец, появится ГРУППА А(актив), ГРУППА Б(болото)!! Демократия в действии ;-)) R

    Reply
  11. fedor40

    Файлы (для зарегистрированных) скачиваются только один раз в сутки.

    Просто будут делать несколько эккаунтов.

    Reply
  12. anbxp

    Лично мне до фонаря — будет сайт платным, или нет. Одного скачивания в сутки для личного пользования хватит за глаза и за уши. Но. Кто будет смотреть/комментировать выложенные разработки? Пропадает обратная связь. А авторам, я так понимаю, надо, чтобы их разработки протестировали и оставили мнение.

    Reply
  13. ded00786

    Есть в этом здравое зерно………….

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

    Reply
  14. Boroda

    Блин, всегда крохоборы всё испоганят! Нормальный был сайт — можно было обмениваться обработками без проблем, только зарегистрируйся. Потом появились желающие сбыть свою работу за деньги…. Ладно, их дело. Но, как я понял, и сам сайт хочет, чтобы ему перепадало? От купли-продажи или от сбыта бесплатных тут обработок за уже деньги, продавая аккаунты.

    Я лично за свои обработки деньги здесь брать не собираюсь, хватит и того, что я получаю с клиентов. А самими обработками могу поделиться с «товарищами по оружию».

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

    Reply
  15. support

    Несколько логинов не поможет.

    Обратная связь какая была, такая и осталась. Скачать разработку можно, оставить комментарий можно.

    Притом остаются файлы «для всех», скачивание их неограниченно.

    Reply
  16. vip

    (15) Ответь, пожалуйста, на мои неоднократные вопросы про «серые» IP-адреса.

    Из-за одного «виновника» банится вся его сеть.

    Reply
  17. support

    (16) да, как на рапидшаре.

    Reply
  18. vip

    (17) Ты считаешь, это хорошо?

    Reply
  19. Tatitutu

    (4) да там ….лучше промолчу. Только вот не понял там написано («Теперь не более одного плюсика в день») а здесь я этого не увидел…тките меня туда, где про звездочки )))

    Reply
  20. vasilykushnir

    (14) Ну какой же ты ….. блин не могу подобрать слова….

    Тебе что? в падлу заработать 30 пунктиков вшивых? Хочешь халяву, сэр, чистоганом. Поверь (мамой клянусь!) если вы обраитесь ко мне (ИЛИ к випУ) завсегда поможем, НО если без нахрапа….

    Reply
  21. Доня

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

    А про халявщиков страно слышить, и жаль что такая хорошая идея опять превращается в деньги!

    Reply
  22. Altair777

    (21) Вы мнгоими разработками воспользовались?

    А скольким плюсик поставили? Или дельные комментарии написали?

    Reply
  23. support

    (21) Вы, бухгалтер, и не можете себе 2500 руб в год выделить в фирме для своей работы? Не верю!

    Reply
  24. CheBurator

    (23) Поддержива!!! Почему у меня бух мне — 1Снику — выделяет деньги если я говорю что надо будет купить готове, вместо того чтобы я на это ТУПОЕ дело тратил мое дорогостоящее время?

    Reply
  25. Доня

    (22) Пользуюсь внешними отчетами и формами.

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

    А если доступ будет ограниченный, как проверишь? идет это в программе или не идет.

    А вообще СПАСИБО всем за эти разработки! Расширяют возможности бухгалтера …

    Reply
  26. woozee

    интересно когда подобная участь постигнет «наше 1с»)

    Reply
  27. MegaMouse

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

    Ну и оффтопики резать, чтоб мусор не разводить(можно и штрафовать)

    Боты и 5 аккаунтов при такой системе — геморно иметь, а обычному пользователю не помешает.

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

    Бан по IP-шникам всегда добивал меня — я против конкретно этой меры воздействия.

    Reply
  28. MegaMouse

    (21) переадрисую этот вопрос к администрации сайта, в (27) та же мысль расписана подробно

    // и добавте, пожальста, возмоожность свои топики редактировать

    Reply
  29. Доня

    Я заметила здесь: лучшие разработки — в свободном доступе!

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

    Reply
  30. Душелов

    А те, кто выкладывают для зарегистрированных, да еще и за деньги — закомплексованные бедняки…

    Reply
  31. WiseSnake

    (29) Да нет, я думаю, что им просто наплевать на Инфостарт…

    А какие разработки на Ваш взгляд являются лучшими?

    Reply
  32. Abadonna

    Молодец, Доржи ;))

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

    Т.е. никто ими раньше не пользовался, не плюсовал.

    Вот сижу, думаю: меня диплома не лишат? Я ведь уже почти 30 лет, как не студент :)))))

    Reply
  33. support

    (32) Страницы можно восстановить, но тогда надо заново разместить на них разработки. Пиши на support@infostart.ru

    Reply
  34. boogie

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

    Лучше мало, но полезных пользователей, чем вся страна флудеров и спаммеров. Зачем нужен клиент, который не хочет платить? Только для одного — популярности.

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

    А также ввести программу для поддержки студентов и удалённых регионов с хорошими скидками или по IP студенческой сети давать бесплатный доступ. Можно ещё слушателям курсов 1С тоже месяц в подарок делать и с 1С будет дружба. 🙂

    Reply
  35. anig99

    (34) наивняк… студентам нужно комплексной образование, а не скачка обработок

    Reply
  36. boogie

    (35) на перспективу надо смотреть — они же выучатся когда-нибудь

    Reply
  37. L_B

    «Зачем нужен клиент, который не хочет платить? Только для одного — популярности.»

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

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *