帝国CMS通过AJAX后台发布信息时验证标题是否重复的方法

2021-02-1317:29:01网站建设与开发Comments2,083 views字数 3242阅读模式

帝国cms后台发信息时想验证一下标题是否存在,如果存在了可以避免出现重复的信息。下面跟着cms大学小编一起来学习一下在帝国cms中的实现方法。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/20957.html

1、帝国cms后台 - 管理数据表 - 找到自己使用的数据表 - 修改title字段 - 输入表单使用下面的代码文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/20957.html

找到代码文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/20957.html

  1. <input type=text name=title value="<?=ehtmlspecialchars(stripSlashes($r[title]))?>" size="60">

替换为文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/20957.html

  1. <input type=text name=title value="<?=ehtmlspecialchars(stripSlashes($r[title]))?>" size="60" onblur="checkTitle()">

在输入表单最下面加入如下代码文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/20957.html

  1. <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.min.js"></script>
  2. <script type="text/javascript">
  3. function checkTitle()
  4.     {
  5.                var classid=<?=$_GET[classid]?>;
  6.                var id=<?=$_GET[classid]?>;
  7.                 var tit=document.add.title.value;
  8.                 console.log("我是标题="+tit);
  9.                 console.log("我是classid="+classid);
  10.                 console.log("我是id="+id);
  11. $.ajax({
  12.             url: 'ReTitleAjax.php?classid='+classid+'&id='+id+'&title='+tit,
  13.             dataType:"json",
  14.             cache: false,
  15.                         error: function(){
  16.                 alert("检测失败,请重试");
  17.             },
  18.             success: function(data){
  19.                 if (data==1){
  20.                     alert('重复标题');
  21.                 }
  22.                 if (data==0){
  23.                     //alert('可以添加信息');
  24.                                         console.log("可以添加信息");
  25.                 }
  26.             }
  27.         });
  28.     }
  29. </script>

接着新建一个php文件,保存在 /e/admin/ReTitleAjax.php ,代码如下文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/20957.html

  1. define('EmpireCMSAdmin','1');
  2. require("../class/connect.php");
  3. require("../class/db_sql.php");
  4. require("../class/functions.php");
  5. require LoadLang("pub/fun.php");
  6. require("../data/dbcache/class.php");
  7. $link=db_connect();
  8. $empire=new mysqlquery();
  9. $editor=1;
  10. //验证用户
  11. $lur=is_login();
  12. $logininid=$lur['userid'];
  13. $loginin=$lur['username'];
  14. $loginrnd=$lur['rnd'];
  15. $loginlevel=$lur['groupid'];
  16. $loginadminstyleid=$lur['adminstyleid'];
  17. $classid=(int)$_GET['classid'];
  18. $id=(int)$_GET['id'];
  19. $title=AddAddsData($_GET['title']);
  20. $where='';
  21. if($id)
  22. {
  23. $where=' and id<>'.$id;
  24. }
  25. //已审核
  26. $num=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where title='".addslashes($title)."'".$where." limit 1");
  27. //未审核
  28. if(emptyempty($num))
  29. {
  30. $num=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_".$class_r[$classid][tbname]."_check where title='".addslashes($title)."'".$where." limit 1");
  31. }
  32. echo json_encode($num);

上面是采用post查询返回json结果的方式来实现查重,我们还可以通过get方式,js函数如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/20957.html

  1. <script type="text/javascript">
  2. function  checkTitle()
  3. {
  4.     var classid='<?=$_GET[classid]?>';
  5.     var id='<?=$_GET[id]?>';
  6.     var tit=document.add.title.value;
  7.         var answerurl='ReTitleAjax.php';
  8.         $.get(answerurl+"?classid="+classid+'<?=$ecms_hashur['ehref']?>&title='+tit, function(data){
  9.             if(data){
  10.                 if(data==1){
  11.                     $("#titletips").html("<font color='red'>已经存在此名称,请检查是否已经添加过</font>");
  12.                 }
  13.                 else{
  14.                     $("#titletips").html("<font color='green'>可以添加信息</font>");
  15.                 }
  16.                 return false;
  17.             }
  18.             else{
  19.                 $("#titletips").html("<font color='red'>检测失败,请重试</font>");
  20.             }
  21.         });
  22. }
  23. </script>

接着在title字段的input后放一个容器用于存储提示信息,例如<span id="titletips"></span>,还可以通过在出现重复时禁用其他input输入等方式来限制,这里只是给出原理,大家可在此基础上发挥。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/20957.html

注:如在帝国cms7.2版本开启金刚模式或刺猬模式下使用,需要在js函数中加入hash验证字符串,并在php处理文件中加入验证函数,否则会出现访问验证页面空白无法返回数据。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/20957.html

帝国CMS通过AJAX后台发布信息时验证标题是否重复的方法文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/20957.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/cms/20957.html

Comment

匿名网友 填写信息

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

确定