DEDECMS织梦修改标题限制长度的方法

织梦系统默认的文章标题的最大长度为60字节,即30个汉字,如果文章标题超过60字节将会自动截断,导致标题显示不全,

而现在文章标题30个汉字是远远不能满足需要的,所以我们要做的就是突破系统默认的字数限制。

首先,修改织梦后台“系统->系统基本参数->其它选项->文章标题长度”为想要的长度,例如100或255(最大值),确定保存

然后,使用phpMyAdmin修改dede_archives(如前缀修改过请自动替换)中title长度为100或255。

也可以直接在织梦后台“系统->SQL命令行工具”执行SQL语句:

alter table #@__archives change title title varchar(100)

alter table #@__archives change title title varchar(255)

linux主机下zip解压与打包命令

linux zip命令的基本用法是:
zip [参数] [打包后的文件名] [打包的目录路径]

linux zip命令参数列表:

-a 将文件转成ASCII模式
-F 尝试修复损坏的压缩文件
-h 显示帮助界面
-m 将文件压缩之后,删除源文件
-n 特定字符串 不压缩具有特定字尾字符串的文件
-o 将压缩文件内的所有文件的最新变动时间设为压缩时候的时间
-q 安静模式,在压缩的时候不显示指令的执行过程
-r 将指定的目录下的所有子目录以及文件一起处理
-S 包含系统文件和隐含文件(S是大写)
-t 日期 把压缩文件的最后修改日期设为指定的日期,日期格式为mmddyyyy

linux主机zip打包举例:

将/home/Blinux/html/ 这个目录下所有文件和文件夹打包为当前目录下的html.zip

zip –q –r html.zip /home/Blinux/html

上面的命令操作是将绝对地址的文件及文件夹进行压缩.以下给出压缩相对路径目录
比如目前在Bliux这个目录下,执行以下操作可以达到以上同样的效果.

zip –q –r html.zip html

比如现在我的html目录下,我操作的zip压缩命令是

zip –q –r html.zip *

unzip命令的基本语法是:unzip [参数] zip文件

linux主机zip解压简单例子:

把本目录下的test.zip文件解压:unzip test.zip

参数列表:

-l 列出压缩文件所包含的内容
-v 显示详细的执行过程

是不是很简单,直接解压该压缩包到当前文件,然后我们可以用命令或者FTP进行文件路径调整。一般来说,zip/unzip就用于网站文件的打包上传,以及解压和备份,能够提高我们的工作效率。

DEDE表单提交后发送指定QQ邮箱-突破限制

在做DedeCMS自定义表单发送邮箱的教程,发现大部分都是在php文件里写死固定字段内容,这样虽然也能实现自定义表单提交后发送指定邮箱,但是很不智能,华英雄 MaxWo想要一个我们自定义表单中有什么字段就发送什么字段的内容,这里就需要phpmailer来实现。

工具/原料

  • PHPMailer文件:下载地址:dede-phpemailer-qq  压缩包内有5个此功能必须的PHP文件。

方法/步骤

MAXWO就拿QQ邮箱来说明,其他邮箱(163,雅虎等邮箱方法一样):

一、登陆QQ邮箱——设置——账户,找到POP3/IMAP/SMTP,开启,现在的邮箱开启POP3/SMTP都要授权码,记下你的授权码,等一下是作为密码使用的。

1

 

开启成功后是这样的:

2

 

二、

登陆网站后台——系统——基本参数设置——核心设置,

对比MAXWO标记的内容根据自己的邮箱填写完整:

3

 

邮箱和后台都OK后,我们开始用上phpmailer。

PHPMailer项目地址:https://github.com/PHPMailer/PHPMailer 使用git命令克隆到本地,或直接在该项目页面的右下方点击“ Download ZIP ”即可获取到完整的PHPMailer代码包,再到本地解压即可。

PHPMailer需PHP的socket扩展支持,而PHPMailer链接qq域名邮箱时需要ssl加密方式,固php还得openssl的支持,可以查看phpinfo,如下两项均存在则可以使用,其中openssl版本号之类不用管;许多虚拟主机中的php是不支持openssl扩展的,那你可能就悲剧了。

4

 

