当前位置:中国站长下载文章中心网页编程PHP编程 → 让PHP管理小型的邮件列表

让PHP管理小型的邮件列表

减小字体 增大字体 作者:佚名  来源:WeberDev.com  发布时间:2008-9-1 17:59:22

} else {

// 如果$check_num不为0,则用户在列表中,所以可以被退订

$sql = "delete from subscribers
where email_addr = \"$email\"";

@mysql_query($sql) or die ("不能删除email。");

$text_block = "
<P>退订成功!</p>
";
}

}

?>--------------------------------------------------------------------------------
现在所有艰难的工作已经做完了,只剩下在一块HTML中输出$text_block变量了:

--------------------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>订阅/退订</TITLE>
</HEAD>

<BODY>

<h1>订阅/退订</h1>

<?php echo "$text_block"; ?>

</BODY>
</HTML>
--------------------------------------------------------------------------------
  下面是完整的程序清单:

--------------------------------------------------------------------------------
<?

// 连接数据库
$db = mysql_connect("servername", "username", "password")
or die ("不能连接。");

mysql_select_db("yourDB", $db) or die ("不能选择数据库。");

// 得到时间戳
$add_date = date("Y-m-d");

if ($op != "ds") {

//需要订阅/退订

$text_block = "

<form name=\"form\" method=post action=\"$PHP_SELF\">
<input type=hidden name=op value=ds>

<p><strong>your e-mail address:</strong><br>
<input type=text name=\"email\" size=25></p>

<p><strong>action:</strong><br>
<input type=radio name=\"action\" value=\"sub\" checked> sub
<input type=radio name=\"action\" value=\"unsub\"> unsub</p>

<P><input type=submit name=\"submit\" value=\"do it\"></p>
</form>

";
} else if (($op == "ds") && ($action == "sub")) {

// 检查邮件还未提交则提交它们,否则返回信息

$check = "select email_addr from subscribers
where email_addr = \"$email\"";

$check_result = mysql_query($check)
or die("不能执行地e-mail地址的检查。");

$check_num = mysql_num_rows($check_result);


if ($check_num == 0) {

// 如果$check_num为0,则没有找到匹配的记录,用户应该被提交

$sql = "insert into subscribers
values(\"$email\", \"$add_date\")";

@mysql_query($sql) or die ("Couldn't insert email.");

$text_block = "
<P>感谢您的注册!</p>
";

} else {

// 如果$check_num不为0,则用户已经提交过了,你应该让他们知道

$text_block = "
<P>你已经订阅过了!</p>
";

}

} else if (($op == "ds") && ($action == "unsub")) {

// 检查已经订阅过,然后将他们退订,否则返回信息

$check = "select email_addr from subscribers
where email_addr = \"$email\"";

$check_result = mysql_query($check)
or die("不能执行对e-mail地址的检查。");

$check_num = mysql_num_rows($check_result);

if ($check_num == 0) {

// 如果$check_num为0,则没有找到匹配记录,用户不能被退订

$text_block = "
<P>不能在列表中找到你的e-mail地址!</p>
<P>你还没有被退订,因为你所输入的e-mail不在数据库中。";

} else {

// 如果$check_num不为0,则用户在列表中,所以可以被退订

$sql = "delete from subscribers
where email_addr = \"$email\"";

@mysql_query($sql) or die ("不能删除email。");

$text_block = "
<P>退订成功!</p>
";
}

}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>订阅/退订</TITLE>
</HEAD>

<BODY>

<h1>订阅/退订</h1>

<?php echo "$text_block"; ?>

</BODY>
</HTML>
--------------------------------------------------------------------------------
  现在你已经有了合适的订阅/退订机制,我将向你展示如何发出一封新闻信件,只使用一个简单的表单和一个邮件脚本。("while"循环是你的好朋友!)。首先,是名为"send_mail.html"的表单。表单的动作应该是象"do_send_mail.phtml"的什么东西,并且我只使用了一个用来写主题的文本字段(subject)和一个写信件内容的文本域字段(newsletter)。你可以根据需要使用表单字段,只要适当地修改表单和脚本。

--------------------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>发送邮件</TITLE>
</HEAD>

<BODY>

<h1>Send a Newsletter</h1>

<FORM ACTION="do_send_mail.phtml" METHOD="post">

<P><strong>给出一个主题:</strong><br>
<input type="text" name="subject" size=30></p>

<P><strong>邮件内容:</strong><br>
<textarea name="newsletter" cols=40 rows=30 wrap=virtual></textarea>

<p><input type="submit" name="submit" value="Send Newsletter"></p>

</form>

</BODY>
</HTML>
--------------------------------------------------------------------------------
  最后一点说明的是关于表单的动作,这个脚本叫做"do_send_mail.phtml"。脚本首先查找$subject和$newletter的值,并且如果他们的值有一个为空就重定向到表单:

--------------------------------------------------------------------------------
if (($subject =="") || ($newsletter == "")) {

header("Location: http://www.yourdomain.com/send_mail.phtml");
exit;

}--------------------------------------------------------------------------------
  接着,连接到数据库并且从订阅表中取出邮件地址:

--------------------------------------------------------------------------------
// 连接数据库
$db = mysql_connect("servername", "username", "password")
or die ("不能连接。");

mysql_select_db("yourDB", $db) or die ("不能选择数据库。");

$sql = "select email_addr from subscribers";

$res = mysql_query($sql) or die("不能得到邮件地址。");
--------------------------------------------------------------------------------
  在进入到发送邮件信息的循环之前,要建立额外的邮件头。在这里,我只用了"From:"行:

$headers = "From: \"Your Mailing List\" <you@yourdomain.com>\n";


  现在进入发送邮件的循环中。首先,使用mysql_fetch_array 函数(或同你的数据库相似的函数)将每条记录放在一个数组中。如果你取回的字段多于一个可能更有意义,我用它是因为它快。下面的语句对结果集

上一页  [1] [2] [3]  下一页