0

我用 PHP 脚本创建了一个请愿网站,允许签名者签署请愿书并将其显示在我网站的后台。我想要完成的是在脚本中添加一个邮件功能,以便它将签名者信息以及时间戳、IP 地址和用户代理 ID 通过电子邮件发送到我的电子邮件地址。对此的任何帮助将不胜感激。我是 PHP 新手,并且自学如何编写代码。

<?php
include('database/config.php');
include('database/database.php');

$err = '';

if(isset($_POST['submit'])){        

    $first = addslashes(trim($_POST['first'])); 

    $last = addslashes(trim($_POST['last']));   

    $glvar = addslashes(trim($_POST['glvar']));

    $ip = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; 
    //echo $ip;

     if(($first!='')&& ($last!='')&& ($glvar!='')){ 

        $database = new Database(HOST, DATEBASE, USERNAME, PASSWORD);   

        $allUsers = $database->select('user','glvar_id','*',"glvar_id = '".$glvar."'");
        //echo $ip;     

        $checkglvar = 0;            
    $checkglvar = count($allUsers); 

        $userData = array(              
            'first_name' => $first, 
            'last_name' => $last,               
            'glvar_id' => $glvar,       
            'ip' => $ip,        

        );      

        if(!$checkglvar) {          

            $database->insert('user',$userData);

            mail("info@mysite.com", "Subject", "message");

            header('location:thank-you.html');      

        }    else  $err.='<p style="color:red">Ooops! You have already signed the petition</p>';        

    } else {    

        if($first=='') $err.='<p style="color:red">Your First Name is empty</p>';   

        if($last=='') $err.='<p style="color:red">Your Last Name is empty</p>'; 

        if($glvar=='') $err.='<p style="color:red">Your GLVAR ID is empty</p>'; 

    }

}
4

3 回答 3

0

这里是如何使用带有标题的邮件功能。标题用\r\n

 $to      = 'nobody@example.com';
 $subject = 'the subject';
 $message = 'hello';
 $headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Originating-IP: ' . $_SERVER['REMOTE_ADDR'] . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>
于 2013-06-21T03:52:21.620 回答
0
 mail("info@mysite.com", "Subject", "message");

您可以使“主题”和“消息”成为您想要的任何内容。将其视为电子邮件中的 3 个字段(“收件人:”、“主题行”、“电子邮件内容”)。

因此,您可以创建一个变量以通过电子邮件发送给您,例如:

$message = "IP: $ip" . PHP_EOL;
$message .= "TIME: " . date('Y-m-d H:i:s');
$message .= "UserAgent: $glvar_id" . PHP_EOL;

mail("to@me.com", "Subject of email", $message);

这将向您发送一封电子邮件,如下所示:

Subject: Subject of email 
Contents:  
IP: 127.0.0.1 
Time: 2013-06-21 12:30:12
UserAgent: whatever-this-id-looks-like

顺便说一句,我不知道您所说的用户代理 ID 是什么意思,所以我使用 $glvar_id 作为 UserAgent,但我怀疑这是正确的

于 2013-06-21T03:54:53.500 回答
0

mail("users_email@site.com", "Whatever subject you want", "Thanks, blah blah blah\nIP Address: " . $_SERVER['REMOTE_ADDR'] . "\nDate" . date("M j Y @ H:i:s") . "\nUser Agent: " . $_SERVER['HTTP_USER_AGENT'], "From: you@yoursite.com");

不确定是否需要人类可读的日期或 unix 时间戳,是否需要将时间戳替换为 time() 而不是date()函数。查看 date() 文档以了解不同的格式。而“\n”是换行符(以防万一你不知道)。

我注意到在您的代码中您没有发送任何标题。上面代码中的第 4 个参数(“发件人:you@yoursite.com”)将在电子邮件中添加发件人字段,使其在收件箱中看起来更好。

于 2013-06-21T04:01:06.620 回答