-5

ユーザーをサインアップして電子メールを送信して電子メールが正しいことを確認するこのフォームがあり、ユーザーがサインアップしても問題ありませんが、「確認電子メール」がユーザーの電子メールに送信されませんでした

ここにPHPコードがあります

    <?php

if (isset($_POST['submited'])) {
    $msg = "";

    $RFname = clean_text($_POST['RFname']);
    $RLname = clean_text($_POST['RLname']);
    $USERname = clean_text($_POST['UserName']);
    $USERpassword = $_POST['UserPass'];
    $USERpassword2 = $_POST['UserPassConfirm'];
    $USERemail = $_POST['UserEmail'];
    $USERwebsite = $_POST['WebSite'];
    $hash = clean_text(md5(rand(0, 1000)));
    $checkEmail = $db->query("select * from loginaccess where Email ='" . $USERemail . "'");
    $checkUID = $db->query("select * from loginaccess where Uname ='" . $USERname . "'");


    if ($USERpassword !== $USERpassword2) {
        $msg = "<span style='color:#F00; font-size:14px; font-weight:bold;'>Passwords did not match</span>";
    } elseif ($checkEmail->num_rows == 1) {
        $msg = "<span style='color:#F00; font-size:14px; font-weight:bold;'>This email already taken</span>";
    } elseif ($checkUID->num_rows == 1) {
        $msg = "<span style='color:#F00; font-size:14px; font-weight:bold;'>This User name already taken</span>";
    } elseif (empty($_SESSION['6_letters_code']) || strcasecmp($_SESSION['6_letters_code'], $_POST['6_letters_code']) != 0) {
        $msg = "<span class='errorMessges'>Human code verification invalid</span>";
    } else {
        $putData = "insert into loginaccess (id, FUname, LUname, Uname, Pword, Email, Website, hash) value ('', '$RFname', '$RLname', '$USERname', '$USERpassword', '$USERemail', '$USERwebsite', '$hash')";
        $inputResult = $db->query($putData) or die ('$db->error');
        if ($inputResult) {
            $msg = "<span class='successMessgaes'>You have been successfully registered</span>";

            // Send email to our user 
            $to = '$USERemail';
            $subject = 'Signup | Verification';
            $message = "

        Welcome to Learning and share.

    Before you can use your new account you must activate it - this ensures the e-mail address you used is valid and belongs to you.  To activate your account, click the link below or copy and paste the whole thing into your browser's location bar:

    -------------------------------------------------------------------------------------------------------- 
    http://www.yourwebsite.com/verify.php?email='.$USERemail.'&hash='.$hash.'
    -------------------------------------------------------------------------------------------------------- 

    Once you've successfully activated your account, you can throw away this e-mail.

    Thanks!

    The Learning and share staff


    ";
            $headers = 'From:noreply@learning.com' . "\r\n";
            mail($to, $subject, $message, $headers);
        } else {
            $msg = "<span class='errorMessges'>There was an error please try again later</span>";
        }
    }
}
?>

これはHTMLコードです