由于我们下载下来的PHPMailer文件夹里边的文件有很多我们是用不上的,所以我们也没必要浪费这些内存。我们可以对这个文件夹瘦身,在这里我只保存 了以下的几个文件:class.phpmailer.php、class.phpmaileroauth.php、class.pop3.php、 class.smtp.php、PHPMailerAutoload.php把这5个php文件放到你dedecms程序plus文件夹下(上面有下载文件地址:PHPMailer文件下载)三、最后一步,打开/plus/diy.php,找到代码(大概在第93行):

$id = $dsql->GetLastID();

在它的前面一行加入代码:

//邮件发送开始
$fieldlist = $diy->getFieldList();$addvalue_ary1 = explode(‘,’, $addvalue);$addvalue_ary = array_filter($addvalue_ary1);$i = 1;foreach($fieldlist as $field=>$fielddata){ $emailbody .= $fielddata[0].’:’.$addvalue_ary[$i].'<br />’; $i ++;}global $cfg_smtp_server, $cfg_adminemail, $cfg_smtp_port, $cfg_smtp_usermail, $cfg_smtp_password, $cfg_webname, $cfg_basehost, $cfg_smtp_user;
//引入PHPMailer的核心文件 使用require_once包含避免出现PHPMailer类重复定义的警告
require_once(“class.phpmailer.php”);require_once(“class.smtp.php”);
//实例化PHPMailer核心类
$mail = new PHPMailer();
//是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式
$mail->SMTPDebug = 1;
//使用smtp鉴权方式发送邮件
$mail->isSMTP();
//smtp需要鉴权 这个必须是true
$mail->SMTPAuth=true;
//链接qq域名邮箱的服务器地址
$mail->Host = $cfg_smtp_server;
//设置使用ssl加密方式登录鉴权
$mail->SMTPSecure = ‘ssl’;
//设置ssl连接smtp服务器的远程服务器端口号,以前的默认是25,但是现在新的好像已经不可用了 可选465或587
$mail->Port = $cfg_smtp_port;
//设置smtp的helo消息头 这个可有可无 内容任意//
$mail->Helo = ‘免费开户申请’;
//设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名
$mail->Hostname = $cfg_basehost;
//设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码
$mail->CharSet = ‘UTF-8’;
//设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名
$mail->FromName = $cfg_smtp_user;
//smtp登录的账号 这里填入字符串格式的qq号即可
$mail->Username = $cfg_smtp_usermail;
//smtp登录的密码 使用生成的授权码(就刚才叫你保存的最新的授权码)
$mail->Password = $cfg_smtp_password;
//设置发件人邮箱地址 这里填入上述提到的“发件人邮箱”
$mail->From = $cfg_smtp_usermail;
//邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false
$mail->isHTML(true);
//设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 这里第二个参数的意义不大
$mail->addAddress($cfg_email,$cfg_smtp_user);
//添加多个收件人 则多次调用方法即可//
$mail->addAddress(‘77742526@QQ.COM’,’免费开户申请-在线通知’);
//添加该邮件的主题
$mail->Subject = $diy->name;
//添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 如:使用file_get_contents函数读取本地的html文件
$mail->Body = $emailbody;
if(!$mail->send()){ echo “Fail to send. <p>”; echo “Cause of the error: ” . $mail->ErrorInfo; exit;}//邮件发送结束

最后测试自定义表单提交发送QQ邮箱效果

本站站长本地,在线空间测试均成功收到提交的信息!!!100%有效!!

DEDE自定义表单数据校验垃圾信息过滤

织梦DedeCMS的自定义表单可以方便使用者进行一些诸如在线订单、在线报名、等互动应用的表单供前台用户提交操作,以便于收集、统计、分析及处理更多的数据。这里就不讲解织梦自定义表单如何制作的问题,相信这样的教程,互联网上是比较多的。 今天Maxwo 华英雄讲的Dede的自定义表单如何进行数据校验等,来提高织梦系统的安全性,并且过滤一些无聊或者别有用心的用户提交的垃圾信息。

1.前台提交数据过滤 前台数据过滤主要针对普通用户,在HTML层面,通过Js方式,对提交的数据进行校验。如判断表单是否为空、邮箱是否正确等。比如使用下面的Js代码来验证提交的内容是否为空:

<script type=”text/javascript”>function check(){var fankui=document.getElementById(‘fankui’);var names=document.getElementById(‘names’);if(fankui.value.length==0){alert(“反馈内容不能为空”);fankui.value=””;fankui.focus();return false;}if(names.value.length==0){alert(“姓名不能为空”);names.value=””;names.focus();return false;}}</script>

这是很简单的验证办法,一般情况下使用这个验证就足够了,但修改后依然会被垃圾信息骚扰,而上面的JS也仅仅是判断是否为空,表单也非常简单,随便填写几个数值就能够通过。 所以建议采用一些别的成熟的表单验证插件,如一款jquery表单验证插件Validform,可以实现更加强大的验证功能等,如是否提交的邮箱、手机等信息。 当然,这个只是前台界面的数据验证,只能防范一些不懂网站制作的用户,稍微懂些网站知识的用户,就可以绕开前台直接向系统提交数据,这就需要在提交的PHP文件中进行相应的数据校验了。

2.PHP提交数据过滤

织梦DedeCMS的自定义表单提交PHP文件是plus下的diy.php文件,所以对提交数据的校验也在这个文件中进行。比如校验用户提交的某个字段是否是手机号、邮箱等。这种校验的方法是利用正则表达式的方式,检测手机号码和邮箱,修改plus下的diy.php,再提交入库的代码前插入下面代码:

//判断手机号码是否正确if(!eregi(“^((13[0-9])|147|(15[0-35-9])|180|182|(18[5-9]))[0-9]{8}$”,$telphone)){ showMsg(‘手机号码不对,请正确填写’, ‘-1’); exit();}//验证邮箱if (!eregi(“^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$”,$email)) {showMsg(‘请您填写正确的E-Mail 地址!’, ‘-1’);exit();}

 

其中的 $telphone和$email就是提交的手机号码和邮箱值名,如果不是我设定的可以自行修改。所以这里使用的正则表达式是否正确就非常重要了,不正确的正则表达式,会造成垃圾信息提交或者正常的信息无法提交等后果

3.PHP限制用户提交次数

解决以上两个问题之后,还有一个问题,就是某些用户有意或者无意的提交了多次表单,这也会给信息收集工作带来巨大的压力,所以我们也要努力地降低这个方面的工作量。我们可以采用验证Cookies方法,达到织梦DedeCMS自定义表单限制IP24小时只能发布一次功能。 实现方法是,打开plus下diy.php文件找到以下代码:

if(!is_array($diyform)) { showmsg(‘自定义表单不存在’, ‘-1’); exit(); }

再其下添加下面的代码:

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,’/’); }

