2015-06-20 30 views
-1

我一直在試圖讓論壇工作。我的老師對我以前的3個版本不滿意,於是我決定向我的侄子請求幫助。在他幫助我之後,我只剩下一個問題,那就是電子郵件功能。每次有人發佈問題答覆時,我都希望提問的用戶收到一封包含答案的電子郵件。只要他得到答案,佈局就無關緊要。 2天后,我仍然沒有得到它的工作,所以我決定在這裏問我的問題,並希望得到答案。順便說一句,文本的語言是荷蘭人,如果你想知道。代碼是英文的。 。回覆後得到電子郵件功能在論壇上工作

<?php 
//create_cat.php 
include 'connect.php'; 
include 'header.php'; 

if($_SERVER['REQUEST_METHOD'] != 'POST'){ 
    //het kan niet direct worden opgeroepen, dit geeft een error 
    echo 'Dit bestand is niet manueel bereikbaar.'; 
}else{ 
    //status effe checken 
    if(!$_SESSION['signed_in']){ 
     echo 'Je moet aangemeld zijn om een antwoord te geven'; 
    }else{ 
     $sql = "INSERT INTO posts(post_inh,post_datu,post_topic,post_door) 
      VALUES ('" . $_POST['reply-content'] . "', 
        NOW(), 
        " . mysql_real_escape_string($_GET['id']) . ", 
        " . $_SESSION['geb_id'] . ")"; 

     $result = mysql_query($sql); 
     if(!$result){ 
      echo 'Je antwoord is niet opgeslagen probeer later opnieuw'; 
     }else{ 
      echo 'Je antwoor is opgeslagen, bekijk <a href="topic.php?id=' . htmlentities($_GET['id']) . '">het</a>.'; 
     } 
    } 
} 

include 'footer.php'; 
?> 

這就是我想要把它放在代碼 誰問這個問題的人的電子郵件ADRES是在數據庫中,被稱爲: geb_email

我真的很感激一些幫助因爲我以前的7次嘗試失敗了,我失去了希望。

對不起英文不好,英文不是我的主要語言。

編輯:

<?php 
error_reporting(E_ERROR | E_PARSE); 
//create_cat.php 
include 'connect.php'; 
include 'header.php'; 

$sql = "SELECT 
     topic_id, 
     topic_onderwerp 
    FROM 
     topics 
    WHERE 
     topics.topic_id = " . mysql_real_escape_string($_GET['id']); 

$result = mysql_query($sql); 

if(!$result) 
{ 
echo 'Het onderwerp kan nu niet worden weergegeven, probeer later opnieuw'; 
} 
else 
{ 
    if(mysql_num_rows($result) == 0) 
{ 
    echo 'Dit onderwerp bestaat niet.'; 
} 
else 
{ 
    while($row = mysql_fetch_assoc($result)) 
    { 

     echo '<table class="topic" border="1"> 
       <tr> 
        <th colspan="2">' . $row['topic_onderwerp'] . '</th> 
       </tr>'; 


     $posts_sql = "SELECT 
        posts.post_topic, 
        posts.post_inh, 
        posts.post_datu, 
        posts.post_door, 
        gebruikers.geb_id, 
        gebruikers.geb_naam 
       FROM 
        posts 
       LEFT JOIN 
        gebruikers 
       ON 
        posts.post_door = gebruikers.geb_id 
       WHERE 
        posts.post_topic = " . mysql_real_escape_string($_GET['id']); 

     $posts_result = mysql_query($posts_sql); 

     if(!$posts_result) 
     { 
      echo '<tr><td>De posts kunnen niet worden weergegeven. Probeer later opnieuw.</tr></td></table>'; 
     } 
     else 
     { 

      while($posts_row = mysql_fetch_assoc($posts_result)) 
      { 
       echo '<tr class="topic-post"> 
         <td class="geb-post">' . $posts_row['geb_naam'] . '<br/>' . date('d-m-Y H:i', strtotime($posts_row['post_datu'])) . '</td> 
         <td class="post-inhoud">' . htmlentities(stripslashes($posts_row['post_inh'])) . '</td> 
         </tr>'; 
      } 
     } 

     if(!$_SESSION['signed_in']) 
     { 
      echo '<tr><td colspan=2>je moet <a href="signin.php">aangemeld zijn</a> om te antwoorden. Je kunt ook <a href="signup.php">een account </a> maken.'; 
     } 
     else 
     { 
      //de reply cell/box of hoe je het ook wil noemen 
      echo '<tr><td colspan="2"><h2>Reply:</h2><br /> 
       <form method="post" action="reply.php?id=' . $row['topic_id'] . '"> 
        <textarea name="reply-content"></textarea><br /><br /> 

        <input type="submit" value="Finish" /> 
       </form></td></tr>' 

      ; 
     } 

$email_to="[email protected]"; //edited this quicly to prevent spam :p 
$email_subject="Antwoord vraag forum"; 

$headers = "Van: forum"; 
mail($email_to, $email_subject, $email_message, $headers); 

     //en mijn grote fout hier was natuurlijk de tabel niet afsluiten 
     echo '</table>'; 
    } 
} 
} 

include 'footer.php'; 
?> 

這是topic.php代碼。我在這裏嘗試了一些東西(刪除了破壞代碼的東西)。現在需要發生的是將用戶,電子郵件和文本放入$ email變量中。 非常感謝。

回答

0

您不應該使用MySQL驅動程序,因爲它已被棄用 - 請改用MySQLi或PDO!

您可以使用此功能發送電子郵件:

mail("[email protected]", "Subject", "Message (simple use enter for new line)", "From: Sender name <[email protected]>"); 

如果它不工作,你應該使用一個圖書館一樣PHPMailer通過SMTP發送(庫由我,如果你只是推薦也用郵件發送)。

你不應該使用!$_SESSION[...],因爲它可以拋出通知/甚至警告。改爲使用empty()!isset()

+0

我已經變得更遠一點,但我仍然卡住了。在郵件中獲取正確的文本非常困難;無論如何感謝您的幫助。 – Wolfeh

+0

@沃爾夫:你的文章有什麼問題? – Richard

+0

那麼問題在於reply.php是由topic.php訪問的。 reply.php從topic.php獲取所有信息,如topic_id = 1 topic_door(誰發佈它)= 1等等。我試圖將其鏈接到用戶,然後再鏈接到用戶的電子郵件。這沒關係。主要問題是,回覆的文本被放入回覆內容文本區域,我無法從該文本區域獲取信息中的信息。如果你想,我可以把所有的代碼放在這裏,以便你可以看到它。我可能沒有提供足夠的數據。我很抱歉,這是我第一次在這裏發佈內容,我有點絕望。 – Wolfeh