我想创建一个包含文件,该文件在用户登录时向用户发送电子邮件。这就是我的用户获得身份验证的方式:1-我的身份验证包含文件根据 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 中使用函数和电子邮件的新手,我非常感谢一些帮助。谢谢