2010-05-06 46 views
7

Mã bên dưới là hệ thống đăng nhập mà tôi đang sử dụng. Nó cho phép người dùng mới đăng ký và sau đó gửi cho người dùng mới một email kích hoạt. Nó đang chèn người dùng mới vào cơ sở dữ liệu MySQL, nhưng nó không gửi email kích hoạt. Bất kỳ ý tưởng nào tại sao nó không gửi email kích hoạt?Gửi email kích hoạt khi người dùng mới đăng ký

Cảm ơn trước,

John

header.php:

<?php 
//error_reporting(0); 
session_start(); 
require_once ('db_connect.inc.php'); 
require_once ("function.inc.php"); 
$seed="0dAfghRqSTgx"; 
$domain = "...com"; 


?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>The Sandbox - <?php echo $domain; ?></title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<link rel="stylesheet" type="text/css" href="sandbox.css"> 
<div class="hslogo"><a href="http://www...com/sandbox/"><img src="images/hslogo.png" alt="Example" border="0"/></a></div> 
</head> 
<body> 

login.php:

<?php 
if (!isLoggedIn()) 
{ 
    // user is not logged in. 
    if (isset($_POST['cmdlogin'])) 
    { 
     // retrieve the username and password sent from login form & check the login. 
     if (checkLogin($_POST['username'], $_POST['password'])) 
     { 
      show_userbox(); 
     } else 
     { 
      echo "Incorrect Login information !"; 
      show_loginform(); 
     } 
    } else 
    { 
     // User is not logged in and has not pressed the login button 
     // so we show him the loginform 
     show_loginform(); 
    } 

} else 
{ 
    // The user is already loggedin, so we show the userbox. 
    show_userbox(); 
} 
?> 


function show_loginform($disabled = false) 
{ 

    echo '<form name="login-form" id="login-form" method="post" action="./index.php?'.$_SERVER['QUERY_STRING'].'"> 

    <div class="usernameformtext"><label title="Username">Username: </label></div> 
    <div class="usernameformfield"><input tabindex="1" accesskey="u" name="username" type="text" maxlength="30" id="username" /></div> 


    <div class="passwordformtext"><label title="Password">Password: </label></div> 
    <div class="passwordformfield"><input tabindex="2" accesskey="p" name="password" type="password" maxlength="15" id="password" /></div> 


    <div class="registertext"><a href="http://www...com/sandbox/register.php" title="Register">Register</a></div> 
    <div class="lostpasswordtext"><a href="http://www...com/sandbox/lostpassword.php" title="Lost Password">Lost password?</a></div> 

    <p class="loginbutton"><input tabindex="3" accesskey="l" type="submit" name="cmdlogin" value="Login" '; 
    if ($disabled == true) 
    { 
     echo 'disabled="disabled"'; 
    } 
    echo ' /></p></form>'; 


} 

register.php:

<?php 

require_once "header.php"; 

if (isset($_POST['register'])){ 

    if (registerNewUser($_POST['username'], $_POST['password'], $_POST['password2'], $_POST['email'])){ 

     echo "<div class='registration'>Thank you for registering, an email has been sent to your inbox, Please activate your account. 
     <a href='http://www...com/sandbox/index.php'>Click here to login.</a> 
     </div>"; 

    }else { 

     echo "Registration failed! Please try again."; 
     show_registration_form(); 

    } 

} else { 
// has not pressed the register button 
    show_registration_form(); 
} 


?> 

Người dùng mới Chức năng:

function registerNewUser($username, $password, $password2, $email) 
{ 

    global $seed; 

    if (!valid_username($username) || !valid_password($password) || 
      !valid_email($email) || $password != $password2 || user_exists($username)) 
    { 
     return false; 
    } 


    $code = generate_code(20); 
    $sql = sprintf("insert into login (username,password,email,actcode) value ('%s','%s','%s','%s')", 
     mysql_real_escape_string($username), mysql_real_escape_string(sha1($password . $seed)) 
     , mysql_real_escape_string($email), mysql_real_escape_string($code)); 


    if (mysql_query($sql)) 
    { 
     $id = mysql_insert_id(); 

     if (sendActivationEmail($username, $password, $id, $email, $code)) 
     { 

      return true; 
     } else 
     { 
      return false; 
     } 

    } else 
    { 
     return false; 
    } 
    return false; 

} 

Gửi chức năng kích hoạt Email:

function sendActivationEmail($username, $password, $uid, $email, $actcode) 
{ 
    global $domain; 
    $link = "http://www.$domain/sandbox/activate.php?uid=$uid&actcode=$actcode"; 
    $message = " 
Thank you for registering on http://www.$domain/, 

Your account information: 

username: $username 
password: $password 

Please click the link below to activate your account. 

$link 

Regards 
$domain Administration 
"; 

    if (sendMail($email, "Please activate your account.", $message, "[email protected]$domain")) 
    { 
     return true; 
    } else 
    { 
     return false; 
    } 
} 
+0

@John. Gửi một hàm tùy chỉnh hay không? Nếu không, chức năng gửi email là thư như được nêu trong câu trả lời 1. – ggfan

Trả lời

1

Có lẽ bởi vì chức năng để gửi email là mail và không sendmail? Nếu hàm sendMail được định nghĩa có thể có lỗi trong hàm đó.

0
if (mail($email, "Please activate your account.", $message, "[email protected]$domain")) 
{ 
    return true; 
} else 
{ 
    return false; 
} 
0

Ngoài cần phải sử dụng mail chức năng như đã đề cập bởi những người khác, mà là vấn đề chính của bạn, có một vấn đề nhỏ với điều này:

"[email protected]$domain" 

PHP được mong đợi một tiêu đề:

"From: [email protected]$domain" 

hoặc

"Reply-To: [email protected]$domain" 

Đây không phải là lý do tập lệnh của bạn bị lỗi (như đã đề cập ở trên, nó sử dụng chức năng sai), nhưng điều quan trọng là tuân thủ các tiêu chuẩn hoặc những thứ khác có thể xảy ra khi bạn không mong đợi.

Các vấn đề liên quan