【问题标题】:interact with one object individually inside while loop在while循环中单独与一个对象交互
【发布时间】:2018-04-09 22:29:45
【问题描述】:

我在 while 循环中有一个联系表单,它会向 while 循环中显示的用户发送一封电子邮件。但是使用这种结构,我会向循环内的所有对象发送电子邮件。在这种情况下,我不知道如何逃避 while 循环。

... while($row = $sql->fetchObject()){
     ... echo $row->userMail;
         echo '<form ...><input name="contactMail"><...submit></form>';
         if(isset($_POST['visitorMail']{
            mail($toUserMail,$subject,$body_containsVisitorMail,$headers);
              //this will send an email to all "objects" displayed in within the while loop -> problem

   }
}

【问题讨论】:

  • 表格中不要填写目的地址。它将被用作垃圾邮件网关。此外,看起来您将表单本身与处理其内容的代码混合在一起,没有多大意义。

标签: php sql while-loop phpmailer


【解决方案1】:

我想你需要检查$_POST['contactMail'] 的值与当前迭代的值:

while($row = $sql->fetchObject()){
    echo $row->mail;
    echo '<form ...><input name="contactMail" value="' . $row->mail . '"><...submit>
    <input type="hidden" name="itemId" value="' . $row->id . '"></form>';
    if(isset($_POST['contactMail']) && $_POST['itemId'] == $row->id) {
        mail($toRowMail,$subject,$body,$headers);
    }
}

【讨论】:

  • 谢谢,但输入字段实际上是供访问者输入他们的电子邮件地址的。所以'contactMail'和'$row->mail'是两个不同的地址。 contactMail 仅适用于 $body。
  • 那为什么要在while循环中发送邮件呢?在while 循环之后检查if ($_POST[''])。
  • 我怎么知道要向哪个对象发送电子邮件。假设我在 while 循环中显示了一些对象。对于每个对象,都有一个额外的表单可以发送电子邮件。我需要一种方法来检查用户提交的表单。
  • 使用id 或其他一些唯一字段为每个表单添加一个隐藏字段。检查此传递字段的值是否等于当前值。更新了我的脚本,检查一下。
猜你喜欢
  • 2020-09-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 2013-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多