На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Соблюдайте общие правила форума
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Указывайте точные версии Delphi и используемых сетевых библиотек.

Не приветствуется поднятие старых тем. Если ваш вопрос перекликается со старой темой, то для вопроса лучше создать новую тему, а старую указать в первом сообщении с описанием взаимосвязи.

Внимание:
попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Krid, user posted image Rouse_

Модераторы: Krid, Rouse_
  
> как узнать к-во пользователей моей программы , как узнать к-во пользователей моей программы
    Здравствуйте!
    Интересует оптимальный способ, как узнать к-во пользователей использующих мою сетевую программу. При этом желательно не задействовать почту, а просто вероятно записывать данные в лог файл на сайте.
      ...сеть локальная или Интернет? И там и там можно просто вызывать пых-пых скрипт на удаленном хосте (винсокетами или инди - idHTTP или из синапс класс httpsend), сам скрипт пусть пишет в файл.

      Cкрипт my.php (вызов и запись в параметр http://host/my.php?id=чегонибудь):
      ExpandedWrap disabled
        <?
         
        $d = date('d M Y H:i:s'); $nf=date('m-Y');
        if (is_file($nf.'.txt')) $fp=@fopen($nf.'.txt',"a"); else $fp=fopen($nf.'.txt','w');
         
         
        fputs($fp,"$d#$id\r\n");
        @fclose($fp);
        ?>


      в локалке поднимаем аппач для пыха. Или пишем по FTP, аналогично в локалке поднимаем сервак. Или в сетевую шару.
        С скриптами не сталкивался, сайт на хтмл. Сеть интернет, пользователь запускает программу, а она уже этот php? Используется компонент инди для запуска этого пшп, а он уже будет делать запись в лог на сайте?
          ...раз на хосте нет PHP, то только писать в файл по FTP, сначала скачивать, записать, потом отослать. idFTP например или синапсом. Скриптов никаких не надо в этом случае.

          зы: это ваша та же тема на кибере?
            на хостинге есть php и тема моя есть на винграде больше нигде.
              Альтернативный вариант
              А что если раздавать индивидуальный ключ к конкретной машине, как многие делают и отслеживают кол-во лицензий равное кол-ву компьютеров.
              Типа программа запускается на компьютере генерирует ключ по матери, процессору, свободному месту или чему либо еще программа или
              сам пользователь отправляет HWID вам и вы генерируете на его основе ключ
                Можно обойтись и без компонентов, обычными средствами WinInet.
                Но надо иметь в виду, что статистика будет с погрешностью: кто-то закроет доступ на фаерволле, например.
                  ...синапс, к примеру не компоненты, а просто набор классов, обертка.

                  Цитата
                  на хостинге есть php
                  тогда вам дан готовый код, просто вызывайте этот скрипт и передавайте в него то, что вам вздумается.

                  Цитата
                  тема моя есть на винграде больше нигде.
                  значит у вас есть собрат по "счастью" с тем же вопросом :D
                  Сообщение отредактировано: raxp -
                    Сделал по примеру в интернете файл ини с папки программы, но всё дело, что он стандартный у всех. Оптимально, если будет ип - адрес пользователя и он бы добавлялся в файл на хостинге. Пример
                    ExpandedWrap disabled
                      ..
                      uploadfile.php, 430 b
                       
                      <?php
                          $uploaddir = "tmp"; // Where you want the files to upload to - Important: Make sure this folders permissions (CHMOD) is 0777!
                          
                          if(is_uploaded_file($_FILES['ffile']['tmp_name']))
                          {
                          move_uploaded_file($_FILES['ffile']['tmp_name'],$uploaddir.'/'.$_FILES['ffile']['name']);
                          print "Your file has been uploaded successfully! Yay!";
                          
                          } else {
                          print "Your file has not been uploaded!!";}
                          ?>
                       
                       
                       
                       
                      procedure TForm2.send1Click(Sender: TObject);
                      //procedure TForm1.sendFileInet(filename: string);
                      var
                       response: string;
                       formData: TIdMultipartFormDataStream;
                       idhttp1: TIdHTTP;
                      begin
                          idhttp1 := TIdHTTP.Create(nil);
                       
                       
                      formData := TIdMultipartFormDataStream.Create;
                       
                      formData.AddFile('ffile', 'хххх.ini', 'text/plain');   // ffile mst be in php-file
                      IdHTTP1.Request.ContentType := 'multipart/form-data';
                      try
                       response := IdHTTP1.Post('http://ХХХХ/uploadfile.php', formData);
                      finally
                        IdHTTP1.Free;
                        formData.Free;
                      end;


                    дальше я попробовал ещё embeddedwb сделал его невидимым и чтобы он открывал сайт скрытно для прльзователя на хостинге, покажет кто заходил и ип - адрес в том числе, но к сожалению почему то пишет, как мозила. Хотя в user agent я выставил имя своей программы.
                    Пример
                    ExpandedWrap disabled
                      EmbeddedWB3.Navigate(' http://narod.ru/ip');



                    изменил запрос немного создал пустой файл ip в дире и сылку в проге как кто запустит программу то соответсвенно и этот файл. Вот сейчас на хостинге посмотрел видно работает, файл пустой и на странице его нет, поэтому открываться он может скорее всего за счёт запуска программы.
                    Но всё равно готового решения, что- то нет в интернете, а оптимально конечно лог файл на хостинге куда записывался бы ип-адрес путём добавления в лог файл.
                    Сообщение отредактировано: s2004 -
                      Цитата
                      а оптимально конечно лог файл на хостинге куда записывался бы ип-адрес путём добавления в лог файл.
                      пост #2.

                      Цитата
                      я попробовал ещё embeddedwb
                      ваша версия Delphi? Нет встроенной Indy?
                        Цитата
                        я попробовал ещё embeddedwb
                        ваша версия Delphi? Нет встроенной Indy?

                        Нет это расширенная версия webbrowser встроенного в дельфи.
                          Я в курсе, что такое embeddedwb :D. Что до webbrowser, это вообще ActiveX IE. Вы на вопрос-то ответите, версия Delphi? Откуда-то же у вас появилось желание костыли взять.
                          Сообщение отредактировано: raxp -
                            rad studio xe
                              ...Indy там есть. Чем не устроил метод GET у idHTTP?
                                скрипт 2 поста у меня не работает cmod разные ставил не помогает.

                                в 9 посте я написал, что использовал idhtt. правда там метод post.
                                давно где находил хороший пример программно нажать кнопку, а сейчас что то всё не то то клавиатура то рецепт не подходит.
                                Сообщение отредактировано: s2004 -
                                  ...не припомню, чтобы на народе пых-пых поддерживался. Или юкоз включил?

                                  Цитата
                                  9 посте я написал, что использовал idhtt.
                                  TIdMultipartFormDataStream там и даром не впал для скрипта. Привел же вам готовый пример вызова скрипта и передачи параметра во втором посту "http://host/my.php?id=чегонибудь". Что до аттрибутов, 644.
                                    ExpandedWrap disabled
                                      procedure TForm2.s1Click(Sender: TObject);
                                      begin
                                      idHTTP1.Get('http://i-.16mb.com//script.php?recieve=' +(IEAddress1.text)+':'+(IEAddress2.text));
                                      end;


                                    записывает в лог файл с помощью скрипта

                                    ExpandedWrap disabled
                                      <?php
                                      $recieve = $_GET['recieve'];
                                      $file = fopen("logs.txt", "a+");
                                      fwrite($file, "$recieve\r\n");
                                      fclose($file);
                                      ?>


                                    всё работает
                                    но мне то надо што бы гарантировано был ип-адрес в программе проверка ип
                                    ExpandedWrap disabled
                                      var
                                       HostN,HostIP,Err : string;
                                      begin
                                      if EmbeddedWB1.GetIPAndHostName(HostN, HostIP, Err) then
                                            MessageDlg('PC Host Name: '+HostN + #10+#13+'Your Internal IP: ' + HostIP, mtInformation, [mbOk], 0)
                                       else MessageDlg(Err, mtError, [mbOk], 0);


                                    определение ип-адреса никак не могу подставить в строку
                                    ExpandedWrap disabled
                                      idHTTP1.Get('http://i-.16mb.com//script.php?recieve='
                                    Сообщение отредактировано: s2004 -
                                      проверку ип по другому сделал
                                      ExpandedWrap disabled
                                        procedure TForm2.Button2Click(Sender: TObject);
                                        type
                                          TaPInAddr = Array[0..10] of PInAddr;
                                          PaPInAddr = ^TaPInAddr;
                                        var
                                          phe: PHostEnt;
                                          pptr: PaPInAddr;
                                          Buffer: Array[0..63] of ansiChar;
                                          I: Integer;
                                          GInitData: TWSAData;
                                        begin
                                          WSAStartup($101, GInitData);
                                          GetHostName(Buffer, SizeOf(Buffer));
                                          phe := GetHostByName(buffer);
                                          if phe = nil then Exit;
                                          pPtr := PaPInAddr(phe^.h_addr_list);
                                          I := 0;
                                          while pPtr^[I] <> nil do
                                           begin
                                            TEdit(FindComponent('Edit'+IntToStr(i+1))).Text:=inet_ntoa(pptr^[I]^);
                                            Inc(I);
                                           end;
                                          WSACleanup;
                                        end;


                                      код с книжки Флёнова, в код пересылки на сервер легко встал
                                      ExpandedWrap disabled
                                        type
                                          TaPInAddr = Array[0..10] of PInAddr;
                                          PaPInAddr = ^TaPInAddr;
                                        var
                                          phe: PHostEnt;
                                          pptr: PaPInAddr;
                                          Buffer: Array[0..63] of ansiChar;
                                          I: Integer;
                                          GInitData: TWSAData;
                                         
                                        begin
                                        idHTTP1.Get('http://i.16mb.com//script.php?recieve=' +(Edit1.Text)+':'+(edit2.Text)+':'+(edit3.Text));
                                        //idHTTP1.Get('http:
                                        end;


                                      ExpandedWrap disabled
                                        procedure TForm2.Timer2Timer(Sender: TObject);
                                        begin
                                        button2.click;
                                        end;

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

                                      Но, что- то всё, как топорно не изяшно, громозко. Может кто то предложит более рационально передачу ип-адреса на сервер без всех этих наворотов с скрытыми кнопками и едитами.
                                        1- вторые два слеша лишние, вы в браузере так же набираете? :) Не надо самодеятельности, когда дан готовый вызов.
                                        2- вам никто не мешает определение IP вынести в отдельную функцию, возвращающую текст.
                                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                        0 пользователей:


                                        Рейтинг@Mail.ru
                                        [ Script execution time: 0.0846 ]   [ 16 queries used ]   [ Generated: 23.08.26, 22:48 GMT ]