Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
1-44209
Dimosha
2003-04-01 17:51
2003.04.14
ShellExecute or WinExec


3-44018
ManYury
2003-03-25 12:59
2003.04.14
IB5.5 и хранимая процедура


14-44352
Uristemova Gulden
2003-03-31 10:27
2003.04.14
программы на Delphi


1-44224
X-Man
2003-03-31 21:55
2003.04.14
Поля печати в RichEdit


14-44371
Yegor Derevenets
2003-03-26 20:31
2003.04.14
Последние N строк файла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский