На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Внимательно изучите правила раздела перед созданием темы
0. ПРИЛАГАЙТЕ СВОИ СКРИПТЫ.
1. Прежде чем создать топик, используйте поиск. Возможно это уже обсуждалось.
2. В топике указывайте ОС, режим работы скрипта (CLI|CGI). Очень желателен вывод лог-файлов и того места, куда у вас назначен вывод данных (STDOUT|STDERR)
3. Помните: вы знаете что вы хотите, а форумчане - нет. Поэтому следуйте простому правилу: грамотный развернутый вопрос - грамотный развернутый ответ.
Модераторы: ANDLL
  
    > Авторизация + CGI
      В общем суть проблемы такая. Сижу на провайдере и надо написать страничку, которая для каждого пользователя разная (ну допустим рассказать ему - сколько часов в инете он уже насидел). Вопрос: как на перле узнать - кто именно вызвал скрипт. REMOTE_ADDRES не катит - адресация динамическая, на авторизации - такакс висит (Linux) а тэг input на login & password ставить не хочется - все идет открытым текстом, с SSI тоже туго.
        и вся таки по поводу тэга input позволю не согласится :)
        ведь можно и не открытым текстом посылать пароль и логин. Достаточно в тэге form поставить method='post' и все переменные формы не будут светиться строке запроса и в кэше тоже.
        ну если уж совсем не хочется, то наверное только через кукисы :)
        use CGI qw/:standard/;
        use CGI::Cookie;
        &GetCookieInput;
        $CookieAbonentCod = $field{'CookieAbonentCod'};
        #Если пользователь ни разу не заходил на страничку, то создаём для него уникальный 16-ти значный номер и сохраняем ему кукис на винте
        if($CookieAbonentCod eq "") {
        @TableSymbols = ('A','B','C','D','E','F','G','H','I','J','K','L','M',
        'a','b','c','d','e','f','g','h','i','j','k','l','m',
        '0','1','2','3','4','5','6','7','8','9',
        'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
        'n','o','p','q','r','s','t','u','v','w','x','y','z');
        for($i = 0; $i < 16; $i++) {
        $NumberOneSymbol = int(rand(62));
        $NewAbonentCod = $NewAbonentCod.$TableSymbols[$NumberOneSymbol];
        }
        $CookieAbonentCod = $NewAbonentCod;
        my $setcookie = new CGI::Cookie(-name => 'CookieAbonentCod', -value => [$NewAbonentCod], -expires => '+3M');
        print ("Set-Cookie: $setcookie\n");
        }
        #Если же пользователь уже заходил на страничку, то у него уже лежит этот кукис и переменная $CookieAbonentCod будет содержать этот номерочек
        #А это сама функйия получения от пользователя кукиса
        sub GetCookieInput {
        (*fval) = @_ if @_ ;
        local ($buf);
        if ($ENV{'REQUEST_METHOD'} eq 'POST') {
        read(STDIN,$buf,$ENV{'CONTENT_LENGTH'});
        }
        else {
        $buf=$ENV{'HTTP_COOKIE'};
        }
        if ($buf eq "") {
        return 0 ;
        }
        else {
        @fval=split(/; /,$buf);
        foreach $i (0 .. $#fval){
        ($name,$val)=split (/=/,$fval[$i],2);
        $val=~tr/+/ /;
        $val=~ s/\%(..)/pack("c",hex($1))/ge;
        $name=~tr/+/ /;
        $name=~ s/\%(..)/pack("c",hex($1))/ge;
        if (!defined($field{$name})) {
        $field{$name}=$val;
        }
        else {
        $field{$name} .= ",$val";

        #if you want multi-selects to goto into an array change to:
        #$field{$name} .= "\0$val";
        }
        }
        }
        return 1;
        }

        Естевственно это всё на Перле :)
          тыж провайдер.
          и сам через dhcp юзерам ip даеш.
          почему нельзя через remote_addr ?
          пообщайся со своими сисадминами. пусть они
          тебе логят текущих юзеров.
          про тег input.
          если ты пров, то как юзер вмето тебя
          другой роуер в инет возьмет ?
          никто кроме вас его проснифить не сможет.
          а в доке на главной
          странице напишите, чтоб не юзали внешнюю
          проксю. кто не послушал - сам виноват.
            дополнения.
            еснсо если на компе стоит сквид (прокси),
            на нем можно логить трафик через хттп.
            или если в одном сегменте с этим клиентом
            есть еще некоторые клиенты. тут ессно
            можно весь сегмент слушать.
            но отмазка в этих случаях стара и проста:
            "выб еще на лбу айди/пасворд написали
            и по улице ходили."

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


            Рейтинг@Mail.ru
            [ Script execution time: 0,0231 ]   [ 15 queries used ]   [ Generated: 26.04.24, 04:38 GMT ]