Текущий архив: 2003.04.14;
Скачать: CL | DM;
ВнизДружда cgi и делфи Найти похожие ветки
← →
_MAD_ (2003-02-15 23:19) [0]как писать cgi приложения на делфи и как можно использовать в них процедуры циклы и все то что можно использовать в простых приложениях.
← →
Anatoly Podgoretsky (2003-02-15 23:31) [1]Абсолютно точно также, нет никоакой разницы
← →
panov (2003-02-15 23:36) [2]Пиши консольное приложение... Это и будет CGI.
А в нем можешь писать все, что хочешь...
← →
_MAD_ (2003-02-17 18:35) [3]в том то и дело я пишу в консоле все работает а вот когда запускаю с сервера не работает:
вот код может что не так?
program Counter;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
F: TextFile;
S: string;
i:integer;
begin
{$I-}
AssignFile(F, "counter.log");
Reset(F);
Readln(F, S);
CloseFile(F);
erase(F);
{$I+}
i:=strtoint(S);
inc(i);
S:=inttostr(i);
writeln("<h1>"+s+"</h1>");
{$I-}
AssignFile(F, "counter.log");
rewrite(F);
writeln(F,S);
CloseFile(F);
{$I+}
end.
← →
panov (2003-02-17 18:42) [4]Вот пример:
Здесь используются функции, которые описаны в другом модуле, не обращай внимания на них.
program getpasswd;
{$APPTYPE CONSOLE}
{$E cgi}
uses
classes,
shellapi,
sysutils,
messages,
windows,
proc in "..\proc\proc.pas";
const
CR = CHR(13)+CHR(10);
HEADER = "Content-type: text/html"+CR+CR+
"<html><head><title>Dymamic HTML page</title>"+
"</head><body bgcolor="#ffffff">"+CR+
" <hr>"+
"<center><font color=#0000ff>Филиал "Екатеринбургский" ОАО "Импэксбанк"</font> </center>"+
"<hr>";
FOOTER = "</body></html>";
var
str,aUser,aPasswd: String;
StdIn,Size,Actual: Cardinal;
F: TextFile;
rand: Integer;
FileName: String;
isTrue: Boolean;
s: String;
i: Integer;
begin
isTrue := False;
Randomize;
StdIn := GetStdHandle(STD_INPUT_HANDLE);
Size := SetFilePointer(StdIn,0,nil,FILE_END);
SetFilePointer(StdIn,0,nil,FILE_BEGIN);
SetLength(str,Size);
if Size>0 then
begin
ReadFile(StdIn,Str[1],Size,Actual,nil);
end;
aPasswd := ParamByName(Str,"passwd");
aUser := ParamByName(Str,"username");
Rand := Random(99999999);
FileName := "data\qout\"+ IntToStr(rand);
AssignFile(F,FileName);
ReWrite(F);
WriteLn(F,"name=getpasswd.cgi");
WriteLn(F,"username="+aUser);
WriteLn(F,"Password="+aPasswd);
WriteLn(F,"sid="+IntToStr(rand));
CloseFile(F);
FileName := "data\qin\"+ IntToStr(rand);
while not FileExists(FileName) do
begin
for i := 0 to 100 do
begin
if FileExists(FileName) then Break;
Sleep(100);
end;
Break;
end;
if FileExists(FileName) then
begin
WaitFile(F,FileName);
AssignFile(F,FileName);
Reset(F);
ReadLn(F,s);
CloseFile(F);
DeleteFile(PChar(FileName));
end
else
begin
WriteLn(HEADER);
WriteLn("<center><h1>Извините,<br></h1>");
WriteLn("<center><h1>сервер авторизации недоступен!<br>Зайдите в другое время</h1>");
WriteLn(FOOTER);
FileName := "data\qout\"+ IntToStr(rand);
DeleteFile(PChar(FileName));
Exit;
end;
if s="True" then isTrue := True;
WriteLn(HEADER);
if not isTrue
then
begin
WriteLn("<h1>Пароль введен неверно!</h1>");
WriteLn(FOOTER);
Exit;
end;
WriteLn("<form method="post" action="/cgi-bin/menumain.cgi">");
WriteLn("<SELECT NAME=groupwork>");
WriteLn("<OPTION>Работа с загруженными файлами");
WriteLn("<OPTION>SYMBOLS");
WriteLn("<OPTION>Администрирование");
WriteLn("</SELECT>");
WriteLn("<input type="hidden" name="sid" value=""+
IntToStr(rand)+"">");
WriteLn("<input type="submit" value="Ok">");
WriteLn("</FORM>");
WriteLn(FOOTER);
end.
← →
_MAD_ (2003-02-17 21:55) [5]panov
я не понял что именно ты имеешь ввиду
как я понял ты предлагаешь мне описать функцию в отдельном модуле а потом вызывать ее из программы?
← →
panov (2003-02-17 22:00) [6]да можешь в этом же модуле описывать свои функции, разницы-то нет никакой...
← →
_MAD_ (2003-02-17 22:12) [7]а что делать с ошибкой сервера?
← →
panov (2003-02-17 22:25) [8]CGI должно возвращать HTML-страничку
WriteLn(HEADER);
...
WriteLn(FOOTER);
← →
_MAD_ (2003-02-18 19:38) [9]понятно так выходет что хеадер это начало сгй скрипта а футер конец?
← →
_MAD_ (2003-02-18 23:02) [10]да кстати делфа не хочет компайлить WriteLn(HEADER);
WriteLn(FOOTER); говорит что header должен быть определен как переменная
← →
_MAD_ (2003-02-20 14:45) [11]помогите пожалуйста мне это очень важно
← →
Карелин Артем (2003-02-20 15:00) [12]Права на запись в каталог установлены?
← →
DVM (2003-02-20 19:06) [13]1. Сервер правильно настроен? В конфиге сервера правильно описано, что сервер должен делать при обращении к *.exe файлу?
2. Права доступа. По умолчанию программа на сервере запускается от имени непривелигированного пользователя, который вообще писать на диск нисего не может. Проверь права. Можно на вин98 сервер проинсталлить и попробовать, там прав никаких не проверяется.
← →
_MAD_ (2003-02-21 14:37) [14]да я просто апачу с интерпретаторами поставил на win98 но не работает а что за конфиг и обращения с *.exe файлами?
← →
NikolaB (2003-02-21 18:31) [15]U menia Abuss Web server, no problema odinakava: i na console i na PageProducer i WebModule. Eto moia pervaia popitka i ochen ne legko naiti stho ne postroeno (config) u servere (u Delphi dumai vse sdelal.
← →
NikolaB (2003-02-21 23:45) [16]Pochemu li moi Web server vidaet oshibka
>>> HTTP 500 - Internal server error
>>> Internet Explorer
na konsolnoe prilojenie:
program CgiDate;
{$APPTYPE CONSOLE}
uses
SysUtils,
UtilsFiles in "..\..\..\..\..\..\..\@Utils\@My\UtilsFiles.pas",
UtilsStr in "..\..\..\..\..\..\..\@Utils\@My\UtilsStr.pas";
begin
writeln ("<HTML><HEAD>");
writeln ("<TITLE>Time at this site</TITLE>");
writeln ("</HEAD><BODY>");
writeln ("<H1>Time at this site</H1>");
write ("</BODY></HTML>");
end.
Страницы: 1 вся ветка
Текущий архив: 2003.04.14;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.007 c