-1

ログイン時にユーザーに電子メールを送信するインクルード ファイルを作成したいと思います。これが私のユーザーが認証される方法です。 . 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内で関数とメールを使用するのが初めてで、助けていただければ幸いです。ありがとうございました

4

1 に答える 1

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 コードに切り替えるときに使用されます。

エラー報告が有効になっていることを確認してください。これらの間違いからエラーが発生しているはずです。

于 2013-03-02T13:01:59.043 に答える