联系官方销售客服

1835022288

028-61286886

求助 版主:官方研发技术组
不关闭禁止跨站有什么办法解决吗
类型:迅睿CMS 更新时间:2020-12-01 18:04:21

将帮助文档中的火车头内容采集脚本移到自定义应用中,发布提示跨站禁止提交

不关闭禁止跨站有什么办法解决吗

回帖
  • 官方研发技术-袁老师
    #1楼    官方研发技术-袁老师
    2020-11-27 16:41:47
    Chrome 0
    通过api的方式提交不会触发跨站验证,后台设置里面关闭跨站验证但不推荐要发你的代码我看下给你加一个验证变量
  • 卧龙隐者
    #2楼    卧龙隐者
    2020-11-27 16:43:46
    Chrome 0
    基本和文档里的一样
    <?php namespace Phpcmf\Controllers;
    
    
    class Home extends \Phpcmf\Common
    {
        // 火车头接口
        public function huochetou() {
    		$key = '123123123';
    		$get_key = \Phpcmf\Service::L('input')->get('key');
    		if($key != $get_key){
    			echo '全局变量错误';exit;
    		}
    		$this->_module_init('news'); // news 是模块目录
    		if ($_GET['action'] == 'category') {
    			// 显示栏目
    			foreach ($this->module['category'] as $t) {
    				if ($t['child'] == 0 && $t['tid'] == 1) {
    					echo '<h1>'.$t['name'].'<=>'.$t['id'].'</h1>'.PHP_EOL;
    				}
    			}
    		} else {
    			// 入库数据
    			$data = $_REQUEST;
    			// 发布者id 1
    			$data['uid'] = 1;
    			// 发布者账号 admin
    			$data['author'] = 'admin';
    			// 主表字段
    			$fields[1] = $this->get_cache('table-'.SITE_ID, $this->content_model->dbprefix(SITE_ID.'_'.MOD_DIR));
    			$cache = $this->get_cache('table-'.SITE_ID, $this->content_model->dbprefix(SITE_ID.'_'.MOD_DIR.'_category_data'));
    			$cache && $fields[1] = array_merge($fields[1], $cache);
    			// 附表字段
    			$fields[0] = $this->get_cache('table-'.SITE_ID, $this->content_model->dbprefix(SITE_ID.'_'.MOD_DIR.'_data_0'));
    			$cache = $this->get_cache('table-'.SITE_ID, $this->content_model->dbprefix(SITE_ID.'_'.MOD_DIR.'_category_data_0'));
    			$cache && $fields[0] = array_merge($fields[0], $cache);
    			// 去重复
    			$fields[0] = array_unique($fields[0]);
    			$fields[1] = array_unique($fields[1]);
    			$save = [];
    			// 主表附表归类
    			foreach ($fields as $ismain => $field) {
    				foreach ($field as $name) {
    					isset($data[$name]) && $save[$ismain][$name] = $data[$name];
    				}
    			}
    				if (!$data['catid']) {
    					exit('栏目为空');
    				}
    			$save[1]['uid'] = $save[0]['uid'] = $data['uid'];
    			$save[1]['catid'] = $save[0]['catid'] = $data['catid'];
    			$save[1]['url'] = '';
    			$save[1]['status'] = 1; //9表示正常发布,1表示审核里面
    			$save[1]['hits'] = 0;
    			$save[1]['displayorder'] = 0;
    			$save[1]['link_id'] = 0;
    			$save[1]['inputtime'] = $save[1]['updatetime'] = SYS_TIME + rand(0, 7200);
    			$save[1]['inputip'] = '127.0.0.1';
    			// 验证标题重复
    			// if ($this->content_model->table(SITE_ID.'_'.MOD_DIR)->where('title', $save[1]['title'])->counts()) {
    			// 	echo '重复';exit;
    			// }
    			$rt = $this->content_model->save(0, $save);
    			if ($rt['code']) {
    				exit('成功');
    			} else {
    				exit('失败');
    			}
    		}
    		exit;
        }
    }
    官方研发技术-袁老师
  • 官方研发技术-袁老师
    #3楼    官方研发技术-袁老师
    2020-11-27 16:45:58
    Chrome 0
    在你这个文件顶部谢一句话
    define('IS_INSTALL', 'cf');
  • 卧龙隐者
    #4楼    卧龙隐者
    2020-11-27 16:51:37
    Chrome 0
    放到哪个位置呢
    我放在huochetou()方法和class外面就报错,放在huochetou()方法里面还是提示禁止跨站官方研发技术-袁老师
  • 官方研发技术-袁老师
    #5楼    官方研发技术-袁老师
    2020-11-27 16:52:47
    Chrome 0
    放在文件顶部

  • 卧龙隐者
    #6楼    卧龙隐者
    2020-11-27 16:55:17
    Chrome 0


    获取分类时报错官方研发技术-袁老师
  • 卧龙隐者
    #7楼    卧龙隐者
    2020-11-30 11:52:25
    Chrome 0
    我发现这个文件/dayrui/Fcms/Extend/Security.php的开头部分的if判断加上以下代码就可以了
    elseif (APP_DIR == 'myapp') {
        return $this;
    }
    变成


    但是这样就改了系统文件,还有其他办法吗
    官方研发技术-袁老师
  • 小黄人 18html
    #8楼    小黄人 18html
    2020-11-30 13:43:04
    Chrome 0
    好问题!
  • 卧龙隐者
    #9楼    卧龙隐者
    2020-11-30 15:38:58
    Chrome 0
    大佬有办法吗小黄人 18html
  • 易学习
    #10楼    易学习
    2020-11-30 15:44:42
    Chrome 0
  • 卧龙隐者
    #11楼    卧龙隐者
    2020-11-30 15:50:41
    Chrome 0
    文档里的做法就是用自定义入口,这个已经实现了
    但是这样要在几个地方新建文件,我就是想做到应用里,或者作成插件做新网站把这个应用复制过去就行这种有办法实现吗易学习
    满意答案
  • 卧龙隐者
    #12楼    卧龙隐者
    2020-12-01 18:04:21
    Chrome 0
    @卧龙隐者:貌似不好解决,还是按文档里的方式操作吧