【问题标题】:Confirmation email not being sent from php and mysql data? [duplicate]未从 php 和 mysql 数据发送确认电子邮件? [复制]
【发布时间】:2018-06-15 03:34:45
【问题描述】:

所以我有一个表格,您可以在其中要求某人通过电子邮件加入您的小组,但由于某种原因它没有发送电子邮件,昨天它工作得很好,现在似乎有问题了。这是表格:

<div class="form" style="background: white; box-shadow: 0 0px rgba(0, 0, 0, 0);">
    <form id="addmember" action="addingmember.php" method="post" autocomplete="off">
        <div class="field-wrap">
            <label style="position: relative; color: black;">
                Member Email:
            </label>
            <input type="email" required autocomplete="off" name="memberemail"
                   style="color: black; padding: 8px; height: 48px;"/>
        </div>
        <button type="submit" class="button button-block" name="submit">
            Submit
        </button>
    </form>

这是添加成员代码:

<?php

include '../db_connection.php';

session_start();

$leaguename = $_SESSION['league_name'];
$startdate = $_SESSION['start_date'];
$enddate = $_SESSION['end_date'];
$joincode = $_SESSION['joincode'];

$_SESSION['memberemail'] = $_POST['memberemail'];

$memberemail = $link->escape_string($_POST['memberemail']);

//check member Email matches
$memberemail = $link->query("SELECT Email FROM logins WHERE Email =' " . $_SESSION['memberemail'] . "'")->fetch_assoc()['memberemail'];

$to = $memberemail;
$subject = "Becoming part of $leaguename";
$body .= "So you want to become part of $leaguename?" . PHP_EOL;
$body .= "Please click the link below to join!" . PHP_EOL;
$body .= "http://www.linkhere.com/login/verify.php?memberemail=$memberemail&joincode=$joincode;" . PHP_EOL;

$headers = "From: emailhere";

mail($to, $subject, $body, $headers);
//header("location: addanothermember.php");

?>

【问题讨论】:

  • 检查你的垃圾邮件..
  • 你有邮件服务器吗?否则邮件无法发送
  • 一些合理的代码缩进是个好主意。它可以帮助我们阅读代码,更重要的是,它将帮助 您调试代码 Take a quick look at a coding standard 为您自己谋福利。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。
  • @Melody 我目前使用 Mercury 和 Thunderbird 作为本地邮件服务器,所以我的注册电子邮件和更改密码电子邮件都可以使用
  • @Phoebe —Thunderbird 不是邮件服务器。当你说 Mercury 时,你的意思是 pmail.com 吗?

标签: php mysql forms email


【解决方案1】:
$memberemail = $link->query("SELECT Email FROM logins WHERE Email =' " . $_SESSION['memberemail'] . "'")->fetch_assoc()['memberemail'];

您基本上在查询中选择“电子邮件”,但想从中获取“成员电子邮件”。也许这就是问题所在。

为 $memberemail 变量添加检查。

另外,在查询中使用 $_SESSION['memberemail'] 而不转义它有点危险。

【讨论】:

  • @Phoebe 是的,这是列的名称,但您想在这里取一个不同的名称:-&gt;fetch_assoc()['memberemail']
  • 好的,所以我将其更改为电子邮件只是为了检查,但检查 $memberemail 时我仍然收到 Null
  • @Phoebe 好的。在另一个变量中进行查询检查,而不是$memberemail。在进入查询之前检查$memberemail 值。之后,查看查询结果。
  • $memberemail 在进入查询之前是正确的值,我更改了变量,但查询后我仍然得到 Null
猜你喜欢
  • 1970-01-01
  • 2012-11-19
  • 2016-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
相关资源
最近更新 更多