【问题标题】:How to insert an unique confirmation code into an email from php如何将唯一的确认码插入来自 php 的电子邮件
【发布时间】:2015-08-10 10:25:58
【问题描述】:

我有一个 MySQL 数据库,里面有学生。我可以选择其中的一部分或全部并向选定的对象发送电子邮件。

我还可以将电子邮件保存在数据库的表中。我现在需要一种方法,当我向选定的学生发送电子邮件时,在电子邮件正文中插入一个独特的链接,当他们点击它时,将他们的状态从后端更改为批准,确认,而他们会看到一条消息,表明他们的请求已得到确认。

我现在用于发送邮件并将它们插入数据库的代码是这样的:

<?php
    session_start();
    $page_name = 'Send Emails';
        require_once('header.php');
        if(!empty($_POST['send'])){
            $id_mail= "";
            foreach ($_POST['selected'] as $key => $value) {
                echo "$key - $value <br>";
                $id_mail .= "$value, ";
                }
                $id_mail= substr($id_mail, 0, -2);
            }
        if(!empty($_POST['Send2'])){
                 $mail= mysqli_query($conn, "SELECT student_id, mail FROM students WHERE student_id IN($_POST[id_mail])"); 
            echo "SELECT student_id, mail FROM students WHERE student_id IN($_POST[id_mail]) "; 
             while ($row_mail = mysqli_fetch_assoc($mail)) { 
                 echo "$row_mail[mail] "; 
             $to = $row_mail['mail']; 
             $subject = $_POST['head']; 
             $message = $_POST['body']; 
             $headers = 'From: code-week@example.com' . "\r\n" . 
            'Please do not reply to this message' . "\r\n" . 
            'X-Mailer: PHP/' . phpversion(); 
             mail($to, $subject, $message, $headers); 
             $sent_mails= mysqli_query($conn, "INSERT INTO sent_mails (id_st, mail_head, content) VALUES ('$_POST[id_mail]', '$subject', '$message') "); 
             if (mysqli_query($conn, $sent_mails)){ 
                echo "Success"; 
             } else { 
            echo "Error ". $sent_mails . "<br/>" . mysqli_error($conn); 
            } 
          } 
       } 
        mysqli_close($conn); 
 ?> 
    <form name='mail2' method='post' action='send_email.php'><br/>
    <input type="hidden" name="id_mail" value="<?php echo $id_mail; ?>">
        <br/>

    <input type='text' name='head' placeholder='header'>
    <br/>
    <br/>

    <textarea name='body' rows="4" cols="50" placeholder='body'></textarea><br/>
    <br/>
    <input class='btn btn-danger'type='submit' name="Send2" value='Send'>
    </form>

【问题讨论】:

  • 那么,问题是什么?
  • @Epodax 完全同意。哥们,你需要什么?
  • 我需要一种方法在电子邮件正文中插入一个独特的链接,当他们点击它时,将他们的状态从后端更改,比如说批准,确认,而他们看到他们的请求已得到确认的消息。基本上是一个RSVP系统。我通过电子邮件邀请某人参加,如果他决定加入,他会点击我发送给他的链接以回复。

标签: php mysql email


【解决方案1】:

您想在电子邮件中添加一个链接,以便收件人证明这是他的电子邮件地址(类似于http://www.example.com/confirmEmailAddress?randomCode=abcdef),对吗? 好吧,如果您在链接中添加了收件人的电子邮件地址或他的唯一数据库 ID,则此随机代码不必是唯一的: http://www.example.com/confirmEmailAddress?NotNecessarilyUniqueRandomCode=abcdef&amp;email=john.doe@example.com 然后,您只需对照两列检查您的数据库。

【讨论】:

  • 不,我知道这是他的电子邮件。我发送的电子邮件是告诉他被邀请参加他注册的活动的人,链接应该是他确认他将参加的活动。我有一张包含人们状态的表格。当他们收到电子邮件时,他们的状态变为“已批准”。这个想法是给他们发送一个链接,当他们点击它时,状态会变为“已确认”。
  • 我明白了,但是为什么你需要一个唯一的 ID 呢?链接不能简单地类似于href=http://www.example.com/?action=participationUpdate&amp;eventID=&lt;?php echo $id_event; ?&gt;&amp;studentID=&lt;?php echo $id_student; ?&gt;&amp;newStatus=confirmed 吗? (不过,您可以将这样的链接与上面提到的一点额外安全性结合起来,这样一个学生就不会知道该链接以确认另一个学生的参与。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-12
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-13
相关资源
最近更新 更多