如何在PHP中通过电子邮件发送整个请求
我正在尝试创建一个php,通过电子邮件发送有关请求的所有可能信息。目前,我正在使用类似于: 电子邮件请求php: 环顾四周,我发现这允许您创建文件,但我不知道如何把它与我的PHP一起,所以它向我发送了一封请求电子邮件。(不需要创建文件) 这个PHP我喜欢集成到我的电子邮件请求PHP中如何在PHP中通过电子邮件发送整个请求,php,Php,我正在尝试创建一个php,通过电子邮件发送有关请求的所有可能信息。目前,我正在使用类似于: 电子邮件请求php: 环顾四周,我发现这允许您创建文件,但我不知道如何把它与我的PHP一起,所以它向我发送了一封请求电子邮件。(不需要创建文件) 这个PHP我喜欢集成到我的电子邮件请求PHP中 <?php // https://gist.github.com/magnetikonline/650e30e485c0f91f2f40 class DumpHTTPRequestToFile { p
<?php
// https://gist.github.com/magnetikonline/650e30e485c0f91f2f40
class DumpHTTPRequestToFile {
public function execute($targetFile) {
$data = sprintf(
"%s %s %s\n\nHTTP headers:\n",
$_SERVER['REQUEST_METHOD'],
$_SERVER['REQUEST_URI'],
$_SERVER['SERVER_PROTOCOL']
);
foreach ($this->getHeaderList() as $name => $value) {
$data .= $name . ': ' . $value . "\n";
}
$data .= "\nRequest body:\n";
file_put_contents(
$targetFile,
$data . file_get_contents('php://input') . "\n"
);
echo("Done!\n\n");
}
private function getHeaderList() {
$headerList = [];
foreach ($_SERVER as $name => $value) {
if (preg_match('/^HTTP_/',$name)) {
// convert HTTP_HEADER_NAME to Header-Name
$name = strtr(substr($name,5),'_',' ');
$name = ucwords(strtolower($name));
$name = strtr($name,' ','-');
// add to list
$headerList[$name] = $value;
}
}
return $headerList;
}
}
(new DumpHTTPRequestToFile)->execute('./dumprequest.txt');
类似
<?php
$message="The following request was made:\n";
foreach($_REQUEST as $k=>$v){
$message.=$k." : ".$v."\n\n";
}
mail($to_address, $subject, $message, $headers);
?>
将$\u请求
替换为您选择的超级全局。或者,如果$\u REQUEST
中没有您想要的内容,则在多个超全局($\u SERVER
等)上运行类似的循环。可能更容易将感兴趣的内容转储到邮件中,例如打印?这不会很漂亮,但会更容易获得所有信息。Hello@fvu,你能生成一个示例吗?我经常这样做:$string\u to\u send=print\r($\u SERVER,1)
smith和Ivan提出的建议都展示了我建议的实际实施。感谢@smith,我想知道如何将$string\u添加到发送=print\r($\u服务器,1)
到我的php?很好的一个@Ivan我怎样才能将它集成到我的php中,这样完整的请求就在电子邮件的末尾?@pancho-差不多就是这样。您可以看到我在哪里初始化/定义$message
,以及它如何附加到foreach
循环中,只需在调用mail()
函数之前将其粘贴到代码中即可。
<?php
// https://gist.github.com/magnetikonline/650e30e485c0f91f2f40
class DumpHTTPRequestToFile {
public function execute($targetFile) {
$data = sprintf(
"%s %s %s\n\nHTTP headers:\n",
$_SERVER['REQUEST_METHOD'],
$_SERVER['REQUEST_URI'],
$_SERVER['SERVER_PROTOCOL']
);
foreach ($this->getHeaderList() as $name => $value) {
$data .= $name . ': ' . $value . "\n";
}
$data .= "\nRequest body:\n";
file_put_contents(
$targetFile,
$data . file_get_contents('php://input') . "\n"
);
echo("Done!\n\n");
}
private function getHeaderList() {
$headerList = [];
foreach ($_SERVER as $name => $value) {
if (preg_match('/^HTTP_/',$name)) {
// convert HTTP_HEADER_NAME to Header-Name
$name = strtr(substr($name,5),'_',' ');
$name = ucwords(strtolower($name));
$name = strtr($name,' ','-');
// add to list
$headerList[$name] = $value;
}
}
return $headerList;
}
}
(new DumpHTTPRequestToFile)->execute('./dumprequest.txt');
<?php
$message="The following request was made:\n";
foreach($_REQUEST as $k=>$v){
$message.=$k." : ".$v."\n\n";
}
mail($to_address, $subject, $message, $headers);
?>