Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как привязать сайт к "железке" 
:(
    Опции темы
Alca
Дата 3.10.2008, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: нет
Всего: 50



Пробую без кукисов. Мне надо чтоб при загрузке каждой страницы проверялся ID карты.
Я думал сделать так:
1) в событии onLoad страницы index.htm читаю ID; 
2) прочитав, отправляю ID на CGI-скрипт POST-запросом
  (document.frmCardId.submit();) (frmCardId - форма с хидн полями);
 проверив данные на корректность, скрипт делает переадресацию на index.htm 
  (document.location.href("http://127.0.0.1/index.htm"));
3) происходит событие onLoad страницы и все начинается с 1-ого пункта;
4) впадаем в бесконечный цикл (постоянная отправка, передача); 
Хелп плиз!!!! Толкните на правильное решение пж.....  smile 

Это сообщение отредактировал(а) Alca - 3.10.2008, 17:19


--------------------
PM WWW ICQ Skype Jabber   Вверх
Nigel
Дата 3.10.2008, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


познаю мир
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 20.11.2007

Репутация: нет
Всего: 19



Тогда попробуйте без перезагрузки страницы. Копайте в сторону ajax. На onload вешаете, к примеру функцию отправки данных. Если все ок, то возвращаете статус "пройден". Что-то наподобии:
Код

/* Создание нового объекта XMLHttpRequest для общения с Web-сервером */
var xmlHttp = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
  xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (e2) {
    xmlHttp = false;
  }
}
@end @*/

if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
  xmlHttp = new XMLHttpRequest();
}

function sendData(){
              var url = 'mypath/to/cgi-script?id=my-super-secret-id';
      // Открыть соединение с сервером
      xmlHttp.open("GET", url, true);

      // Установить функцию для сервера, которая выполнится после его ответа
      xmlHttp.onreadystatechange = checkState;

      // Передать запрос
      xmlHttp.send(null);
}

function checkState(){
  if (xmlHttp.readyState == 4) {
    var response = xmlHttp.responseText;
    if(response=='ok') {alert('you are authorized!');}//дальше вперед и с песней
    else { alert("no access!");}//перекрываем кислород
  }

}


Ну, а в скрипте проверки, как наверно догадались
Код

if(проверка_пройдена) {
print 'ok';
} else {
print 'error';
}

PM MAIL   Вверх
Alca
Дата 8.10.2008, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: нет
Всего: 50



Nigel, Спасибо за код, помог для IE! 
А если в браузере (Opera 9.52) выполнение скриптов отключено, 
то скрипты просто игнорируются и содержимое страницы отображается полностью!
А мне надо что б страница вообще не грузилась. 
AJAX курит в сторонке...

Это сообщение отредактировал(а) Alca - 10.10.2008, 17:30


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alca
Дата 10.10.2008, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: нет
Всего: 50



Пробую с куками:
Цитата

Более правильный вариант - сервер предлагает какое-то случайное число-ключ, по которому шифруется значение ID карты. Вот оно уже и сохраняется в куках-сессии. Сервер, зная ключ расшифровывает значение ID и идентифицирует карту. Так как используется ActiveX, то несложно навернуть сколь угодно сложный алгоритм шифрования. Ключ сохраняется на время жизни сесии.

Каким образом сервер получает куки? 
И что подразумевается под словом "сервер"? Мой CGI-шный скрипт?


--------------------
PM WWW ICQ Skype Jabber   Вверх
ksnk
Дата 10.10.2008, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата

Каким образом сервер получает куки? 

Может по протоколу http? ;-)
Скрипт видит их в массиве $_COOKIE

Цитата

И что подразумевается под словом "сервер"? Мой CGI-шный скрипт? 

Ну да...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
unicross
Дата 10.10.2008, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 422
Регистрация: 15.6.2008

Репутация: 6
Всего: 53



