В версии PHPBB 2.xx все было ОК. Но с переходом на версию 3, не удается это сделать.
Подскажите, как можно это осуществить.
Делал раньше вот так:
Код: Выделить всё
procedure TfrmNewMail.doforumClick;
//отсылка сообщения на форум
function enc(s: string): string;
var
i: integer;
r: string;
begin
r := '';
for i := 1 to length(s) do
begin
if (s[i] in ['0'..'9','a'..'z','A'..'Z','_','-']) then
r := r + s[i]
else if s[i] = ' ' then
r := r + '+'
else
r := r + '%' + inttohex(ord(s[i]),2);
end;
enc := r;
end;
var
r,s,sid: string;
begin
try
s := 'login=login&username='+enc('ЛОГИН')+'&password='+enc('ПАРОЛЬ');
cl.Connect();
cl.WriteLn('POST /login.php HTTP/1.1');
cl.WriteLn('Host: host.ru');
cl.WriteLn('Content-Type: application/x-www-form-urlencoded');
cl.WriteLn('Content-Length: '+IntToStr(length(s)));
cl.WriteLn();
cl.Write(s);
sid := '';
while cl.Connected do
begin
r := cl.ReadLn;
if (Copy(r,1,28) = 'Set-Cookie: phpbb2mysql_sid=') then
begin
sid := copy(r,29,32);
end;
if (r = '') then
cl.Disconnect;
end;
s := 'subject='+enc(edSubject.Text)+'&';
s := s + 'addbbcode18=%23444444&addbbcode20=12&helpbox=%CD%E0%EA%EB%EE%ED%ED%FB%E9+%F2%E5%EA%F1%F2%3A+%5Bi%5D%F2%E5%EA%F1%F2%5B%2Fi%5D++%28alt%2Bi%29&';
s := s + 'message='+enc('Создано оповещение для:')+'%0D%0A';
if frmEditTarget.mdTarget.RecordCount >0 THEN
frmEditTarget.mdTarget.First;
while not frmEditTarget.mdTarget.Eof do
begin
s := s + enc(frmEditTarget.mdTargetText.Value) + '%0D%0A';
frmEditTarget.mdTarget.Next
end;
s := s + '%0D%0A' + enc('Сообщение в статистике:') + '%0D%0A';
s := s + enc(edStat.Text);
s := s + '%0D%0A' + enc('[b]Оповещение создал '+ps.DataBase.UserName+'[/b]')+'&';
s := s + 'mode=reply&';
s := s + 't=4120&';
s := s + 'post=%CE%F2%EF%F0%E0%E2%E8%F2%FC&';
s := s + 'sid='+sid;
cl.Connect();
cl.WriteLn('POST /posting.php HTTP/1.1');
cl.WriteLn('User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2) Opera 7.54u1 [en]');
cl.WriteLn('Host: host.ru');
cl.WriteLn('Cookie: phpbb2mysql_sid='+sid);
cl.WriteLn('Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1');
cl.WriteLn('Accept-Language: en');
cl.WriteLn('Accept-Charset: windows-1251, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1');
cl.WriteLn('Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0');
cl.WriteLn('Content-Type: application/x-www-form-urlencoded');
cl.WriteLn('Content-Length: '+inttostr(length(s)));
cl.WriteLn();
cl.Write(s);
if cl.Connected then
begin
r := cl.ReadLn;
if (r <> 'HTTP/1.1 200 OK') then ShowMessage('Внимание! Не удалось добавить сообщение в форум.');
end
else
ShowMessage('Внимание! Не удалось добавить сообщение в форум.');
except
on E: Exception do
dm.ShowError(err_unknown,E.message);
end;
end;

