2013-02-08 35 views
0

我有忘記密碼錶單,用戶可以在其中輸入其有效的電子郵件地址。我向用戶發送郵件沒有問題,我唯一的問題是我想從用戶數據庫(用戶名&密碼)向用戶發送他們的帳戶信息,以便他們知道他們的用戶名和密碼。但似乎我在如何在用戶的收件箱中顯示其帳戶信息方面遇到困難。我是PHP新手,如果能幫助我解決問題,那將是非常棒的。發送帶有PHP輸出內容的郵件將不會顯示在收件箱中

這裏是我的代碼:

編輯:

<?php 
if (isset($_POST['submit'])) { 
    $email_from = "[email protected]"; 
    $datesent = date('D m/d/Y, g:i A'); 
    $error_message = ""; 
    $msg = ""; 
    $subject = "Some text here"; 


    //some validations here 

    $query = "Select * from user_information where EMAIL_ADDRESS = '".$_POST['email']."'"; 
    $result = mysql_query($query) or die("ERROR: ".mysql_error()); 
    $check = mysql_num_rows($result); 
    if ($check == 0) { 
     $row = mysql_fetch_assoc($result); 
     $username = $row['USERNAME']; 
     $password = $row['PASSWORD']; 
     $fname = $row['FIRST_NAME']; 
    } 
    ob_start(); //Turn on output buffering 
?> 

    Hi <? php echo $fname; ?>! 

     Here is your Account information: 

     Username: <? php echo $username; ?> 
     Password: <? php echo $password; ?> 

    //some text here 

<?php 
    $message = ob_get_contents(); 
    ob_get_clean(); 
    $email_message = "From: ".clean_string($email_from)."\n"; 
    $email_message. = "Sent: ".clean_string($datesent)."\n"; 
    $email_message. = "Subject: ".clean_string($subject)."\n"; 
    $email_message. = "\n".clean_string($message)."\n"; 
    $headers = 'From: '.$email_from."\r\n"; 
    $headers. = 'To: '.$email."\r\n"; 
    $headers. = 'Sent: '.$datesent."\r\n"; 
    $email_sent = @mail($sendto, $subject, $email_message, $headers); 
} ?> 
+1

擺脫mail()函數前面的'@',這樣你就可以看到是否有錯誤。 –

+0

似乎沒有發現錯誤,當我擺脫@符號的郵件()。 – tek4granted

+0

if(isset($ _ SESSION ['submit']))這是錯誤。會話變量提交將永遠不會被設置,因此它內部的代碼將永遠不會被執行。當你提交表單時,應該是$ _POST ['submit']。基本錯誤 – sonam

回答

0

下面的代碼不FPR你工作:

$check = mysql_num_rows($result); 
if($check==0){ 
    ... 
} 

應該是:

$check = mysql_num_rows($result); 
if($check != false){ 
    ... 
} 

如果沒有結果行,則只設置用戶名,密碼和fname

+0

謝謝@DKSan,但這也解決不了問題。 – tek4granted

+0

你有沒有像xdebug這樣的debuger?如果是這樣,請調試您的代碼。如果不放'error_log('Check:'。$ check);''在'$ check = ...'後面並查看你的error_log文件 – DKSan

0

我假定您發佈了整個源文件。如果是這樣,那麼在文件開始處缺少session_start()。沒有它,訪問$_SESSION是不可能的。或者,也許你想使用$_POST並寫下$_SESSION

+0

我已經在代碼的開頭放了session_start(),但是這樣做不會任何意義。 :( – tek4granted

0

變化

if ($check == 0) 

if ($check > 0) 

注:請不要使用$ _ POST,$ _ GET變量,但不消毒它們。如果你不驗證和清理你的$ _POST和$ _GET變量,使用mysql_query很容易進行sql注入。使用PHP_PDO

而且

if (isset($_SESSION['submit'])) { 

if (isset($_POST['submit'])) { 
+0

與其他人一樣,這個答案沒有解決問題,無論如何感謝。 – tek4granted

0

首先是啓動會話那麼只有你可以使用會話變量,並從數據庫中獲取數組時,行數不應該是零,像這樣

if ($check != 0) { 
    $row = mysql_fetch_assoc($result); 
    $username = $row['USERNAME']; 
    $password = $row['PASSWORD']; 
    $fname = $row['FIRST_NAME']; 
} 

並且在這段代碼中也有錯誤

ob_start(); //Turn on output buffering 
    ?> 
    Hi <?php echo $fname; ?>! 

    Here is your Account information: 

    Username: <?php echo $username; ?> 
    Password: <?php echo $password; ?> 

//some text here 

您還沒有使用過<?php,而是使用了<? php。 希望有所幫助。

+0

感謝您的幫助,但是這也解決不了問題。 – tek4granted

+0

@ tek4granted你能解釋你的程序是如何工作的。 – Dharmendra

相關問題