PHP从包含文件发送电子邮件

时间:2013-03-02 12:57:18

标签: php

我想创建一个包含文件,该文件在用户登录时会向用户发送电子邮件。这就是我的用户进行身份验证的方式: 1- my authenticate include file根据login.php传递的用户邮件在数据库中选择用户密码。 2-如果用户通过身份验证,我只创建2个会话变量user_id和user_name

所以我想做的是,一旦用户通过身份验证,我想在我的email_function包含文件中调用send_login_email函数。 我还计划创建更多的电子邮件功能,我向用户发送电子邮件以获取其他通知,因此将user_email保存在会话变量中非常重要。 这就是我的发送电子邮件包含目前文件的样子:

<?php
require_once('../includes/authenticate.inc.php');
function login_mail($_SESSION['uemail'])
{
$to = $_SESSION['uemail'];
$subject = "login";
$message = <?php $user_name ?>, You have logged in.";
$from = "example@email.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
}
?> 

在我的身份验证文件中,我选择用户详细信息,如下所示:

    $sql = 'SELECT salt, user_password, user_role, user_name, person_id FROM users WHERE user_email = ?';
$stmt = $conn->stmt_init();
$stmt->prepare($sql);
// bind the input parameter
$stmt->bind_param('s', $user_email);
// bind the result, using a new variable for the password
$stmt->bind_result($salt, $storedPwd, $user_role, $user_name, $person_id);
$stmt->execute();
$stmt->fetch();

并且在检查密码是否正确的if语句中我有以下代码 - 我也在这里调用电子邮件功能

$_SESSION['start'] = time();
  session_regenerate_id();
  header("Location: $redirect");
  // get the user's name and id
  $_SESSION['name'] = $user_name;
  $_SESSION['id'] = $person_id;
  $_SESSION['uemail'] = $user_email;
  require_once('../includes/email_func.inc.php'); //new stuff
  login_mail($_SESSION['uemail']);

当我成功登录时,我没有收到电子邮件。 我是新手在php中使用函数和电子邮件而我非常感谢一些帮助。 谢谢

1 个答案:

答案 0 :(得分:1)

按如下方式更改功能:

function login_mail($to, $user_name)
{
$subject = "login";
$message = "$user_name, You have logged in.";
$from = "example@email.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
}

然后将其称为:

login_mail($_SESSION['uemail'], $user_name);

函数的参数必须是普通变量,而不是数组元素。您试图引用该函数中不存在的$user_name。并且<?php ...?>不用于普通赋值,它是在从HTML输出切换到PHP代码时使用的。

确保您启用了错误报告,您应该从这些错误中获得错误。