Php “尤里卡洛”;HTTP上载";:如何发送程序名?

Php “尤里卡洛”;HTTP上载";:如何发送程序名?,php,delphi,eurekalog,Php,Delphi,Eurekalog,在几个Delphi XE2项目中,我设置了Eurekalog,通过“HTTP上传”发送错误报告,效果很好,因为我使用PHP脚本捕获错误报告,将其保存在目录中,并通过电子邮件发送给我: <?php require 'PHPMailerAutoload.php'; foreach ($_FILES as $key => $value) { $uploaded_file = $_FILES[$key]['tmp_name']; $server_dir = 'upload

在几个Delphi XE2项目中,我设置了Eurekalog,通过“HTTP上传”发送错误报告,效果很好,因为我使用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('auserofmyprogram@usersofmyprogram.com',
                             'A User of my program',
                             'Eurekalog Bug Report',
                             'This is a bug report from Eurekalog.',
                             'eurekalog.bugreport@mysite.com',
                             $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,您可以使用web字段。EurekaLog具有事件处理程序,允许您更改任何基于web的发送方法的web字段(例如HTTP上载、带有HTTP API的错误跟踪器等)

将此类事件分配给Handler:

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,它将是$\u REQUEST[“Application”]或$\u POST[“Application”]

对于这个特定任务,您还可以使用它来更改用于发送的文件名。您对AFileType=ftZIP(如果要发送打包的.elp报告)或AFileType=ftBugReport(如果要发送未打包的.el报告)感兴趣。

这个问题与Delphi无关,因为它只涉及PHP。我正在删除Delphi标签。请使用实际适用于您的问题的标签;外部应用程序是用一种语言编写的,这并不意味着该语言适用于您的PHP脚本。如果您想问一个关于如何更改Delphi代码以将应用程序名称添加到EurekaLog异常报告的问题,请这样做。拜托,这是非常不合理的!这个问题并不意味着可能的解决方案可以是对PHP代码的补充,也不意味着可能的解决方案可以在Delphi代码中实现。如果我知道解决方案是来自Delphi还是PHP代码,我不会在这里问这个问题。请逻辑思考!顺便说一句,谁否决了我的问题?这是一个完全合理的问题,应该得到分数,因为在Eurekalog中使用“HTTP上载”选项时,这是一个常见问题。对这个问题的恰当回答将帮助很多人使用Eurekalog。不,这不是要求只使用PHP的解决方案,因为可能的解决方案也可以从Delphi实现中派生出来,并可以使用PHP中的PHP解决问题。这就是所谓的互操作性,不幸的是,这一主题在Delphi中被低估了:当两种编程语言协同工作时,您无法在它们之间进行明显的分离,这就是Eurekalog使用Delphi代码操作并与PHP代码交互的情况。再次强调:这是Eurekalog中“HTTP上传”选项的一个真正问题。一个解决方案可以帮助很多用户。一个描述PHP的问题,包括PHP代码,并在本例中要求一个PHP解决方案,可能意味着一个Delphi解决方案,因为两者相互作用。“暗示”是指一个外部主题可以被包含而不被明确提及。-顺便说一句,我已经重新措辞了这个问题,所以请删除否决票。再次,我看到很多不合理的因素在起作用。。。