大家在做織夢做網站開發時會遇到一個問題:織夢的自定義表單是一個很雞肋的功能,不僅在后台展示得奇丑,而且也沒有提醒功能,使用起來很不方便。很多人用織夢自定義表單時,都想用戶提交表單的時候可以發送到自己的郵箱里面去提醒自己。這樣省了經常去織夢網站后台看最新的表單情況。
第一步:打開織夢后台,系統->核心參數 開啟smtp
第二步:
修改/plus/diy.php代碼。打開網站根目錄下的plus文件 夾,里面有個diy.php文件(表單提交后處理文件),打開它,在85行上下有如下代碼: $query = "INSERT INTO `{$diy->table}` (`id`, `ifcheck` $addvar) VALUES (NULL, 0 $addvalue); ";這個代碼就是將表單數據寫入數據庫,那么我們就在他下方,加上發送郵件的功能,代碼如下:
$mailtitle = "用戶訂單信息";//郵件標題 $mailbody = "稱呼:{$name}\r\n郵箱:{$email}\r\n所在城市:{$city}\r\n國家:{$guojia}\r\n電話:{$tel}\r\n類別:{$qudao}";//$name中name是該input元素的id號 $headers = $cfg_adminemail;//用我們剛才設置的管理員郵箱發送 $mailtype = 'TXT';//郵件類型為文本類型 require_once(DEDEINC.'/mail.class.php');//加載織夢的郵件庫 $smtp = new smtp($cfg_smtp_server,$cfg_smtp_port,true,$cfg_smtp_usermail,$cfg_smtp_password);//創建smtp服務 $smtp->debug = false;//不起用調試 $smtp->sendmail($cfg_smtp_usermail,$cfg_webname ,$cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype);//發送郵件
第三步:打開qq或者其他郵箱找到設置並開啟smtp
我是以新浪為例(ps:不會自行百度)
到這就完成了可以發送郵件測試了。
我測試新浪有編碼問題修改如下:
$header
.=
"Content-Type:text/html \r\n"
;修改成
到這算正式完成
但新浪還是有點小問題,出現的內容還是有編碼問題,但標題已經ok不影響使用(ps:你要知道什么問題可以告訴我在修正)
-----------------------------------------------------------------------------
新添加
自定義表單有2個或者2個以上發送郵件的方式 判斷 $diyid 來進行發送郵件
if($diyid==1){//2個以上自定義表單寫法,一個去掉if else 就行 $mailtitle = $name."--{$diy->name}";//$diy->name獲取自定義表單名稱 $mailbody = "稱呼:{$name}\r\n郵箱:{$phone}\r\n內容:{$beizhu}"; }else{ $mailtitle = $name."--{$diy->name}"; $mailbody = "郵箱:{$eml}\r\n通用:{$tong}"; } $headers = $cfg_adminemail; $mailtype = 'TXT'; require_once(DEDEINC.'/mail.class.php'); $smtp = new smtp($cfg_smtp_server,$cfg_smtp_port,true,$cfg_smtp_usermail,$cfg_smtp_password); $smtp->debug = false; $smtp->sendmail($cfg_smtp_usermail,$cfg_webname ,$cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype);
添加安全機制驗證
增加Cookies驗證,在53行下面增加 if(!is_array($diyform))
//增加Cookies驗證 if(isset($_COOKIE['VOTE_MEMBER_IP'])){ if($_COOKIE['VOTE_MEMBER_IP'] == $_SERVER['REMOTE_ADDR']){ ShowMsg('您已經填寫過表單啦','-1'); exit(); }else{ setcookie('VOTE_MEMBER_IP',$_SERVER['REMOTE_ADDR'],time()*$row['spec']*3600,'/'); } }else{ setcookie('VOTE_MEMBER_IP',$_SERVER['REMOTE_ADDR'],time()*$row['spec']*3600,'/'); }
增加 php 正則驗證 對於不懂的來說在頁面中增加js判斷驗證就可以,但對於懂行的來說有n種方法跳過,最好就是增加數據庫寫入之前在驗證一次
搜索 $query = "INSERT INTO `{$diy->table}` (`id`, `ifcheck` $addvar) VALUES (NULL, 0 $addvalue); ";在這個的上面添加就行
//添加php驗證,其中的 $phone 和 $email 就是提交的手機號和email字段名,實際使用的時候修改驗證字段為你的字段即可 //驗證手機號 if(!eregi("^13[0-9]{9}|15[0-9]{9}$",$phone)){ showMsg('手機號不對,請正確填寫', '-1'); exit(); } //驗證email if (!eregi("^[_\.0-9a-z-]+@([0-9a-z]+[0-9a-z-]+\.)+[a-z]{2,3}$",$email)) { showMsg('請您填寫正確的E-Mail 地址!', '-1'); exit(); }
收集的網址
https://9iphp.com/opensystem/dede/871.html
https://blog.csdn.net/shuanghusun/article/details/52070993
https://9iphp.com/opensystem/dede/1054.html
http://www.szlikun.cn/news/jishufenxiang/article-246.html
http://www.zuimoban.com/php/dedecms/8456.html