当然,经过以上的操作,织梦DedeCMS的自定义表单并不是就完全的安全了,别人还可以清空Cookies的方式继续重复提交,不过这些就不需要考虑那么多了,毕竟道高一尺魔高一丈,不可能百分百完美的

 

 

 

DEDE自定义表单DIY.PHP-添加手机、邮箱(email)验证功能的方法

打开 /plus/diy.php 文件
在提交到数据库前插入下面php代码:

//验证手机号
if(!eregi(“^13[0-9]{9}|15[0-9]{9}$”,
$tel))
{
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();
}

其中的 $tel 和 $email 就是提交的手机号和email字段名,实际使用的时候修改验证字段为你的字段即可

备注:本站站长MAXWO-华英雄-测试将代码添加到
$query = “INSERT INTO `{$diy->table}` (`id`, `ifcheck` $addvar)  VALUES (NULL, 0 $addvalue); “;
上边时可以正常使用

会员中心防止注册机注册 限制IP时间注册

方式:要解决这个问题就得在新用户注册前进行判断,此用户的IP是否已经注册过,利用会员注册的时间和现在的时间进行相比来控制同一IP注册间隔的天数哈。有两种方式:一是修改member/index_do.php,二是修改member/reg_new.php。
   第一种方式不是完美的,存在有漏洞。第二种是最完美的。现在我把有第一种方式贴出来给大家分享。

继续阅读

限制某个字段只有会员才能浏览

我在某模型里面增加了一个电话号码的字段tel,希望前台只让具有高级会员权限并且登录的用户才会显示,未登录时显示“请注册后才能显示”。这里用传递参数加SQL实现,具体方法如下:

 

