首页 > php教程 > php手册 > 正文

phpmailer重复提交的有关问题

php中文网
发布: 2016-06-06 19:42:57
原创
1006人浏览过

phpmailer重复提交的问题。 http://blog.csdn.net/daydreamingboy/article/details/6299495 我要把某个页面的表单以邮件的形式用PHPMailer发送到指定邮箱,怕有人重复提交,不知道有没有这方面的专家啊? ?php if(isset($_POST['submitted'])){ require('PHPM

phpmailer重复提交的问题。
http://blog.csdn.net/daydreamingboy/article/details/6299495

我要把某个页面的表单以邮件的形式用PHPMailer发送到指定邮箱,怕有人重复提交,不知道有没有这方面的专家啊?
<?php<br />
if (isset($_POST['submitted'])) {<br />
	require('PHPMailer/class.phpmailer.php');<br />
<br />
	$mail = new PHPMailer();<br />
	//不包含表单验证<br />
	if (!empty($_POST['contact']) && !empty($_POST['subject']) &&<br />
		 !empty($_【本文来自鸿网互联 (http://www.68idc.cn)】POST['content']) && !empty($_POST['from'])) {<br />
		$address = $_POST['contact'];<br />
		$mail->Subject = $_POST['subject'];<br />
		$mail->Body = $_POST['content'];<br />
		$mail->FromName = $_POST['from'];<br />
	} else {<br />
		echo '<p><font color="red">请全部填写完整!</font></p>';<br />
		exit();<br />
	}<br />
	$mail->IsSMTP();<br />
	$mail->Host = "smtp.163.com";<br />
	$mail->SMTPAuth = true;<br />
	$mail->Username = "your_mail@163.com";<br />
	$mail->Password = "your_password";<br />
	$mail->Port = 25;<br />
	$mail->From = " your_mail@163.com";<br />
	$mail->AddAddress("$address", "my friend");<br />
<br />
	if (!$mail->Send()) {<br />
		echo "<br /><font color='red'>邮件发送失败!</font><br />";<br />
		echo "错误原因: " .$mail->ErrorInfo;<br />
		exit();<br />
	} else {<br />
		echo "<br /><font color='green'>邮件发送成功!</font><br />";<br />
	}<br />
}<br />
?>
登录后复制


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"<br />
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br />
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><br />
<head><br />
	<meta http-equiv="content-type" content="text/html; charset=GBK" /><br />
	<title>使用PHPMailer发送邮件</title><br />
</head><br />
<body style="text-align: center"><br />
<br />
<form action="mail.php" method="post"><br />
	<p>联系人Email: <input name="contact" type="text" /></p><br />
	<p>发件人昵称: <input name="from" type="text" /></p><br />
	<p>主题: <input name="subject" type="text" /></p><br />
	<p>内容: <textarea name="content" rows="10" cols="25"><br />
	<p><input type="submit" value="发送" /></p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/7fc7563c4182" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">PHP免费学习笔记(深入)</a>”;</p><br />
	<input name="submitted" type="hidden" value="TRUE" /><br />
</form><br />
<br />
</body><br />
</html>
登录后复制

------解决思路----------------------
提交过的用数据库记录,再提交时,根据email地址判断是否重复。
------解决思路----------------------
session_start();<br />
$key = md5(serialize($_POST));<br />
if(empty($_SESSION['last'])) $_SESSION['last'] = $key;<br />
else if($_SESSION['last'] == $key) die('不能重复发送');<br />
//发送邮件
登录后复制

1、不能仅使 提交按钮 失效,因为用户可能需要发送多封邮件。何况普通的表单提交会产生新页,并不会被失效
2、不能仅从目标邮箱判断,向一个邮箱发送多封邮件是很常见的事情
3、只有在两次提交的内容完全相同时,才能视为重复
豆包AI编程
豆包AI编程

智能代码生成与优化,高效提升开发速度与质量!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号