Цитата(Alca @  3.10.2008,  17:15 Найти цитируемый пост)
Пробую без кукисов. Мне надо чтоб при загрузке каждой страницы проверялся ID карты.


Зачем? Думаю надо копать не в сторону AJAX и JavaScript (их можно отключить в браузере), а изучить механизм сессий в PHP или Perl. Например, скачав этот файл.

Я не предлагаю перейти на эти языки с С. Просто технология сессий будет такой же:
1. Считываем значение смарткарты и отправляем методом POST (!!!)
2. На сервере пароль проверяется и если он в порядке, то:
 - генерируется уникальный идентификатор
 - создается файл на сервере с названием идентификатора
 - в этот файл записывается:
    - номер смарт карты
    - IP адрес клиента
    - браузер пользователя
    - дата создания и т.п. (Получить значения можно через переменные окружения)
 - на компьютер пользователя устанавливается куки с идентификатором (! не с номером смарткарты !)
 - если прием куки запрещен в браузере, то идентификатор следует прикрепить ко всем ссылкам
3. При повторном заходе:
 - считывается идентификатор из куки
 - сравниваются все значения записанные в файле на сервере
 - если значения совпадают, то предоставляем доступ
 - если время истекло или не совпадает хотя бы один параметр, то удаляем
    - файл на сервере
    - устанавливаем просроченный куки
    - считываем заново значение смарткарты

Для надежности все через протокол https


PM MAIL WWW   Вверх
Alca
Дата 10.10.2008, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: нет
Всего: 50



Спасибо за совет и за ссылку, буду читать  smile .
Цитата

Скрипт видит их в массиве $_COOKIE

Каким образом CGI-шный скрипт увидит куки при посещении страниц (я же к ниму не обращаюсь)?
Мне что к каждой ссылке добавлять запрос к скрипту, чтобы проверялись куки?
Цитата

Например, скачав этот файл.

Ну там про сессии написано (Модуль CGI::Session). Как я их прикручу к Си-шному коду? smile 
 smile  smile  smile  smile  smile 
Цитата

Каждый раз, когда пользователь запрашивает страницу с сервера, браузер автоматически отправляет куку с идентификатором сессии серверу. Сервер проверяет идентификатор по своей базе идентификаторов и, при наличии в базе такого идентификатора, «узнаёт» пользователя.

Можно какой-то примерчик привести? Мне не ясно как реализовать проверку идентификатора, каждый раз когда пользователь запрашивает страницу с сервера.  smile 

Это сообщение отредактировал(а) Alca - 13.10.2008, 16:58


--------------------
PM WWW ICQ Skype Jabber   Вверх
Nigel
Дата 18.10.2008, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


познаю мир
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 20.11.2007

Репутация: нет
Всего: 19



Цитата(Alca @ 8.10.2008,  08:57)
А если в браузере (Opera 9.52) выполнение скриптов отключено

Тогда пишем просто 
Код

<noscript>Юзверь, хочешь работать, включи Яваскрипт!</noscript>

Сама страница при загрузке сделает запрос на проверку, если прошел, то посылаешь запрос (или можешь сразу данные получить) на получение контента при помощи того же аякса, предварительно записав данные об успешной аутентификации в куку или сессию.
Код

function myfunc() {
...
//после прохождения проверки
...
//после получения контента
//при помощи DOM рисуем страницу
//используя методы appendChild(), innerHTML;

var oHTML = new StringBuilder('Приветствую тебя, ...');
oHTML.Append('<div>тут контент<\/div>');
document.body.innerHTML = oHTML.toString();//страница загружена
}

PM MAIL   Вверх
Alca
Дата 3.11.2008, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: нет
Всего: 50



Цитата

если прием куки запрещен в браузере, то идентификатор следует прикрепить ко всем ссылкам

Каким образом (программно) я могу прикрепить идентификатор ко всем ссылкам?

Это сообщение отредактировал(а) Alca - 3.11.2008, 14:08


--------------------
PM WWW ICQ Skype Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0508 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.