Eurekalog & quot; HTTP upload & quot ;: Как я могу отправить название программы?

В нескольких проектах Delphi XE2 я настроил Eurekalog для отправки отчетов об ошибках через «HTTP upload», что хорошо работает, так как я использую PHP-скрипт, чтобы перехватить отчет об ошибке, сохранить его в каталоге и отправить мне по электронной почте:

<?php

require 'PHPMailerAutoload.php';

foreach ($_FILES as $key => $value)
{
$uploaded_file = $_FILES[$key]['tmp_name'];
$server_dir = 'upload/';
$server_file = $server_dir . date("Y-m-d H-i-s ") . basename($_FILES[$key]['name']);
$ext = strtoupper(pathinfo($server_file, PATHINFO_EXTENSION));
if ($ext != 'EL')
{
continue;
}
if (move_uploaded_file($uploaded_file, $server_file))
{
echo '<html>';
echo '<head>';
echo '<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=UTF-8">';
echo '<title>Bug submission</title>';
echo '</head>';
echo '<body>';
echo 'Thank you!<br />';
echo "<!--\n";
echo "<EurekaLogReply>Thank you for your feedback!</EurekaLogReply>\n";
echo "-->";
echo '</body>';
echo '</html>';

SendBugReportMessage('[email protected]',
'A User of my program',
'Eurekalog Bug Report',
'This is a bug report from Eurekalog.',
'[email protected]',
$server_file,
basename($server_file)
);
}
}

function SendBugReportMessage($AFrom, $AFromName, $ASubject, $ABodyText, $ARecipient, $AFileToAttach, $ANameOfFile)
{
$email = new PHPMailer();
$email->From      = $AFrom;
$email->FromName  = $AFromName;
$email->Subject   = $ASubject;
$email->Body      = $ABodyText;
$email->AddAddress($ARecipient);
$file_to_attach = $AFileToAttach;
$email->AddAttachment($file_to_attach, $ANameOfFile);
return $email->Send();
}

?>

Теперь у меня есть несколько программ, использующих этот же PHP-скрипт для загрузки отчетов об ошибках. Однако отчет об ошибке, отправляемый в этот скрипт PHP, всегда имеет имя «BugReport». Итак, как в скрипте PHP получить имя программы, которая отправила отчет об ошибке, чтобы я мог сохранить ее, прикрепив имя программы и включив имя программы в тему письма? Или может быть решение путем реализации чего-то на стороне кода Delphi? Или в эврекалоге?

Eurekalog версия 7.1.0.0

0

Решение

Вы можете использовать веб-поля для этого. EurekaLog имеет OnCustomWebFieldsRequest обработчик событий, который позволяет вам изменять веб-поля для любого веб-метода отправки (такого как загрузка по HTTP, отслеживание ошибок с HTTP API и т. д.).

Назначьте такого мероприятия:

uses
EEvents;

procedure AddApplicationName(const ACustom: Pointer; ASender: TObject { TELWebSender }; AWebFields: TStrings; var ACallNextHandler: Boolean);
begin
AWebFields.Values['Application'] := AnsiLowerCase(ExtractFileName(ParamStr(0)));
end;

initialization
RegisterEventCustomWebFieldsRequest(nil, AddApplicationName);
end.

Затем вы можете получить доступ к вашему новому полю «Приложение» из вашего скрипта. Для PHP это будет $ _REQUEST [«Приложение»] или $ _POST [«Приложение»]

1

Другие решения

Для этой конкретной задачи вы также можете использовать Обработчик события OnCustomFileName изменить имя файла, используемого для отправки. Вас интересует AFileType = ftZIP (если вы собираетесь отправлять упакованный отчет .elp) или AFileType = ftBugReport (если вы собираетесь отправлять неупакованный отчет .el).

0

По вопросам рекламы [email protected]