如何在PHP中通过电子邮件发送整个请求

如何在PHP中通过电子邮件发送整个请求,php,Php,我正在尝试创建一个php,通过电子邮件发送有关请求的所有可能信息。目前,我正在使用类似于: 电子邮件请求php: 环顾四周,我发现这允许您创建文件,但我不知道如何把它与我的PHP一起,所以它向我发送了一封请求电子邮件。(不需要创建文件) 这个PHP我喜欢集成到我的电子邮件请求PHP中 <?php // https://gist.github.com/magnetikonline/650e30e485c0f91f2f40 class DumpHTTPRequestToFile { p

我正在尝试创建一个php,通过电子邮件发送有关请求的所有可能信息。目前,我正在使用类似于:

电子邮件请求php: 环顾四周,我发现这允许您创建文件,但我不知道如何把它与我的PHP一起,所以它向我发送了一封请求电子邮件。(不需要创建文件)

这个PHP我喜欢集成到我的电子邮件请求PHP中

<?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);

?>