![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Счетчик посещений [D5, WinXP]
mrfreeman2007 © (2008-03-20 08:43:00)Здравствуйте!
Подскажите, как сделать счетчик посещений для Веб-страницы?
В журнале нарыл такой код:
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'
Скрипт не выполняется ни разу.
Подскажите, в чем ошибка?
piople (2008-03-24 11:12:00) [1]Если ты кодишь на делфи это у тебя либо ISAPI, либо CGI. Чтобы работало то или то надо хост с поддержкой IIS. Чтобы был хост с поддержкой IIS тебе надо чтобы он был на винде. А поскольку хост на винде огого какой дорогой, не парься и дуй на *nix бесплатный хостинг, а так у них еще и свои движки для сайтов существуют и со счетчиками и т.д.
palva (2008-03-23 21:34:00) [2]Народ предоставляет собственный скрипт для ведения счетчика. Нужно зайти в список своих файлов, выбрать файл и нажать "свойства". Откроется окно, где можно выбрать дизайн видимость счетчика и т. д.
Slym (2008-03-21 10:57:00) [3]mrfreeman2007 (21.03.08 6:06) [6]
чтоб значение счетчика выводилось на странице
второй вариант аналогичен первому за исключением рисования счетчика... народ.ру не принимает cgi
Сергей М. (2008-03-21 08:23:00) [4]
> mrfreeman2007 (21.03.08 06:06) [6]
Ты не понял.
Скрипт, использующий твою программулину, не будет работать на Народе хотя бы потому, что хостер в здравом уме не позволит разместить у себя на сервере твой исполняемый файл.
Ты же не поклялся хостеру, что твоя программулина не вредоносная)
mrfreeman2007 (2008-03-21 06:06:00) [5]Первый вариант приемлемей. Нашел на Яндексе такой код:
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 и смотрим. Но проблема: мне надо, чтоб значение счетчика выводилось на странице.
Сергей М. (2008-03-20 12:35:00) [6]Вариантов у тебя не шибко много:
1. Использовать любой другой скрипт, который будет работать на Narod'е.
2. Использовать этот скрипт там, где он будет работать.
mrfreeman2007 (2008-03-20 12:19:00) [7]А как мне тогда это дело сделать? Позарез надо!
Сергей М. (2008-03-20 11:11:00) [8]Не будет
mrfreeman2007 (2008-03-20 10:31:00) [9]Сервака нет... А если я размещу его на Narod'е, он будет работать?
Slym (2008-03-20 10:07:00) [10]Скрипт выполняется на сервере... У тебя есть настроенный сервер?