<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">

    <table width="762" border="0" cellspacing="5" cellpadding="5">
        <tr>
            <td colspan="2" class="socialAndPeopleByName">Personal information</td>
            <td colspan="2"><span class="socialAndPeopleByName">Account information</span></td>
        </tr>
        <tr>
            <td width="91" class="registrationInfo"><span class="red">*</span> First name</td>
            <td width="203"><label for="textfield"></label>
              <span id="sprytextfield1">
              <input name="RFname" type="text" class="registrationFeild" id="textfield"/>
              <span class="textfieldRequiredMsg"><br>
              First name  is required.</span></span></td>
            <td width="148"><span class="red">*</span><span class="registrationInfo"> User name</span></td>
            <td width="255"><span id="sprytextfield5">
              <input name="UserName" type="text" class="registrationFeild" id="textfield5"/>
              <span class="textfieldRequiredMsg"><br>
              User name is required.</span></span></td>
        </tr>
        <tr>
            <td class="registrationInfo"><span class="red">*</span> Last name</td>
            <td><span id="sprytextfield2">
              <input name="RLname" type="text" class="registrationFeild" id="textfield2"/>
              <span class="textfieldRequiredMsg"><br>
              Last name is required.</span></span></td>
            <td><span class="red">*</span><span class="registrationInfo"> Password</span></td>
            <td><span id="sprypassword1">
            <input name="UserPass" type="password" class="registrationFeild" id="textfield7"/>
            <span class="passwordRequiredMsg"><br>
            Password is required.</span><span class="passwordMaxCharsMsg"><br>
            Password can't be more then 20 letter</span><span class="passwordMinCharsMsg"><br>
            Password can't be less then 6 letter</span></span></td>
        </tr>
        <tr>
            <td class="registrationInfo"><span class="red">*</span> Valid email</td>
            <td><span id="sprytextfield3">
            <input name="UserEmail" type="text" class="registrationFeild" id="textfield3"/>
            <br>
            <span class="textfieldRequiredMsg">Valid email is required.</span><span class="textfieldInvalidFormatMsg">Invalid email format.</span></span>
            </td>
            <td><span class="red">*</span><span class="registrationInfo"> Confirm Password</span></td>
            <td><span id="sprypassword2">
              <input name="UserPassConfirm" type="password" class="registrationFeild" id="textfield8"/>
              <span class="passwordRequiredMsg"><br>
              Please confirm your password</span></span></td>
        </tr>
        <tr>
            <td class="registrationInfo">Web site</td>
            <td><span id="sprytextfield4">
              <input name="WebSite" type="text" class="registrationFeild" id="textfield4"/>
              <br>
              <span class="textfieldInvalidFormatMsg">Invalid format</span></span></td>
            <td><span class="registrationInfo"><span class="red">*</span> Prove you are human</span></td>
            <td><img src="includes/captcha.php?rand=<?php echo rand(); ?>" align="absmiddle" id='captchaimg'/> <a
                    href="javascript: refreshCaptcha();"><img src="images/refreshIcon.jpg" alt="Refresh" width="18"
                                                              height="25" border="0" align="absmiddle"/></a> <input
                    name="6_letters_code" type="text" class="registrationFeildSmall" id="6_letters_code"/></td>
        </tr>
        <tr>
            <td colspan="3"><?php if (!empty($msg)) {
                    echo $msg;
                } ?></td>
            <td><input name="submited" type="submit" class="signUpItem" id="submited" value=""/></td>
        </tr>
    </table>
</form>

ユーザーのサインアップ後に何が起こるか:

  1. 新しいユーザーがデータベースに正常に挿入されます。
  2. ユーザーは「正常に登録されました」というメッセージを受け取ります。

問題: これは、ユーザーが確認メールを受信しない問題です。

4

2 に答える 2

1

確認メールの送信に問題があると書いてありました。基本的に機能するかどうかを確認し、機能しない場合はデバッグ情報を提供する必要があります。

mail関数には戻り値があります。

TRUEメールの配信が正常に受け入れられた場合は戻り、そうでない場合は返しますFALSE

メールの配信が許可されたからといって、メールが実際に目的の宛先に届くわけではないことに注意してください。

戻り値を利用して、より安定したコードを記述します。そうでなければ、あなたは暗闇の中に座っています。

大まかな例:

...

$headers = 'From:noreply@example.com' . "\r\n"; 
$send = mail($to, $subject, $message, $headers);
if (!$send) {
    echo "Failed to send Email:\n";
    var_dump($to, $subject, $message, $headers);
    die();
}

次に、実際の問題を特定します。メールが送信されたと報告されているが、配信されていない場合は、送信メールのエラー ログを確認してください。

于 2012-10-11T12:18:07.227 に答える
0

変化する:

$to='$USERemail';

に:

$to = $USERemail; 

PHP では、一重引用符内の変数の文字列補間は許可されていません。

于 2012-10-11T11:56:52.617 に答える