发送带有PHP输出内容的邮件赢得';t显示在收件箱中

发送带有PHP输出内容的邮件赢得';t显示在收件箱中,php,email,mailer,Php,Email,Mailer,我忘记了用户可以输入有效电子邮件地址的密码表单。我在向用户发送邮件方面没有问题,我唯一的问题是我想从数据库向用户发送他们的帐户信息(用户名和密码),以便他们知道他们的用户名和密码。但我似乎很难在用户的收件箱中显示他们的帐户信息。我是PHP新手,如果你能帮我解决这个问题,那就太好了 这是我的密码: 编辑: <?php if (isset($_POST['submit'])) { $email_from = "example@domain.com"; $datesent = d

我忘记了用户可以输入有效电子邮件地址的密码表单。我在向用户发送邮件方面没有问题,我唯一的问题是我想从数据库向用户发送他们的帐户信息(用户名和密码),以便他们知道他们的用户名和密码。但我似乎很难在用户的收件箱中显示他们的帐户信息。我是PHP新手,如果你能帮我解决这个问题,那就太好了

这是我的密码:

编辑:

<?php
if (isset($_POST['submit'])) {
    $email_from = "example@domain.com";
    $datesent = date('D m/d/Y, g:i A');
    $error_message = "";
    $msg = "";
    $subject = "Some text here";


    //some validations here

    $query = "Select * from user_information where EMAIL_ADDRESS = '".$_POST['email']."'";
    $result = mysql_query($query) or die("ERROR: ".mysql_error());
    $check = mysql_num_rows($result);
    if ($check == 0) {
        $row = mysql_fetch_assoc($result);
        $username = $row['USERNAME'];
        $password = $row['PASSWORD'];
        $fname = $row['FIRST_NAME'];
    }
    ob_start(); //Turn on output buffering
?>

    Hi <? php echo $fname; ?>!

        Here is your Account information:

        Username: <? php echo $username; ?>
        Password: <? php echo $password; ?>

    //some text here

<?php
    $message = ob_get_contents();
    ob_get_clean();
    $email_message = "From: ".clean_string($email_from)."\n";
    $email_message. = "Sent: ".clean_string($datesent)."\n";
    $email_message. = "Subject: ".clean_string($subject)."\n";
    $email_message. = "\n".clean_string($message)."\n";
    $headers = 'From: '.$email_from."\r\n";
    $headers. = 'To: '.$email."\r\n";
    $headers. = 'Sent: '.$datesent."\r\n";
    $email_sent = @mail($sendto, $subject, $email_message, $headers);
} ?>

你好
这是您的帐户信息:
用户名:
密码:
//这里有一些文字

以下代码对您无效:

$check = mysql_num_rows($result);
if($check==0){
    ...
 }
应该是:

$check = mysql_num_rows($result);
if($check != false){
    ...
 }

只有在没有结果行的情况下,才可以设置用户名、密码和fname。我假定您发布了整个源文件。如果是这样,则文件开头缺少
会话\u start()
。没有它,无法访问
$\u会话
。或者,您可能想使用
$\u POST
并编写
$\u SESSION

更改

if ($check == 0)

注意:不要使用$\u POST,$\u在未清理变量的情况下获取变量。如果不验证和清理$\u POST和$\u GET变量,使用mysql\u查询很容易出现sql注入。使用PHPêPDO


首先,启动会话,然后只有您可以使用会话变量,当从数据库获取数组时,行数不应为零,如下所示

 if ($check != 0) {
    $row = mysql_fetch_assoc($result);
    $username = $row['USERNAME'];
    $password = $row['PASSWORD'];
    $fname = $row['FIRST_NAME'];
}
这个代码也有错误

  ob_start(); //Turn on output buffering
  ?>
  Hi <?php echo $fname; ?>!

    Here is your Account information:

    Username: <?php echo $username; ?>
    Password: <?php echo $password; ?>

//some text here
ob_start()//打开输出缓冲
?>
你好
这是您的帐户信息:
用户名:
密码:
//这里有一些文字

您没有使用
清除
邮件()函数前面的
@
,因此您实际上可以查看是否存在任何错误。在我清除邮件()的@symbol()时,似乎没有发现任何错误。如果(isset($\u SESSION['submit'))这是错误。会话变量submit永远不会被设置,因此它里面的代码永远不会被执行。当您提交表单时,应该$u POST['submit']。基本错误我很抱歉,这只是一个打字错误,但我真正的代码实际上是$_POST['sumbit']。你有像xdebug这样的调试程序吗?如果是,请调试您的代码。如果未放入
错误日志('Check:'。$Check)
$check=…
之后,查看您的错误日志文件我已经将session\u start()放在了代码的开头,但这没有任何意义:(谢谢你的帮助,但这也不能解决问题。@tek4granted你能解释一下你的程序是如何运行的吗。和其他人一样,这个答案不能解决问题。无论如何,谢谢。
 if (isset($_POST['submit'])) {
 if ($check != 0) {
    $row = mysql_fetch_assoc($result);
    $username = $row['USERNAME'];
    $password = $row['PASSWORD'];
    $fname = $row['FIRST_NAME'];
}
  ob_start(); //Turn on output buffering
  ?>
  Hi <?php echo $fname; ?>!

    Here is your Account information:

    Username: <?php echo $username; ?>
    Password: <?php echo $password; ?>

//some text here