PHPCMS留言板实现异步提交前后端修改方法

首先必须确保你是从这里下的留言版插件,飞雷神之术:http://bbs.phpcms.cn/thread-877258-1-1.html

安装好以后打开模版目录:phpcms/templates/default/guestbook/

异步提交和读取你可以选择在index、register、list_type三个模版里做都行,看你自己的需要。这里就删繁就简了。

我是直接在 index 模版文件下做的,所以添加留言板时的地址为:

http://localhost/index.php?m=guestbook&c=index

在 register 模版文件下做的,留言板地址为:

http://localhost/index.php?m=guestbook&c=index&a=register

 

前端处理部分

我把 index、register、list_type 三个都删除重新做简单点,新建index.html文件写入以下代码:

 

{template "content","header"}
<div style="width:940px;margin: 0px auto;">
<h3>留言输入框</h3><br/>
<form method="post" name="myform" id="myform">
昵称:<input type="text" id="name" name="name" placeholder="请输入昵称!">
邮箱:<input type="text" name="email" id="email" placeholder="请输入邮箱!">
<br/><br/>
<textarea  name="introduce" id="introduce" placeholder="请输入您的回复内容!"></textarea>
<a href="javascript:replysub();">提交回复</a>
</form>
这里是信息提示:<span id="show-msg" style="display: none;"></span>
<br/><br/>
<h3>留言列表</h3><br/>
{pc:guestbook action="lists" typeid="0" siteid="$siteid" page="$_GET[page]" order="desc" num="10" return="data"}
<ol id="list">
{loop $data $v}
<li>#{$v[guestid]}楼 - 昵称:{$v[name]} - 邮箱:{$v[email]} - 内容:{$v[introduce]} - 管理员神回复:{$v

此处为隐藏的内容!
发表评论并刷新,才能查看
} - </li>
{/loop}
</ol>
{$pages}
{/pc}
</div>
<script type="text/javascript">
var Msg1 = "大哥,别走,您的昵称没有填正确!";
var Msg2 = "大哥,请输入正确的邮箱号!";
var Msg3 = "大哥,来了总要写点内容吧!";
var Msg4 = "留言提交成功,感谢支持!";
var Msg5 = "参数错误,请稍后再试!";
function replysub(){
//Jq验证一下输入的信息是否正确
if ( $("#name").val()=="" || $("#name").val().length < 4 ){
animateshowmsg(Msg1);
}
else if ($("#email").val()=="" || ( $("#email").val()!="" && !/.+@.+\.[a-zA-Z]{2,4}$/.test($("#email").val()) )){
animateshowmsg(Msg2);
}
else if ( $("#introduce").val()=="" || $("#introduce").val().length < 2){
animateshowmsg(Msg3);
}
else{
$.ajax({
cache: false,
url:"{APP_PATH}index.php?m=guestbook&c=index&a=register&siteid={$siteid}",
type:"POST",
data:$("#myform").serialize(),
success: function(data) {
if(data=="error"){
animateshowmsg(Msg5);
}
else{
$("#list").find("li").eq(0).before(data);//在第一条前插入新的留言,如需审核才展示,请删除这条,就是只异步提交
//注意,如果没有一条留言,这里会添加不上,你可以再添加一个if判断
animateshowmsg(Msg4);//留言后信息提示
$("#myform input,#myform textarea").val("");//留言后清空输入框
}
}
});
}
}

function animateshowmsg(Msg){
$("#show-msg").html(Msg).fadeIn();
setTimeout(function(){
$("#show-msg").fadeOut();
}, 2000);//提示信息的时间
}
</script>
{template "content","footer"}

 

 

这样基本就成形了,前台打开 http://localhost/index.php?m=guestbook&c=index 应该是下面这样的

 

 

PHPCMS留言板实现异步提交前后端修改方法

 

 

新建一个模版文件作为新增留言读取的载体,在phpcms/templates/default/guestbook/ 下

新建show.html写入以下代码,这个文件就是显示最新的一条留言,然后用JQ把新增的最新留言读取再追加至页面。

 

{pc:guestbook action="lists" typeid="0" siteid="$siteid" page="$_GET[page]" order="desc" num="1" return="data"}
{loop $data $v}
<li>#{$v[guestid]}楼 - 昵称:{$v[name]} - 邮箱:{$v[email]} - 内容:{$v[introduce]} - 管理员神回复:{$v

此处为隐藏的内容!
发表评论并刷新,才能查看
} - </li>
{/loop}
{/pc}

 

后端处理部分

打开目录:phpcms/modules/guestbook/ index.php

大约在35行左右,修改register()整个函数为:

 

public function register() {
$siteid = SITEID;
if(isset($_POST['name'])){
/*修改原函数,再增加一层保护以防别人跳过JS验证刷留言*/
if($_POST['name']==""){
echo error;
}
else if ($_POST['email']==""){
echo error;
}
else
{
$guestbook_db = pc_base::load_model(guestbook_model);

/*添加用户数据*/
/*修改添加'passed'=>'1' 意思就是默认为已经审核 如果要审核的请去除就行*/

/*注意修改的时候这里的数据添加需要和前端的输入框,后台的数据库表一一对应,否则会报错*/
$sql = array('siteid'=>$siteid,'typeid'=>$_POST['typeid'],'name'=>$_POST['name'],'email'=>$_POST['email'],'introduce'=>$_POST['introduce'],'passed'=>'1','addtime'=>time());

$guestbook_db->insert($sql);
include template('guestbook', 'show').$_POST['data'];//添加成功直接返回刚才添加的模板show.html里的最新一条信息 简单粗暴
}
}
else {
$setting = getcache('guestbook', 'commons');
if($setting[$siteid]['is_post']=='0'){
showmessage(L('suspend_application'), HTTP_REFERER);
}
$this->type = pc_base::load_model('type_model');
$types = $this->type->get_types($siteid);//获取站点下所有留言板分类
pc_base::load_sys_class('form', '', 0);
$setting = getcache('guestbook', 'commons');
$SEO = seo(SITEID, '', L('application_guestbook'), '', '');
include template('guestbook', 'index'); //修改以防出错默认载入index模版,不改也行
}
}

 

然后就可以了。

 

PHPCMS留言板实现异步提交前后端修改方法

 

注意看代码上面的注释, 如果你要留言本分类,根据原文件修改一下typeid部分就行,没有一条留言的时候, $("#list").find("li").eq(0).before(data);// 会找不到留言列表,所以你留言一条然后刷新一下,后面就正常了。如果你实在无法忍受,你也可以增加一个if判断

var obj = $("#list").find("li");
if(obj.length >0){
$(" #list").find("li").eq(0).before(data);
}else{
$(" #list ").append(data);
};

 

 

增加留言者IP获取功能可以在 phpcms/modules/guestbook/ index.php 数据库添加的时候调用系统公共函数 $ip=ip();

然后在数据库新建好相关的表就行。如果有问题请回复!

 

觉得好的话记得打赏赞助小灰灰哦,小灰灰灰更有动力的,谢谢

小灰灰

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: