2017-02-21 39 views
0

Я написал веб-приложение для доставки, используя PHP, mySQL, javascript и jQuery для аптеки, где они могут вводить поставки на компьютер, выходить и делать фактическую доставку, а клиенты подписывают на телефоне драйверов пальцем , Теперь я интегрирую новые функции в этот сайт, чтобы отслеживать, сколько часов работал каждый сотрудник, разрешив им войти в систему и щелкнуть «часы в», а затем щелкнуть «часы» в конце их смены. Проблема, с которой я сталкиваюсь сейчас, заключается в том, что мы не хотим, чтобы сотрудники могли «набирать часы» или «выходить из системы» дома, но нам по-прежнему нужны они, чтобы иметь возможность доступа к сайту из любого места, чтобы фиксировать подписи для поставки.Как заблокировать функциональность веб-приложения для определенных компьютеров/устройств?

Я подумал о нескольких решениях, но, похоже, их невозможно реализовать. Мои решения, где:

  1. Разрешить учетной записи администратора «активировать функцию включения/выключения часов», нажав кнопку, которая сохранит файл в отдельном месте. Сайт найдет этот файл, если учетные записи, не принадлежащие администраторам, будут использовать сайт на этом компьютере и позволят им синхронизировать. Похоже, что это проблема безопасности с javascript и не выполняется.
  2. Разрешить учетной записи администратора «активировать функцию включения/выключения часов», нажав кнопку, которая записывает на этот компьютер уникальный идентификатор и сохраняет его в базе данных. Когда не-администратор войдет в систему, сайт проверит базу данных для этого значения и сравнит ее со значением машины, чтобы предоставить доступ к функции «время входа/выхода».

Я думаю, что наиболее распространенным решением, которое люди будут использовать, является IP-адрес, но я не думаю, что это сработает, потому что у Аптеки есть динамический IP-адрес.

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

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

+1

Вы ищете файлы cookie. (или, если вы хотите быть фантазией, сертификаты клиентов) – SLaks

+0

Cookies слишком временные, я думаю.их можно легко удалить, очистив историю просмотров и т. д. Сертификаты клиентов могут быть ответом, хотя ... –

ответ

0

Очевидно, вы можете сохранять информацию в браузере пользователя с помощью HTML5 Web Storage или локального хранилища. Это похоже на файл cookie, за исключением того, что он не истекает или не очищается, когда браузер закрывается или компьютер выключается. Я думаю, если я использую это так же, как мой первоначальный план, он будет работать. Единственным недостатком будет то, что если пользователь очистит историю своего браузера, это будет уничтожено. Я думаю, что это будет меньше зла, так как я не думаю, что аптека когда-либо очищает историю своего браузера.

https://www.w3schools.com/html/html5_webstorage.asp

Я проверю этот ответ, если бы/когда я решил пойти с этим решением, которое он смотрит, как я, вероятно, буду.

0

Вы можете использовать геолокацию HTML5, чтобы узнать, действительно ли они находятся в аптеке. Поддерживают ли это УСТРОЙСТВА работников вы должны проверить, но есть HTML5 API

navigator.geolocation.getCurrentPosition(function (result) { 
    console.log("Lat: " + result.latitude + " Long:" + result.longitude); 
}); 

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

Еще один, и, возможно, самый простой вариант - просто физически использовать обычную часы в аптеке;)

+0

Геолокация может быть достаточно хорошей. Не то, что я имел в виду, но если все остальное не работает, это может сработать. Проводка ежедневного пароля будет работать, но я знаю, что менеджеры будут слишком ленивы, чтобы сделать это. И физическая машина не может быть и речи. Haha –

+0

Что делать, если вы заставляете их сканировать штрих-код одного из продуктов с помощью своего телефона? Я не был уверен, но я предполагаю, что «часы в» - это начало доставки. – Bemmu

+0

Нет, они на самом деле два разных «модуля», если хотите. Это просто, чтобы записать, сколько часов они работают для расчета заработной платы. Я мог бы подумать о решении со штрих-кодом, это хорошая идея, но у меня уже есть программа доставки (VB), которая вызывает некоторые проблемы (именно поэтому я создаю этот модуль), поэтому они более используются просто зайти на компьютер и войти в систему. –

Смежные вопросы