urlrule.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. defined('IN_PHPCMS') or exit('No permission resources.');
  3. pc_base::load_app_class('admin','admin',0);
  4. pc_base::load_sys_class('form','',0);
  5. class urlrule extends admin {
  6. function __construct() {
  7. parent::__construct();
  8. $this->db = pc_base::load_model('urlrule_model');
  9. $this->module_db = pc_base::load_model('module_model');
  10. }
  11. function init () {
  12. $page = intval($_GET['page']);
  13. $infos = $this->db->listinfo('','',$page);
  14. $pages = $this->db->pages;
  15. $big_menu = array('javascript:window.top.art.dialog({id:\'add\',iframe:\'?m=admin&c=urlrule&a=add\', title:\''.L('add_urlrule').'\', width:\'750\', height:\'300\', lock:true}, function(){var d = window.top.art.dialog({id:\'add\'}).data.iframe;var form = d.document.getElementById(\'dosubmit\');form.click();return false;}, function(){window.top.art.dialog({id:\'add\'}).close()});void(0);', L('add_urlrule'));
  16. $this->public_cache_urlrule();
  17. include $this->admin_tpl('urlrule_list');
  18. }
  19. function add() {
  20. if(isset($_POST['dosubmit'])) {
  21. $_POST['info']['urlrule'] = rtrim(trim($_POST['info']['urlrule']),'.php');
  22. $_POST['info']['urlrule'] = $this->url_replace($_POST['info']['urlrule']);
  23. if($this->url_ifok($_POST['info']['urlrule'])==false){
  24. showmessage('url规则里含有非法php字符');
  25. }
  26. $this->db->insert($_POST['info']);
  27. $this->public_cache_urlrule();
  28. showmessage(L('add_success'),'','','add');
  29. } else {
  30. $show_validator = $show_header = '';
  31. $modules_arr = $this->module_db->select('','module,name');
  32. $modules = array();
  33. foreach ($modules_arr as $r) {
  34. $modules[$r['module']] = $r['name'];
  35. }
  36. include $this->admin_tpl('urlrule_add');
  37. }
  38. }
  39. function delete() {
  40. $_GET['urlruleid'] = intval($_GET['urlruleid']);
  41. $this->db->delete(array('urlruleid'=>$_GET['urlruleid']));
  42. $this->public_cache_urlrule();
  43. showmessage(L('operation_success'),HTTP_REFERER);
  44. }
  45. function edit() {
  46. if(isset($_POST['dosubmit'])) {
  47. $urlruleid = intval($_POST['urlruleid']);
  48. $_POST['info']['urlrule'] = rtrim(trim($_POST['info']['urlrule']),'.php');
  49. $_POST['info']['urlrule'] = $this->url_replace($_POST['info']['urlrule']);
  50. if($this->url_ifok($_POST['info']['urlrule'])==false){
  51. showmessage('url规则里含有非法php字符');
  52. }
  53. $this->db->update($_POST['info'],array('urlruleid'=>$urlruleid));
  54. $this->public_cache_urlrule();
  55. showmessage(L('update_success'),'','','edit');
  56. } else {
  57. $show_validator = $show_header = '';
  58. $urlruleid = $_GET['urlruleid'];
  59. $r = $this->db->get_one(array('urlruleid'=>$urlruleid));
  60. extract($r);
  61. $modules_arr = $this->module_db->select('','module,name');
  62. $modules = array();
  63. foreach ($modules_arr as $r) {
  64. $modules[$r['module']] = $r['name'];
  65. }
  66. include $this->admin_tpl('urlrule_edit');
  67. }
  68. }
  69. /**
  70. * 更新URL规则
  71. */
  72. public function public_cache_urlrule() {
  73. $datas = $this->db->select('','*','','','','urlruleid');
  74. $basic_data = array();
  75. foreach($datas as $roleid=>$r) {
  76. $basic_data[$roleid] = $r['urlrule'];;
  77. }
  78. setcache('urlrules_detail',$datas,'commons');
  79. setcache('urlrules',$basic_data,'commons');
  80. }
  81. /*
  82. *url规则替换
  83. **/
  84. public function url_replace($url){
  85. $urldb = explode("|",$url);
  86. foreach($urldb as $key=>$value){
  87. if(strpos($value, "index.php") === 0){
  88. $value = str_replace('index.php','',$value);
  89. $value = str_replace('.php','',$value);
  90. $value = "index.php".$value;
  91. }else{
  92. $value = str_replace('.php','',$value);
  93. }
  94. $urldb[$key]=$value;
  95. }
  96. return implode("|",$urldb);
  97. }
  98. /*
  99. *url规则 判断。
  100. **/
  101. public function url_ifok($url){
  102. $urldb = explode("|",$url);
  103. foreach($urldb as $key=>$value){
  104. if(strpos($value, "index.php") === 0){
  105. $value = substr($value,'9');
  106. }
  107. if( stripos($value, "php") !== false){
  108. return false;
  109. }
  110. }
  111. return true;
  112. }
  113. }
  114. ?>