月度归档:2019年09月

dedecms织梦jquery+ajax方式提交自定义表单-可用

我们可以借助jquery ajax提交dedecms自定义表单到后台。

此例只做为参考,实际项目中根据自己的情况酌情修改。
html部分
<form action=”/plus/diy.php” enctype=”multipart/form-data” method=”post” id=”diyform”>
<input type=”hidden” name=”action” value=”post” />
<input type=”hidden” name=”diyid” value=”1″ />
<input type=”hidden” name=”do” value=”2″ />
<input type=”hidden” name=”dede_fields” value=”mail_name,text;mail_phone;mail_content,multitext” />
<input type=”hidden” name=”dede_fieldshash” value=”86d34525cf75f8652022f6446152028d” />
<input type=”hidden” name=”setup” value=”ajax” />
<div class=”mail_rdd”>
<div class=”mail_content”>
<table border=”1″ width=”100%” class=”mail_form”>
<tr>
<td width=”50″>
姓名:
</td>
<td class=”mail_input_bg1″>
<input type=”text” name=”mail_name” id=”mail_name” maxlength=”20″ />
</td>
</tr>
<tr>
<td>
电话:
</td>
<td class=”mail_input_bg1″>
<input type=”text” name=”mail_phone” id=”mail_phone” maxlength=”20″ />
</td>
</tr>
<tr style=”height:240px”>
<td>
留言:
</td>
<td class=”mail_input_bg3″>
<textarea name=”mail_content” id=”mail_content”></textarea>
</td>
</tr>
</table>
<div class=”mail_button_bar”>
<div class=”mail_button confirm” onclick=”send()”>
</div>
</div>
</div>
</div>
</form>

js部分
<script type=”text/javascript” src=”http://apps.bdimg.com/libs/jquery/1.6.4/jquery.min.js”></script>
<script>
function send() {
$.ajax({
cache: true,
type: “POST”,
url: “/plus/diy.php”,
data: $(‘#mail_form’).serialize(), // 你的form id www.lol9.cn织梦模板网
success: function(data) {
if (data == “success”) {
alert(‘发送成功!’);
} else {
alert(‘发送失败!’);
}
}
});
}
</script>

 

/plus/diy.php 修改
找到

showMsg($bkmsg,-1,0,3000);

改成
if($setup == ‘ajax’)
{
echo “success”;
exit;
}
else
{
showMsg($bkmsg,-1,0,3000);
}

织梦dedecms自定义表单通过ajax提交

分享下 通过 自定义表单通过ajax判断,提交不用跳转页面,提高用户体验。具体方法如下:
html表单代码部分,就提交按钮改成botton,,添加onclick事件

 

前端表单代码
<form action=”javascript:;” enctype=”multipart/form-data” method=”post”>
<input type=”hidden” name=”action” value=”post” />
<input type=”hidden” name=”diyid” value=”1″ />
<input type=”hidden” name=”do” value=”2″ />

<label>姓名:<input type=”text” id=”name” name=”name” value=”” /></label>
<label>电话:<input type=”text” id=”tel” name=”tel” value=”” /></label>
<label>手机:<input type=”text” id=”iphone” name=”iphone” value=”” /></label>
<label>邮箱:<input type=”text” id=”email” name=”email” value=”” /></label>
<table>
<tr>
<td valign=”top”>留言:</td>
<td><textarea id=”liuyan” name=”liuyan”></textarea></td>
</tr>
</table>
<input type=”hidden” name=”dede_fields” value=”name,textchar;tel,textchar;iphone,textchar;email,textchar;liuyan,multitext” />
<input type=”button” class=”submit fr” value=”提 交” onclick=”add_ajaxmessage()”/>
</form>

 

js代码(这个代码之前一定要引入jQuery库):

<script id=”jquery_183″ type=”text/javascript” class=”library” src=”http://code.jquery.com/jquery-1.8.3.min.js”></script>

<script>
function add_ajaxmessage(){

var name=document.getElementById(“name”);
var tel =document.getElementById(“tel”);
var iphone=document.getElementById(“iphone”);
var email=document.getElementById(“email”);
var liuyan=document.getElementById(“liuyan”);

//定义变量接收上面表单每项的值和几个dede隐藏的input的值
var dataString = ‘name=’+ name.value + ‘&tel=’ + tel.value + ‘&iphone=’ + iphone.value + ‘&email=’ + email.value + ‘&liuyan=’+ liuyan.value +’&action=post’+ ‘&diyid=1&do=2&dede_fields=name,textchar;tel,textchar;iphone,textchar;email,textchar;liuyan,multitext’;
$.ajax({
type: “POST”,
url: “/plus/diy.php”, //提交到后台文件
data: dataString, //传值
success: function(data) {

alert(data);//成功打印PHP返回的值

}
});
return false;

}

</script>

 

 

 

修改diy.php文件

找到:if(!empty($dede_fields))
{
//在里面加入判断语句,不判断也可以

if($name==””){
echo “请填写您的姓名!”;//注意:输出用echo输出,不要用showMsg();
exit();
}
}

找到:$goto = !empty($cfg_cmspath) ? $cfg_cmspath : ‘/’;
$bkmsg = ‘发布成功,请等待管理员处理…’;
这两句,改成:echo “提交成功!”;

删掉下面这一句:showmsg($bkmsg, $goto);

使用phpexcel导出到xls文件的时候出现乱码解决

<?php
include ‘global.php’;
$ids = $_GET[‘ids’];

$sql = “select * from crm_cost_end where id in ( {$ids} )”;
$result = $db->findAll($sql);
//echo $result[1][‘sn’];

//创建一个excel对象
$objPHPExcel = new PHPExcel();
// Set properties

$objPHPExcel->getProperties()->setCreator(“ctos”)
->setLastModifiedBy(“ctos”)
->setTitle(“Office 2007 XLSX Test Document”)
->setSubject(“Office 2007 XLSX Test Document”)
->setDescription(“Test document for Office 2007 XLSX, generated using PHP classes.”)
->setKeywords(“office 2007 openxml php”)
->setCategory(“Test result file”);

//set width
$objPHPExcel->getActiveSheet()->getColumnDimension(‘A’)->setWidth(8);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘B’)->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘C’)->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘D’)->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘E’)->setWidth(50);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘F’)->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘G’)->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘H’)->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘I’)->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension(‘J’)->setWidth(30); 继续阅读

