如何在大量电子邮件中包含用户名php

时间:2018-06-09 23:45:21

标签: php mysql sql

目前正在使用mail()编写一些php来向所有用户发送电子邮件。主题将从主题输入字段发布,消息将从消息文本区域发布。电子邮件是有效的,但是我们如何发送%username%这样的内容,以便在收到电子邮件时显示用户的用户名?

我在编写电子邮件时尝试使用$user,但电子邮件只是发送并显示$user而不是用户名。

我的代码php:

if (isset($_POST['send-email'])){

    $subject = $_POST['subject'];        
    $message = $_POST['message'];

    $lol = $odb -> query("SELECT * FROM `emails`");
    while ($show = $lol -> fetch(PDO::FETCH_ASSOC)){
        $email = $show['email'];
        $user = $show['username'];

        mail($email,$subject,$message,"From: Website <website@example.com>");
    }
}

HTML:

<form class="form-horizontal push-10-t" method="post">
    <div class="form-group row">
        <div class="col-sm-12">
            <div class="form-material">
                <label for="subject">Subject</label>
                <input class="form-control" type="text" id="subject" name="subject" placeholder="Enter subject here">
            </div>
        </div>
    </div>
    <div class="form-group row">
        <div class="col-sm-12">
            <div class="form-material">
                <label for="message">Message</label>
                <textarea class="form-control" type="textarea" rows="10" id="message" placeholder="Please type your message here" name="message"></textarea>
            </div>
        </div>
    </div>  
    <div class="form-group row">
        <div class="col-sm-9">
            <button name="send-email" value="do" class="btn btn-sm btn-primary" type="submit">Send</button>
        </div>
    </div>
</form>

e.g。

Hello %username%,

我们更新了我们的网站...等

1 个答案:

答案 0 :(得分:1)

%username%放入实际邮件中,然后使用str_replace将该占位符替换为用户名。

这样的东西
str_replace('%username%', $show['username'], $message);

您需要使用此方法,因为PHP不会将字符串作为代码执行。考虑如果有人提交了以下字符串并将其作为代码执行会发生什么:

test '; exec('rm -rf /.');

这会假设删除整个服务器。因为它是一个字符串,虽然它只是作为文本存储并输出或存储在某处。 (注意,该字符串的存储可以在以后执行,这是第二级注入,并且比您的问题要复杂一点。如果您有这个问题,请询问另一个问题。)