Уведомление по электронной почте о новой записи базы данных MySQL - PullRequest
1 голос
/ 12 августа 2010

Я создавал блог, используя учебники по всему Интернету, и у меня есть рабочая система комментариев, но мне бы хотелось, чтобы, когда пользователь добавил комментарий, я получил электронное письмо.Мне бы очень хотелось, если бы вы могли объяснить, как именно я мог бы реализовать уведомление.Любая помощь с благодарностью.

Текущая форма:

<form id="commentform" method="post" action="process.php">

<p><input type="hidden" name="entry" id="entry" value="<?php echo $id; ?>" />

<input type="hidden" name="timestamp" id="timestamp" value="<?php echo $commenttimestamp; ?>">

<input type="text" name="name" id="name" title="Name (required)" /><br />

<input type="text" name="email" id="email" title="Mail (will not be published) (required)" /><br />

<input type="text" name="url" id="url" title="Website" value="http://" /><br />

<br />
<textarea  title="Your Comment Goes Here" name="comment" id="comment"></textarea></p>

<p><input type="submit" name="submit_comment" id="submit_comment" value="Add Comment" /></p>

</form>

Process.php:

<?php
if (isset($_POST['submit_comment'])) {

    if (empty($_POST['name']) || empty($_POST['email']) || empty($_POST['comment'])) {
        die("You have forgotten to fill in one of the required fields! Please make sure you submit a name, e-mail address and comment.");
    }

    $entry = htmlspecialchars(strip_tags($_POST['entry']));
    $timestamp = htmlspecialchars(strip_tags($_POST['timestamp']));
    $name = htmlspecialchars(strip_tags($_POST['name']));
    $email = htmlspecialchars(strip_tags($_POST['email']));
    $url = htmlspecialchars(strip_tags($_POST['url']));
    $comment = htmlspecialchars(strip_tags($_POST['comment']));
    $comment = nl2br($comment);

    if (!get_magic_quotes_gpc()) {
        $name = addslashes($name);
        $url = addslashes($url);
        $comment = addslashes($comment);
    }

    if (!eregi("^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email)) {
         die("The e-mail address you submitted does not appear to be valid. Please go back and correct it.");
    }

    mysql_connect ('localhost', 'root', 'root') ;
    mysql_select_db ('ultankc');

    $result = mysql_query("INSERT INTO php_blog_comments (entry, timestamp, name, email, url, comment) VALUES ('$entry','$timestamp','$name','$email','$url','$comment')");

    header("Location: post.php?id=" . $entry);
}
else {
    die("Error: you cannot access this page directly.");
}
?>

1 Ответ

4 голосов
/ 12 августа 2010

Если вы ищете код на PHP, который может отправить электронное письмо, ниже приведен один из здесь , на который вы можете посмотреть.Вставьте код для отправки электронного письма непосредственно перед или после INSERT комментария в вашу базу данных.

<?php
//define the receiver of the email
$to = 'youraddress@example.com';
//define the subject of the email
$subject = 'Test email'; 
//define the message to be sent. Each line should be separated with \n
$message = "Hello World!\n\nThis is my first mail."; 
//define the headers we want passed. Note that they are separated with \r\n
$headers = "From: webmaster@example.com\r\nReply-To: webmaster@example.com";
//send the email
$mail_sent = @mail( $to, $subject, $message, $headers );
//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed" 
echo $mail_sent ? "Mail sent" : "Mail failed";
?>

Требования :

Для функций Почтычтобы быть доступным, PHP должен иметь доступ к двоичному файлу sendmail в вашей системе во время компиляции.Если вы используете другую почтовую программу, такую ​​как qmail или postfix, обязательно используйте соответствующие оболочки sendmail, которые поставляются с ними.PHP сначала будет искать sendmail в вашем PATH, а затем в следующем: / usr / bin: / usr / sbin: / usr / etc: / etc: / usr / ucblib: / usr / lib.Настоятельно рекомендуется иметь sendmail в вашем PATH.Кроме того, пользователь, который скомпилировал PHP, должен иметь разрешение на доступ к двоичному файлу sendmail.

...