Конференция "Сети" » Счетчик посещений [D5, WinXP]
 
  • mrfreeman2007 (20.03.08 08:43) [0]
    Здравствуйте!
    Подскажите, как сделать счетчик посещений для Веб-страницы?
    В журнале нарыл такой код:

    unit Counter;

    interface

    uses
     Windows, graphics, jpeg, extctrls, Messages, SysUtils, Classes, HTTPApp;

    type
     TWebModule1 = class(TWebModule)
       procedure WebModule1WebActionItem1Action(Sender: TObject;
         Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
     private
       { Private declarations }
     public
       { Public declarations }
     end;

    var
     WebModule1: TWebModule1;

    implementation

    {$R *.DFM}

    procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;
     Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
    var
    bitmap:tbitmap;
    hits:integer;
    logfile:textfile;
    filename:string;
    jpeg1:tjpegimage;
    stream:tmemorystream;
    begin
    filename:='count.log';
    assignfile(logfile,filename);
    try
     if fileexists(filename) then begin
      reset(logfile);
      readln(logfile,hits);
      inc(hits);
     end else begin
      hits:=1;
      rewrite(logfile);
      writeln(logfile,hits);
     end;
    finally
    closefile(logfile);

    bitmap:=tbitmap.create;
    try
     with bitmap do begin
      width:=120;
      height:=25;
      with canvas.font do begin
       name:='arial';
       size:=14;
       color:=rgb(255,127,0);
       style:=[fsbold];
      end;
      canvas.textout(1,1,'Hits:'+formatfloat('###,###,###',int(hits)));
     end;

     jpeg1:=tjpegimage.create;
     try
      jpeg1.compressionquality:=50;
      jpeg1.assign(bitmap);
      stream:=tmemorystream.Create;
      jpeg1.savetostream(stream);
      stream.Position:=0;
      response.ContentType:='image/jpeg';
      response.contentstream:=stream;
      response.SendResponse;
     finally
     jpeg1.free;
    end;
    finally
    bitmap.free;
    end;
    end;
    end;

    end.

    На странице пишу тег:
    img src='counter.exe'
    Скрипт не выполняется ни разу.
    Подскажите, в чем ошибка?
  • Slym © (20.03.08 10:07) [1]
    Скрипт выполняется на сервере... У тебя есть настроенный сервер?
  • mrfreeman2007 (20.03.08 10:31) [2]
    Сервака нет... А если я размещу его на Narod'е, он будет работать?
  • Сергей М. © (20.03.08 11:11) [3]
    Не будет
  • mrfreeman2007 (20.03.08 12:19) [4]
    А как мне тогда это дело сделать? Позарез надо!
  • Сергей М. © (20.03.08 12:35) [5]
    Вариантов у тебя не шибко много:
    1. Использовать любой другой скрипт, который будет работать на Narod'е.
    2. Использовать этот скрипт там, где он будет работать.
  • mrfreeman2007 (21.03.08 06:06) [6]
    Первый вариант приемлемей. Нашел на Яндексе такой код:

    const
    counter_path='counter.dat'; // Файл для значений счетчика
       log_path='counter.log'; // Файл для IP адресов

    procedure TWM.WMWebActionItemMainAction(Sender: TObject;
       Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
    var
       f:TextFile;
    begin
       Response.Content:=SetCounter; // Устанавливаем счетчик

       // Записываем IP посетителя
       AssignFile(f,log_path);
       Append(f);
       Writeln(f,Request.RemoteAddr);
       CloseFile(f);
    end;

    function TWM.SetCounter: String;
    var
       f:TextFile;
       count:Integer;
    begin
       AssignFile(f,counter_path);
       Reset(f);
       // Считываем значение счетчика
       Readln(f,count);
       CloseFile(f);
       //Инкреминируем
       Inc(count);
       Rewrite(f);
       // Записываем
       writeln(f,count);
       CloseFile(f);
       Result:=IntToStr(count);
    end;

    Потом идем в файл counter.dat и смотрим. Но проблема: мне надо, чтоб значение счетчика выводилось на странице.
  • Сергей М. © (21.03.08 08:23) [7]

    > mrfreeman2007   (21.03.08 06:06) [6]


    Ты не понял.
    Скрипт, использующий твою программулину, не будет работать на Народе хотя бы потому, что хостер в здравом уме не позволит разместить у себя на сервере твой  исполняемый файл.
    Ты же не поклялся хостеру, что твоя программулина не вредоносная)
  • Slym © (21.03.08 10:57) [8]
    mrfreeman2007   (21.03.08 6:06) [6]
    чтоб значение счетчика выводилось на странице

    второй вариант аналогичен первому за исключением рисования счетчика... народ.ру не принимает cgi
  • palva © (23.03.08 21:34) [9]
    Народ предоставляет собственный скрипт для ведения счетчика. Нужно зайти в список своих файлов, выбрать файл и нажать "свойства". Откроется окно, где можно выбрать дизайн видимость счетчика и т. д.
  • piople © (24.03.08 11:12) [10]
    Если ты кодишь на делфи это у тебя либо ISAPI, либо CGI. Чтобы работало то или то надо хост с поддержкой IIS. Чтобы был хост с поддержкой IIS тебе надо чтобы он был на винде. А поскольку хост на винде огого какой дорогой, не парься и дуй на *nix бесплатный хостинг, а так у них еще и свои движки для сайтов существуют и со счетчиками и т.д.
 
Конференция "Сети" » Счетчик посещений [D5, WinXP]
Есть новые Нет новых   [134431   +15][b:0][p:0]