更多



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

郝聪 , 2018/01/15 18:14 , 建站优化 , 评论(0) , 阅读(5576) , Via 本站原创 | |

1.后台-》管理数据表-》找到title字段-》输入表单替换html代码

XML/HTML代码
    ????
  1. <input type=text name=title value="" size="60">????

替换为

XML/HTML代码
    ????
  1. <input type=text name=title value="" size="60" onblur="checkTitle()">??

然后再输入表单最下面添加如下代码

XML/HTML代码
    ????
  1. ??
  2. ????
  3. <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.min.js">script>
  4. ????
  5. <script type="text/javascript" src="/js/jquery-1.7.2.min.js">script> //修改为自己的JQ库地址
  6. ????
  7. <script type="text/javascript">??
  8. ????
  9. function checkTitle()??
  10. ????
  11. ????{??
  12. ????
  13. ????????var classid='';??
  14. ????
  15. ????????var id='';??
  16. ????
  17. ????????var tit=document.add.title.value;??
  18. ????
  19. ????????console.log("我是标题="+tit);??
  20. ????
  21. ????????console.log("我是classid="+classid);??
  22. ????
  23. ????????console.log("我是id="+id);??
  24. ????
  25. ????????$.ajax({??
  26. ????
  27. ????????????url: 'ReTitleAjax.php?classid='+classid+'&id='+id+'&title='+tit,??
  28. ????
  29. ????????????dataType:"json",??
  30. ????
  31. ????????????cache: false,??
  32. ????
  33. ????????????error: function(){??
  34. ????
  35. ????????????????alert("检测失败,请重试");??
  36. ????
  37. ????????????},??
  38. ????
  39. ????????????success: function(data){??
  40. ????
  41. ????????????????if (data==1){??
  42. ????
  43. ????????????????????alert('重复标题');??
  44. ????
  45. ????????????????}??
  46. ????
  47. ????????????????if (data==0){??
  48. ????
  49. ????????????????????//alert('可以添加信息');??
  50. ????
  51. ????????????????????console.log("可以添加信息");??
  52. ????
  53. ????????????????}??
  54. ????
  55. ????????????}??
  56. ????
  57. ????????});??
  58. ????
  59. ????}??
  60. ????
  61. script>??

接着新建一个php文件,保存在 /e/admin/ReTitleAjax.php ,代码如下

XML/HTML代码
    ????
  1. ????
  2. define('EmpireCMSAdmin','1');????
  3. ????
  4. require("../class/connect.php");????
  5. ????
  6. require("../class/db_sql.php");????
  7. ????
  8. require("../class/functions.php");????
  9. ????
  10. require LoadLang("pub/fun.php");????
  11. ????
  12. require("../data/dbcache/class.php");????
  13. ????
  14. $link=db_connect();????
  15. ????
  16. $empire=new mysqlquery();????
  17. ????
  18. $editor=1;????
  19. ????
  20. //验证用户????
  21. ????
  22. $lur=is_login();????
  23. ????
  24. $logininid=$lur['userid'];????
  25. ????
  26. $loginin=$lur['username'];????
  27. ????
  28. $loginrnd=$lur['rnd'];????
  29. ????
  30. $loginlevel=$lur['groupid'];????
  31. ????
  32. $loginadminstyleid=$lur['adminstyleid'];????
  33. ????
  34. ????
  35. ????
  36. $classid=(int)$_GET['classid'];????
  37. ????
  38. $id=(int)$_GET['id'];????
  39. ????
  40. $title=AddAddsData($_GET['title']);????
  41. ????
  42. $where='';????
  43. ????
  44. if($id)????
  45. ????
  46. {????
  47. ????
  48. $where=' and id<>'.$id;????
  49. ????
  50. }????
  51. ????
  52. //已审核????
  53. ????
  54. $num=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where title='".addslashes($title)."'".$where." limit 1");????
  55. ????
  56. //未审核????
  57. ????
  58. if(emptyempty($num))????
  59. ????
  60. {????
  61. ????
  62. $num=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_".$class_r[$classid][tbname]."_check where title='".addslashes($title)."'".$where." limit 1");????
  63. ????
  64. }????
  65. ????
  66. echo json_encode($num);
    ????
  67. ????
  68. ?>

上面是采用post查询返回json结果的方式来实现查重,我们还可以通过get方式,js函数如下:

XML/HTML代码
    ????
  1. <script type="text/javascript">????
  2. ????
  3. function??checkTitle()??
  4. ????
  5. {????
  6. ????
  7. ????var classid='';????
  8. ????
  9. ????var id='';????
  10. ????
  11. ????var tit=document.add.title.value;????
  12. ????
  13. ????????var answerurl='ReTitleAjax.php';????
  14. ????
  15. ????????$.get(answerurl+"?classid="+classid+'=$ecms_hashur['ehref']?>&title='+tit, function(data){????
  16. ????
  17. ????????????if(data){????
  18. ????
  19. ????????????????if(data==1){????
  20. ????
  21. ????????????????????$("#titletips").html("<font color='red'>已经存在此名称,请检查是否已经添加过font>");????
  22. ????
  23. ????????????????}????
  24. ????
  25. ????????????????else{????
  26. ????
  27. ????????????????????$("#titletips").html("<font color='green'>可以添加信息font>");????
  28. ????
  29. ????????????????}????
  30. ????
  31. ????????????????return false;????
  32. ????
  33. ????????????}????
  34. ????
  35. ????????????else{????
  36. ????
  37. ????????????????$("#titletips").html("<font color='red'>检测失败,请重试font>");????
  38. ????
  39. ????????????}????
  40. ????
  41. ????????});??????
  42. ????
  43. }????
  44. ????
  45. script>????

接着在title字段的input后放一个容器用于存储提示信息,例如,还可以通过在出现重复时禁用其他input输入等方式来限制,这里只是给出原理,大家可在此基础上发挥。

注:如在帝国cms7.2版本开启金刚模式或刺猬模式下使用,需要在js函数中加入hash验证字符串,并在php处理文件中加入验证函数,否则会出现访问验证页面空白无法返回数据。

?


最后编辑: 郝聪 编辑于2018/01/15 18:22
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]

?