2010-05-06 538 views
7

下面的代碼是我正在使用的登錄系統。它應該允許新用戶註冊,然後向新用戶發送激活電子郵件。它將新用戶插入MySQL數據庫,但不會發送激活電子郵件。任何想法,爲什麼它不發送激活電子郵件?當新用戶註冊時發送激活電子郵件

由於提前,

約翰

的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(); 
} 


?> 

新的用戶功能:

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; 

} 

發送激活郵件功能:

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。 sendMail是一個自定義函數嗎?如果不是,則按照答案1中的說明發送電子郵件的功能是郵件。 – ggfan 2010-05-06 23:01:38

回答

1

也許是因爲發送電子郵件的功能mail而不是sendmail的?如果函數sendMail被定義了,那麼函數中可能會有錯誤。

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

除了需要使用如其他人所說的mail功能,這是你的首要問題,有一個小問題,這一點:

"[email protected]$domain" 

PHP期待一個標題:

​​

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

這不是你的腳本失敗的原因(如上所述,它使用了錯誤的功能),但遵守標準仍然很重要,否則當你不期望它們時,事情可能會破壞。

相關問題