1、在内容页head之间加上JS:

		<script src="{dede:global.cfg_cmsurl/}/include/dedeajax2.js" type="text/javascript" ></script>

		<script language="javascript">

		function CheckLogin_c(){

		 var taget_obj = document.getElementById('_userlogin_c');

		 var req = document.getElementById('hid').value;

		 myajax = new DedeAjax(taget_obj,false,false,'','','');

		 myajax.SendGet2("{dede:global.cfg_cmspath/}/member/ajax_loginsta_c.php?val="+req);

		 DedeXHTTP = null;

		}

		</script>

继续阅读

dede整合uEditor编辑器出现的问题

上一篇文章“整合UEDITOR”所遇到到的问题之一

 

这里我们就整合uEditor编辑器。 也许大家正在为自己的劳动沾沾自喜的时候,我即将告诉大家一个很不幸的事情,问题出现了,不相信,可以打开你的频道封面页试试你编辑的内容可不可以保存,多次测试是不能正常保存的!下面我们来解决这个问题:织梦整合uEditor编辑器频道封面页内容不能保存? 我在网站上查了很多资料有人说这样做:

当我看到网上有解决这个问题的时候,我高兴坏了,结果多次测试此方法并不适用,给了我希望,又让我失望,整个心就感觉在温暖的阳光下沐浴突然掉进了冰窟,如果非要让我用一个形容词来形容此时的心情,在此时我真想说一句:瞎鸡巴扯淡啊!

此时我们的心情都一样,试过这种方法的请一起说瞎鸡巴扯淡吧!上面方法不适用,牢记!下面我们看问题出现在什么地方!
再无身心疲惫的时候,无心却发现了问题:在catalog_add.htm 和catalog_edit.htm这2个文件中form表单位置不对

catalog_add.htm修改前:

221892818

这里我们需要把form开头部分放在 td内,修改后为:

221892932

catalog_edit.htm修改前:

221893001

catalog_edit.htm修改后:

221893040

通过上面的讲述问题才得以解决,才算完美得整合百度(uditor)编辑器!

希望大家积极测试!

DEDE整合百度(ueditor)编辑器的方法

由于织梦后台默认编辑器功能上的缺憾,使得在添加文章的时候,需要借用第三方编辑软件,对文章进行格式,然后再粘贴进织梦编辑器中。我们可以用百度的Ueditor编辑器来替换之,实现我们想要的结果。

下面是如何利用百度的(ueditor)编辑器替换dede自带的编辑器步骤:(不足之处请予以指正补充,谢谢!)

第一步:下载和织梦程序编码相对应编辑器的版本(UTF8或者GB2312);

百度搜索“百度ueditor编辑器”,然后点击进入官网,找到下载页面。找到我们想要的编辑器的版本,这点相信不要我多说了。下载下来,然后修改名称为“ueditor”,并进行打包上传到include目录下。

0bd162d9f2d3572ceced8aaa8d13632762d0c3bd

第二步:修改inc_func_funcAdmin.php文件;

打开include下的inc文件夹内的inc_func_funcAdmin.php找到184行,贴入以下代码。

else if($GLOBALS[‘cfg_html_editor’]==’ueditor’)

{

$fvalue = $fvalue==” ? ‘<p></p>’ : $fvalue;

$code = ‘<script type=”text/javascript” charset=”utf-8″

src=”/include/ueditor/ueditor.config.js”></script>

<script type=”text/javascript” charset=”utf-8″

src=”/include/ueditor/ueditor.all.js”></script>

<link rel=”stylesheet” type=”text/css”

href=”/include/ueditor/themes/default/css/ueditor.css”/>

<textarea name=”‘.$fname.'” id=”‘.$fname.'”

style=”width:100%;”>’.$fvalue.'</textarea>

<script type=”text/javascript”>var ue = new

baidu.editor.ui.Editor();ue.render(“‘.$fname.'”);</script>’;

if($gtype==”print”)

{

echo $code;

}

else

{

return $code;

}

}

如下图所示:

a044ad345982b2b795002fb236adcbef76099b2c

第三步:修改配置。请登录织梦后台修改相应的设置;

进入织梦网站后台–>系统–>系统基本参数–>核心设置–>将Html编辑器的值改为 ueditor ,然后保存。至此,编辑器已经整合成功!(下图所示)

5366d0160924ab18230bf04132fae6cd7b890ba2