首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PHP中通过电子邮件发送整个请求

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

Stack Overflow用户
提问于 2018-06-11 04:46:16
回答 1查看 141关注 0票数 -1

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

邮箱请求php:

代码语言:javascript
复制
<?php

$remoteIp = $_SERVER['REMOTE_ADDR'];
$remoteHost = $_SERVER['HTTP_HOST'];
$remoteRef = $_SERVER['HTTP_REFERER'];
$remoteUrl = $_SERVER['REQUEST_URI'];
$userAgent = $_SERVER['HTTP_USER_AGENT'];
$yourEmailAddress = "user@mail.com";
$emailSubject = "New request from: ".$remoteIp;

$emailContent = "The URL Request was made to: $remoteUrl 
The request REFERER was: $remoteRef
The IP was $remoteIp
The User Agent was: $userAgent";

// send the message
mail($yourEmailAddress, $emailSubject, $emailContent);
?>

我喜欢将Entire http request (GET或POST)添加到已发送的电子邮件中,因此$emailContent如下所示:

代码语言:javascript
复制
    $emailContent = "The URL Request was made to: $remoteUrl 
    The request REFERER was: $remoteRef
    The IP was $remoteIp
    The User Agent was: $userAgent"
    The Full request was: 
    $fullrequest";

环顾四周,我发现了这个https://gist.github.com/magnetikonline/650e30e485c0f91f2f40,它可以让你创建文件,但我不确定如何将它与我的PHP放在一起,所以它给我发了一封带有请求的电子邮件。(不需要创建文件)

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

代码语言:javascript
复制
<?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');

有人能帮我把class DumpHTTPRequestToFile添加到$fullrequest

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-11 04:59:09

就像这样

代码语言:javascript
复制
<?php

$message="The following request was made:\n";

foreach($_REQUEST as $k=>$v){

$message.=$k." : ".$v."\n\n";

}

mail($to_address, $subject, $message, $headers);

?>

$_REQUEST替换为您选择的超级全局。或者,如果$_REQUEST中没有您想要的所有内容,那么可以在多个超全局变量($_SERVER等)上运行类似的循环。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50787897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档