dede怎么让同一篇文章在两个(或者多个)栏目显示呢

我们在用织梦建站的过程中可能会遇到要分类   根据价格  风格  模型等,我们就需要建立不同的栏目,那每个栏目下边都有很多一样的文章,重复度会很高,那么我们应该怎么办呢?不知道您在发布文章的时候是否发现有个文章副栏目的选项,通过这个我们就可以实现同一篇文章出现在多个栏目里边喽!下来我把自己的经验分享一下:

1.首先确定某一篇文章要放到哪个栏目下边

选择栏目
2.发布一篇文章 进行设置
选择副栏目
3.点击副栏目 进行选择
确定栏目

4.然后保存就可以喽

dedecms注入漏洞filter.inc.php,pm.php,mtypes.php的解决方法

补丁文件:/include/filter.inc.php

补丁来源:阿里云云盾自研

漏洞描述:dedecms的变量覆盖漏洞导致注入漏洞,/include/filter.inc.php这个文件在系统配置文件之后,里面有foreach循环创建变量,所以可以覆盖系统变量, 在/member目录的大部分文件都包含这么一个文件,也就是说/member目录的大部分文件都受此漏洞影响可以覆盖系统变量

解决方法
  1. 搜索如下代码(46行):
      1. return $svar;

    如下图:

    技术分享

  2. 修改 46 行代码,修改代码如下:
      1. return addslashes($svar);

    修改后如下图

    技术分享


补丁文件:/member/pm.php

补丁来源:阿里云云盾自研

漏洞描述:dedecms会员中心注入漏洞

解决方法
  1. 搜索如下代码(65 行):
      1. $row = $dsql->GetOne("SELECT * FROM `#@__member_pms` WHERE id=‘$id‘ AND (fromid=‘{$cfg_ml->M_ID}‘ OR toid=‘{$cfg_ml->M_ID}‘)");

    如下图:

    技术分享

  2. 在 65 行代码前,添加代码如下:
      1. $id = intval($id);

    修改后如下图

    技术分享


补丁文件:/member/mtypes.php

补丁来源:阿里云云盾自研

漏洞描述:dedecms会员中心注入漏洞

解决方法
  1. 搜索如下代码(71 行):
      1. $query = "UPDATE `#@__mtypes` SET mtypename=‘$name‘ WHERE mtypeid=‘$id‘ AND mid=‘$cfg_ml->M_ID‘";

    如下图:

    技术分享

  2. 在 71 行代码前,添加代码如下:
      1. $id = intval($id);

    修改后如下图

    技术分享