2010-05-06 15 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

@ जॉन। भेजना एक कस्टम समारोह है या नहीं? यदि नहीं, तो ईमेल भेजने के लिए फ़ंक्शन उत्तर 1 में बताए गए मेल है। – ggfan

उत्तर

1

हो सकता है कि क्योंकि ई-मेल भेजने के लिए समारोह mail और नहीं sendmail है? यदि फ़ंक्शन भेजता है मेल को परिभाषित किया गया है तो उस फ़ंक्शन में कोई त्रुटि हो सकती है।

0

वहाँ इस के साथ एक छोटी सी समस्या है, mail समारोह के रूप में दूसरों के द्वारा उल्लेख किया है, जो अपनी प्राथमिक समस्या है उपयोग करने के लिए की आवश्यकता होगी, के अलावा:

"[email protected]$domain" 

पीएचपी एक हैडर उम्मीद कर रही है:

"From: [email protected]$domain" 

या

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

यही कारण नहीं है कि आपकी स्क्रिप्ट विफल हो रही है (जैसा ऊपर बताया गया है, यह गलत फ़ंक्शन का उपयोग कर रहा है), लेकिन मानकों का अनुपालन करना अभी भी महत्वपूर्ण है या अन्यथा चीजें तोड़ सकती हैं जब आप उन्हें उम्मीद नहीं करते हैं।

संबंधित मुद्दे