当前位置:首页 > 笔记 > ecms > 正文内容

帝国cms7.5免登陆火车头发布接口及http请求字段

3年前 (2022-10-26)ecms6567

帝国cms7.5免登陆火车头发布接口及http请求字段

最近在研究帝国CMS,确实非常灵活、好用,分分钟建出自己想要的网站。网站建好了,如果要采集,如何操作?

帝国cms自带了采集系统,然鹅我并没有去研究,作为一名程序员还是喜欢自己写爬虫采集。

自己写爬虫如何将文章发布到帝国cms,我们想到的无非两种方式:1、直接对数据库进行操作;2、采用http请求发布文章。

直接对数据库的话,如果采集机器和网站数据库服务器不是一台机器还需要外网连接数据库,存在一定的安全隐患,另外异地数据库操作网络延迟较高,对数据的处理稍有不慎可能会插入不完整的数据。故本篇文章主要记录第二种方式,通过http请求,调用帝国cms自己的发布函数,测试环境为帝国cms 7.5。

废话不多说,开始吧。


将免登陆发布接口放到帝国目录e/admin目录下

免登陆发布接口(复制里面的代码,保存为xxx.php文件),主要需要修改两处,第一处$password=xxxxx这里设置自己的密码,第二处if($kv['modid']=='1'),改为自己的模型id,可以查询phome_enewsmod表查看modid


V7.5发布接口utf8

<?php
/*
v7.5  
修改接口文件名并上传至网站的管理目录/e/admin/
*/
/********密码验证***********/
$password='baota.org.cn';//这个密码是登陆验证用的.您需要在模块里设置和这里一样的密码....注意一定需要修改.
if($password!=$_GET['pw']) exit('验证密码错误');//安全检测,密码不符则退出
/****以下代码非专业人员不建议修改***************/
define('EmpireCMSAdmin','1');
require("../class/connect.php");
require("../class/db_sql.php");
require("../class/functions.php");
require LoadLang("pub/fun.php");
require("../class/delpath.php");
require("../class/copypath.php");
require("../class/t_functions.php");
require("../data/dbcache/class.php");
require("../data/dbcache/MemberLevel.php");


//获取分类列表
foreach($class_r as $kv)
{
    if($kv['modid']=='1')//这个是分类所在的系统模型id,记得修改
    {
        $cates[]=array('cname'=>$kv['classname'],'cid'=>$kv['classid'],'pid'=>$kv['bclassid']);
    }
}

if(empty($_POST))
{
    //这里刷新列表
    echo "<select name='list'>";
    echo maketree($cates,0,'');
    echo '</select>';
    exit();
}
$link=db_connect();
$empire=new mysqlquery();

//验证用户
$loginin=$_POST['username'];
$lur=$empire->fetch1("select * from {$dbtbpre}enewsuser where `username`='$loginin'");
if(!$lur) exit('不存在的用户名'.$loginin);

$logininid=$lur['userid'];
$loginrnd=$lur['rnd'];
$loginlevel=$lur['groupid'];
$loginadminstyleid=$lur['adminstyleid'];

$incftp=0;
if($public_r['phpmode'])
{
    include("../class/ftp.php");
    $incftp=1;
}
require("../class/hinfofun.php");
$navtheid=(int)$_POST['filepass'];
AddNews($_POST,$logininid,$loginin);
db_close();
$empire=null;

/***生成目录的一个遍历算法***/
function maketree($ar,$id,$pre)
{
    $ids='';
    foreach($ar as $k=>$v){
        $pid=$v['pid'];
        $cname=$v['cname'];
        $cid=$v['cid'];
        if($pid==$id)
        {
            $ids.="<option value='$cid'>{$pre}{$cname}</option>";
            foreach($ar as $kk=>$vv)
            {
                $pp=$vv['pid'];
                if($pp==$cid)
                { 
                    $ids.=maketree($ar,$cid,$pre."&nbsp;&nbsp;");
                    break;
                }
            }
        }
    }
    return $ids;
}
?>

二、采集内容,通过http请求发布文章


发布地址:xxxx/e/admin/xxx.php?pw=xxxxx
请求方式:post
content-type:application/x-www-form-urlencoded

发布参数如下:

{
    "addnews2":"提交",
    "enews":"AddNews",
    "classid":4, #栏目id    "bclassid":0, #父栏目id    "id":0,
    "filepass":1604280104, #时间戳    "befrom":"",
    "username":"admin", 
    "oldchecked":1,
    "ecmsnfrom":1,
    "ecmscheck": 0,
    "havetmpic": 0,
    "title":"标题",
    "ftitle":"副标题",
    "checked":1,
    "isgood": 0,
    "firsttitle": 0,
    "keyboard":"关键字",
    "newstime":"2020-11-01 09:21:44", #发布时间    "titlepic": "标题图片地址",
    "smalltext":"简介",
    "writer":"作者",
    "newstext":"文章内容",
    "dokey": 1,
    "istop":0, 
    "newstempid":0,
    "autosize":5000,
    "groupid":0,
    "userfen":0,
    "onclick":0,
    "totaldown":0,
    "titleurl":"",
    "oldfilename":""}

三、使用postman测试

如果返回结果为栏目列表,原因是后台没有收到文章信息,检查content-type是否正确。

如果返回结果为信息提示页面,并且提示信息为“增加信息成功”,则发布文章成功。

自用

扫描二维码推送至手机访问。

版权声明:本文由蓝博发布,如需转载请注明出处。

本文链接:https://www.blueboss.cn/p/935.shtml

返回列表

没有更早的文章了...

下一篇:帝国cms 列表页分页样式修改美化

“帝国cms7.5免登陆火车头发布接口及http请求字段” 的相关文章

帝国cms 列表页分页样式修改美化

帝国cms 列表页分页样式修改美化

帝国cms 列表页分页样式修改美化...

帝国cms7.5实现tagid伪静态tag的方法

帝国cms7.5实现tagid伪静态tag的方法

1、TAGS新增tagname转tagid功能,格式:“tagname=etagid+TAGSID”,即:“tagname=etagid8”相当于“tagid=8”(/e/tags/?tagname=etagid8)。2、TAGS支持按TAGID伪静态,格式和tagname格式一样,区别是tagna...

帝国CMS7.2/7.5开启SSL后台登录空白的问题解决办法

帝国CMS7.2/7.5开启SSL后台登录空白的问题解决办法

以下方法适用帝国cms7.5版本7.5版本已经有了http和https自动识别,但是因为一些疑难杂症的原因,自动识别判断的不准,后台登录也是空白,我们可以打开e/config.php查找’httptype’=>0改为’httptype’=>2即可‘httptype’=>0, 代表自...

帝国CMS模板利用php函数sys_ResizeImg裁剪图片并且配合随机图片的用法

帝国CMS模板利用php函数sys_ResizeImg裁剪图片并且配合随机图片的用法

很多朋友使用帝国CMS的采集函数sys_ResizeImg来自动裁剪标题图片大小,那么使用这个函数的时候,如果没有图片从而使用随机图片的用法,下边我总结了几个。PHP中:<img src="<?=sys_ResizeImg($r[titlepic]?$r[titlep...

帝国CMS让信息内容编号ID从1开始的方法

帝国CMS让信息内容编号ID从1开始的方法

很多同学网上下载或者购买的源码里面默认带的有数据,给内容删除后发布新内容ID数却不是从1开始了,完美主义者就会想要解决方法了,其实很简单开始清空数据的时候就应该从数据库里清理而不是删后台内容信息。让信息ID从1开始只有一个方法,那就是清空表内容,那么ID就从1开始了。所以你在使用这个方法之前,先要确...