PHP:一旦我在我的网站上发布了一些东西,就会自动发送一封群发邮件

PHP:一旦我在我的网站上发布了一些东西,就会自动发送一封群发邮件,php,mysql,database,email,Php,Mysql,Database,Email,我有一个功能,比如说一个“管理员”可以将内容发布到我的网站,供普通用户查看。完成后,我希望能够向在我的网站上注册的任何人发送电子邮件(我将这些邮件存储在“用户”数据库的字段中)。我正在使用XAMMP和MySQL,但很快就会在一个实时主机上注册 我听说使用PHPMailer将是最好的,但是我的网站一次最多有120个用户,因此如果我可以循环浏览我数据库中的记录,每次调用电子邮件功能并发送到该地址,那就太好了。我是新来的PHP和建立这个网站使用在线教程的大部分,但这真的让我难堪 我有一个联系方式,用户

我有一个功能,比如说一个“管理员”可以将内容发布到我的网站,供普通用户查看。完成后,我希望能够向在我的网站上注册的任何人发送电子邮件(我将这些邮件存储在“用户”数据库的字段中)。我正在使用XAMMP和MySQL,但很快就会在一个实时主机上注册

我听说使用PHPMailer将是最好的,但是我的网站一次最多有120个用户,因此如果我可以循环浏览我数据库中的记录,每次调用电子邮件功能并发送到该地址,那就太好了。我是新来的PHP和建立这个网站使用在线教程的大部分,但这真的让我难堪

我有一个联系方式,用户可以联系我,但我不知道如何处理我的上述问题

<?php
$to = 'davidforde1991@gmail.com';
$subject = 'PLACEMENT_PARTNER_CONTACT';

$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];

$message = <<<EMAIL

HI! My name is $name.

$message

From $name
Oh ya, my email is $email

EMAIL;

$header = '$email';

if($_POST){
mail($to, $subject, $message, $header);
$feedback = 'Thanks for contacting PSquared! We will be in contact soon!';
}

?>

<form action="?" method="post">
        <ul>
            <li>
                <label for="name">Name:</label>
                <input type="text" name="name" id="name" />
            </li>
            <li>
                <label for="email">Email:</label>
                <input type="text" name="email" id="email" />
            </li>
            <li>
                <label for="topic">Topic:</label>
                <select id = "topic">
                    <option value="Ponies">Ponies</option>
                    <option value="Mexicans">Mexicans</option>
                    <option value="Weiner">Weiner</option>
                </select>
            </li>
            <li>
                <label for="message">Message:</label>
                <textarea id="message" name="message" cols="42" rows="9"></textarea>
            </li>
            <li><input type="submit" value="Submit"></li>
        </ul>
    </form>

  • 姓名:
  • 电邮:
  • 主题: 小马 墨西哥人 韦纳
  • 信息:
我知道上面的代码是不相关的,但我已经准备好了代码,可以在数据库中的字段中循环,如果这有帮助的话

   <?php
   // Connects to the Database
   mysql_connect("localhost", "root", "") or die(mysql_error());
   mysql_select_db("users_db") or die(mysql_error());

//checks cookies to make sure they are logged in
    if(isset($_COOKIE['username']))
    {
    $username = $_COOKIE['username'];
    $pass = $_COOKIE['pass'];
    $check = mysql_query("SELECT * FROM users WHERE user_name = '$username'")or   die(mysql_error());
    while($info = mysql_fetch_array( $check ))
    {
        $username = $row['user_name'];
        $email = $row['user_email'];
    }
    //if the cookie has the wrong password, they are taken to the login page

    ?>

php新手,欢迎光临!
要回答您的问题,
是这样的

function tell_eveyone_i_just_updated_my_website($additional_info){
if(empty($additional_info)/* && $additional_info!=='0'*/){$additional_info='';}
if(!is_string($additional_info)){
throw new InvalidArgumentException('if $additional_info is not empty, it must be a string!');
}
$pdoh=new PDO('mysql:host=localhost;dbname=users_db;charset=utf8;','root','',array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
$pdostatementh=$pdoh->prepare("SELECT `user_name`,`user_email` FROM  `users` WHERE 1");
$pdostatementh->execute();
$row=NULL;
while(false!==($row=$pdostatementh->fetch(PDO::FETCH_ASSOC))){
//$username= $row['user_name'];//
$email = $row['user_email'];
mail($email, "i just updated my website!","i just updated my website! ".$additional_info);
}

};

tell_everyone_i_just_updated_my_website("added a new article about cats");
现在来吹毛求疵

在这里:

您无法抵御SQL注入攻击。。。如果som1将其用户名设置为 这个:黑客",;删除数据库
用户
--

他们会删除你的数据库!(解决方案:mysql\u查询(“从用户中选择*,其中用户名=”。mysql\u real\u escape\u字符串($username)。“”)

不要用它来检查SOM1是否已登录,黑客可能会伪造它。(解决方案:使用$\u会话)

应该是

if($_SERVER['REQUEST_METHOD'] == 'POST')
(原因是,如果POST请求不包含实际的POST数据,即使它在技术上是一个POST请求,$\u POST仍将计算为false.)

接下来,您可能需要验证POST请求中是否实际给出了名称/电子邮件/消息,或者它可能会导致php代码中出现未处理的错误。。(但老实说,谁会阅读服务器错误日志,对吗?…)类似于

if(!isset($_POST['name'])){echo "malformed POST request! name missing!";/*~~*/}
接下来,不要使用mysql_uAPI,它将很快从PHP中删除,并且您的代码将在将来的PHP更新中停止工作。而是使用PDO或MySQLi

if($_POST){
if($_SERVER['REQUEST_METHOD'] == 'POST')
if(!isset($_POST['name'])){echo "malformed POST request! name missing!";/*~~*/}