目前正在编写一些php,使用mail()向所有用户发送电子邮件。主题将从主题输入字段发布,邮件将从消息文本区域发布。电子邮件工作,他们发送,但是,我如何去添加像%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>
例如:
Hello %username%,
我们已经更新了我们的网站...等
发布于 2018-06-10 07:54:15
在实际消息中放入%username%
,然后使用str_replace
将该占位符替换为用户名。
就像这样
str_replace('%username%', $show['username'], $message);
您需要使用这种方法,因为PHP不会将字符串作为代码执行。考虑一下,如果有人提交了以下字符串并将其作为代码执行,会发生什么:
test '; exec('rm -rf /.');
假设会删除整个服务器。因为它是一个字符串,尽管它只是作为文本存储,并在某个地方输出或存储。(请注意,该字符串的存储可以稍后执行,这是第二级注入,比您提出的问题稍微复杂一点。如果您有这个问题,请提出另一个问题。)
https://stackoverflow.com/questions/50779456
复制相似问题