Php “尤里卡洛”;HTTP上载";:如何发送程序名?
在几个Delphi XE2项目中,我设置了Eurekalog,通过“HTTP上传”发送错误报告,效果很好,因为我使用PHP脚本捕获错误报告,将其保存在目录中,并通过电子邮件发送给我: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
<?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解决方案,因为两者相互作用。“暗示”是指一个外部主题可以被包含而不被明确提及。-顺便说一句,我已经重新措辞了这个问题,所以请删除否决票。再次,我看到很多不合理的因素在起作用。。。