分类: 技术

  • WP AutoPost pro3.2破解版下载——最好用的WordPress采集插件免费下载,支持wp5.3版本

    WP AutoPost pro3.2破解版下载——最好用的WordPress采集插件免费下载,支持wp5.3版本

    WP-AutoPost 是一款最适合wordpress的采集插件,完美的支持wp的各个版本,即使是wordpress最新版本5.3.2也是支持的,小编亲测可用。在网上还有许多其他版本的破解版,但使用后发现,还是wp autopost pro3.2最为稳定,因此推荐给大家。

    注:因为是破解版,在无人值守采集大概一个月后,小编发现采集不到文章了,经研究,只要点击“选项-重置 ” 即可恢复正常。

    功能描述:

    一键安装,全自动采集更新,无需人工干预WP-AutoPost安装十分简单方便,只需几分钟,立即开始自动采集更新您的网站,而且结合开源的wordpress程序,新手也能快速上手,根据所设定的采集方式采集网址,然后自动抓取网页内容,检测文章是否重复,导入更新文章,这一切操作程序都是全自动完成,无需人工干预。而且我们还有专门的客服为商业客户提供技术支持。


    定向采集,支持通配符,CSS选择器等多种方式精确采集任何内容定向采集只需要提供文章列表URL即可智能采集来自于任何网站或栏目的内容,方便简单,设置简单的规则便可精确采集标题、正文及其他任何内容。


    完美支持wordpress各种功能,可自动设置分类目录、标签、摘要、特色图片,支持自定义栏目、自定义文章类型等完美支持Wordpress各种特色功能,可选择发布到的分类目录,自动添加标签,自动生成摘要,自动设置特色图片。支持自定义文章类型,自定义分类、文章形式。甚至可抓取任意内容添加到“Wordpress自定义栏目”,方便扩展。


    注:破解版的autopost的伪原创及翻译功能不能用,其他功能均支持可用。


    可下载远程图片及其他任意格式附件到本地服务器,并支持添加水印支持远程图片下载到本地服务器,并可选择自动添加上文本水印或图像水印。其他任何格式的附件及文档也能轻松下载到本地服务器。


    可下载远程图片及其他任意格式附件到本地服务器,并支持添加水印支持将图片上传到Flick,节省带宽及空间,提高网站访问速度将采集图片上传到Flick,1TB的超大免费存储空间,节省带宽及空间,提高网站访问速度,适合面向国外用户的网站。


    支持将图片上传到七牛云存储,节省带宽及空间,提高网站访问速度将采集图片上传到七牛云存储,10GB的免费存储空间,节省带宽及空间,提高网站访问速度,适合面向中国大陆用户的网站。

    支持将图片上传到又拍云存储,节省带宽及空间,提高网站访问速度将采集图片上传到又拍云存储,节省带宽及空间,提高网站访问速度,适合面向中国大陆用户的网站。


    支持SEO优化,内容过滤,HTML标签过滤,关键词替换,自动添加链接,添加自定义内容,自定义文章样式自动删除采集内容中的HTML注释及其他不必要内容,自动给图片添加上Alt属性,过滤链接,关键词替换,自定义添加链接这些都有利于SEO。并支持内容过滤,过滤采集内容中不希望发布的内容(如广告代码,文章来源,版权等信息),甚至可以在文章任意位置添加上自定义内容,也可以自定义文章样式。

  • 一起名PHP付费起名网源码系统

    一起名PHP付费起名网源码系统

    专业开发的起名测名管理系统,以PHP+MYSQL架构,让系统更畅快稳定。

    目前市面上类似系统众多,多数为随机或固定生成名字,非严格意义上专业起名系统。本系统集成宝宝起名测名、公司起名测名、店铺起名测名、大师在线接单、CMS文章系统于一体,多种应用场景集成微信、支付宝官方支付接口,并以18种独家算法、百万级数据、超强的管理后台以源代码的形式交付,所有数据本地化非API,更加符合您的发展规划!专业商用起名源码,全网独此一家。

    宝宝起名软件源码

    以生辰八字喜用神为基础,通过20余种精确算法,并与古典文学唐诗、宋词、论语、楚辞、成语相融合。让名字吉祥、好听、更富内涵!

    公司起名软件源码

    结合行业五行属性和法人姓名、八字,通过AI智能分析行业频率及吉祥财富度,让名字轻松通过工商核名

    店铺起名软件源码

    运用全国6000万店铺名字大数据,结合行业五行属性和老板姓名、八字,通过AI智能分析行业频率及吉祥财富度,结合行业起名规范、国学文化及过滤重名

    包含算法

    名字生成双套算法、独有喜神算法、诗经匹配算法、五行算法、周易64卦算法、星座算法、生肖算法、三才五格算法、马派测名算法、 五行强弱算法、声调和结构分析、断易天机算法、周易用字分析

    后台亮点功能

    [控制台]支付数据统计汇总

    [系统配置]起名测名价格配置、代理佣金配置、站点资料配置、支付配置

    [管理员配置]管理员增加修改删除

    [CMS管理]文章内容增加修改删除

    [行业管理]公司店铺行业管理

    [数据源管理](新增数据一键导入)汉字库管理、诗经数据管理、生肖用字库、宝宝名字库

    [专家起名管理]套餐管理、订单管理、方案回复

    [智能订单管理]订单明细管理

    [代理商管理]增加、修改、删除;充值套餐管理、提现申请管理

    值得信赖的起名行业解决方案

    一起名信息科技有限公司、专注于起名测算类网站平台的开发,我们只做这一件事。

    提供数据更加精细准确化、运营更加便捷的管理系统。

    版本价格/说明
    源码+数据3599元(谢绝还价),授权域名或IP,部分代码加密。
    地址演示:https://qm.615a.com
    附加功能500元,包含(八字精批、事业财运、八字合婚、姓名详批、综合分析、紫微斗数、塔罗占卜)

    所有功能完整,后期免费更新。接受二次定制开发。可打包APP

    购买联系:7350292 微信号:qiming8891

    联系电话:181-55946851

  • 黑客帝国屏保源码

    黑客帝国屏保源码

    黑客帝国屏幕保护设置

    1. 打开VS2010或以上版本,新建—>项目,Visual C++,win32,选择win32控制台应用程序,名称填写为”hacker”。

    2. 将一下代码复制到项目源文件中

    黑客帝国屏保源码

    //数字流星雨   作者:Wicrecend
    #include "stdafx.h"
    #include <windows.h>
     
    #define ID_TIMER    1 
    #define STRMAXLEN  25 //一个显示列的最大长度 
    #define STRMINLEN  8  //一个显示列的最小长度
     
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; 
    ////////////////////////////////////////////////////////////////// 
    ////////////////////////////////////////////////////////////////// 
    typedef struct tagCharChain //整个当作屏幕的一个显示列,这是个双向列表 
    { 
            struct tagCharChain *prev; //链表的前个元素 
            TCHAR  ch;                  //一个显示列中的一个字符 
            struct tagCharChain *next; //链表的后个元素 
    }CharChain, *pCharChain;
     
    typedef struct tagCharColumn 
    { 
            CharChain *head, *current, *point; 
            int x, y, iStrLen; //显示列的开始显示的x,y坐标,iStrLen是这个列的长度 
            int iStopTimes, iMustStopTimes; //已经停滞的次数和必须停滞的次数,必须停滞的次数是随机的 
    }CharColumn, *pCharColumn;
     
    int main(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                        PSTR szCmdLine, int iCmdShow) 
    { 
            static TCHAR szAppName[] = TEXT ("matrix") ; 
            HWND            hwnd ; 
            MSG            msg ; 
            WNDCLASS    wndclass ;
     
            wndclass.style                = CS_HREDRAW | CS_VREDRAW ; 
            wndclass.lpfnWndProc        = WndProc ; 
            wndclass.cbClsExtra        = 0 ; 
            wndclass.cbWndExtra        = 0 ; 
            wndclass.hInstance        = hInstance ;
     
    wndclass.hIcon                = LoadIcon (NULL, IDI_APPLICATION) ; 
            wndclass.hCursor        = LoadCursor (NULL, IDC_ARROW) ; 
            wndclass.hbrBackground        = (HBRUSH) GetStockObject (BLACK_BRUSH) ; 
            wndclass.lpszMenuName        = NULL ; 
            wndclass.lpszClassName        = szAppName ;
     
            if(!RegisterClass (&wndclass)) 
            { 
                MessageBox (NULL, TEXT ("此程序必须运行在NT下!"), szAppName, MB_ICONERROR) ; 
                return 0; 
            }
     
            hwnd = CreateWindow (szAppName, NULL, 
                                WS_DLGFRAME | WS_THICKFRAME | WS_POPUP, 
                                0, 0, 
                                GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), 
                                NULL, NULL, hInstance, 
                                NULL) ;
     
            ShowWindow (hwnd, SW_SHOWMAXIMIZED) ; //最大化显示 
            UpdateWindow (hwnd) ; 
            ShowCursor(FALSE); //隐藏鼠标光标 
              
            srand ((int) GetCurrentTime ()) ; //初始化随机数发生器 
            while (GetMessage (&msg, NULL, 0, 0)) 
      { 
                TranslateMessage (&msg) ; 
                DispatchMessage (&msg) ; 
            } 
            ShowCursor(TRUE); //显示鼠标光标 
            return msg.wParam ; 
    }
     
    TCHAR randomChar() //随机字符产生函数 
    { 
            return (TCHAR)(rand()%(126-33)+33); //33到126之间 
    }
     
    int init(CharColumn *cc, int cyScreen, int x) //初始化 
    { 
            int j; 
            cc->iStrLen = rand()%(STRMAXLEN-STRMINLEN) + STRMINLEN; //显示列的长度 
            cc->x = x+3 ;        //显示列的开始显示的x坐标 
            cc->y =rand()%3?rand()%cyScreen:0; //显示列的开始显示的y坐标 
            cc->iMustStopTimes = rand()%6 ; 
            cc->iStopTimes    = 0 ; 
            cc->head = cc->current = 
                            (pCharChain)calloc(cc->iStrLen, sizeof(CharChain)); //生成显示列 
            for(j=0; j<cc->iStrLen-1; j++) 
            { 
                    cc->current->prev = cc->point; //cc->point一个显示列的前个元素 
                    cc->current->ch  = ''; 
                    cc->current->next = cc->current+1; //cc->current+1一个显示列的后个元素 
                    cc->point          = cc->current++; //cc->point = cc->current; cc->current++; 
            } 
            cc->current->prev = cc->point; //最后一个节点 
            cc->current->ch  = ''; 
            cc->current->next = cc->head; 
      cc->head->prev    = cc->current; //头节点的前一个为此链的最后一个元素
     
            cc->current = cc->point = cc->head; //free掉申请的内存要用current当参数 
            cc->head->ch = randomChar(); // 对链表头的 元素填充 
            return 0; 
    }
     
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 
    { 
          HDC          hdc ; 
          //ctn 用来确定一个显示链是否 向下前进,如果等待次数超过必须等待的次数,ctn就代表要向下前进 
          int i, j, temp, ctn; //j为一个显示链中除链表头外的在屏幕上显示的y坐标,temp绿色过度到黑色之用 
          static  HDC hdcMem; 
          HFONT    hFont; 
          static  HBITMAP hBitmap; 
          static  int cxScreen, cyScreen; //屏幕的宽度 高度. 
          static  int iFontWidth=10, iFontHeight=15, iColumnCount; //字体的宽度 高度, 列数 
          static  CharColumn *ccChain;
     
          switch (message) 
          { 
            case WM_CREATE: 
                cxScreen = GetSystemMetrics(SM_CXSCREEN) ; //屏幕宽度 
                cyScreen = GetSystemMetrics(SM_CYSCREEN) ; 
                SetTimer (hwnd, ID_TIMER, 10, NULL) ;
     
                hdc = GetDC(hwnd); 
                hdcMem = CreateCompatibleDC(hdc); 
                hBitmap = CreateCompatibleBitmap(hdc, cxScreen, cyScreen); 
                SelectObject(hdcMem, hBitmap); 
                ReleaseDC(hwnd, hdc); 
                //创建字体 
                hFont = CreateFont(iFontHeight, iFontWidth-5, 0, 0, FW_BOLD, 0, 0, 0, 
      DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, 
                                    DRAFT_QUALITY, FIXED_PITCH | FF_SWISS, TEXT("Fixedsys")); 
                SelectObject(hdcMem, hFont); 
                DeleteObject (hFont) ; 
                SetBkMode(hdcMem, TRANSPARENT); //设置背景模式为 透明 
                iColumnCount = cxScreen/(iFontWidth*3/2); //屏幕所显示字母雨的列数
     
                ccChain = (pCharColumn)calloc(iColumnCount, sizeof(CharColumn)); 
                for(i=0; i<iColumnCount; i++) 
                { 
                    init(ccChain+i, cyScreen, (iFontWidth*3/2)*i); 
                } 
                return 0 ;
     
            case WM_TIMER: 
                hdc = GetDC(hwnd); 
                PatBlt (hdcMem, 0, 0, cxScreen, cyScreen, BLACKNESS) ; //将内存设备映像刷成黑色 
                for(i=0; i<iColumnCount; i++) 
                { 
                    ctn = (ccChain+i)->iStopTimes++ > (ccChain+i)->iMustStopTimes; 
                    // 
                    (ccChain+i)->point = (ccChain+i)->head; //point用于遍历整个显示列 
                      
                    //第一个字符显示为 白色 
                    SetTextColor(hdcMem, RGB(255, 255, 255)); 
      TextOut(hdcMem, (ccChain+i)->x, (ccChain+i)->y, &((ccChain+i)->point->ch), 1); 
                    j = (ccChain+i)->y;  
                    (ccChain+i)->point = (ccChain+i)->point->next; 
                    //遍历整个显示列,将这个显示列里的字符从下往上显示 
                    temp = 0 ; //temp绿色过度到黑色之用 
                    while((ccChain+i)->point != (ccChain+i)->head && (ccChain+i)->point->ch) 
                    { 
                            SetTextColor(hdcMem, RGB(0, 255-(255*(temp++)/(ccChain+i)->iStrLen), 0)); 
                            TextOut(hdcMem, (ccChain+i)->x, j-=iFontHeight, &((ccChain+i)->point->ch), 1); 
                            (ccChain+i)->point = (ccChain+i)->point->next; 
                    } 
                    if(ctn) 
                        (ccChain+i)->iStopTimes = 0 ; 
                    else continue; 
                    (ccChain+i)->y += iFontHeight; //下次开始显示的y坐标 为当前的y坐标加上 一个字符的高度 
                    //如果开始显示的y坐标减去 整个显示列的长度超过了屏幕的高度 
                    if( (ccChain+i)->y-(ccChain+i)->iStrLen*iFontHeight > cyScreen) 
                    { 
                            free( (ccChain+i)->current ); 
    init(ccChain+i, cyScreen, (iFontWidth*3/2)*i); 
                    } 
                    //链表的头 为此链表的前个元素,因为下次开始显示的时候 就相当与在整个显示列的开头添加个元素,然后在开始往上显示 
                    (ccChain+i)->head = (ccChain+i)->head->prev; 
                    (ccChain+i)->head->ch = randomChar(); 
                } 
                  
                BitBlt(hdc, 0, 0, cxScreen, cyScreen, hdcMem, 0, 0, SRCCOPY); 
                ReleaseDC(hwnd, hdc); 
                return 0;
     
            case WM_RBUTTONDOWN: 
                KillTimer (hwnd, ID_TIMER) ; 
                return 0;
     
            case WM_RBUTTONUP: 
                SetTimer (hwnd, ID_TIMER, 10, NULL) ; 
                return 0;
     
            //处理善后工作 
            case WM_KEYDOWN: 
            case WM_LBUTTONDOWN: 
            case WM_DESTROY: 
                KillTimer (hwnd, ID_TIMER) ; 
                DeleteObject(hBitmap); 
                DeleteDC(hdcMem); 
                for(i=0; i<iColumnCount; i++) 
                { 
                    free( (ccChain+i)->current ); 
                } 
                free(ccChain); 
                PostQuitMessage (0) ; 
                return 0 ; 
            } 
            return DefWindowProc (hwnd, message, wParam, lParam) ; 
    }

    3. 编译项目工程

    4. 找到生成的exe文件,将exe后缀改为scr(hacker.exe->hacker.scr)

    5. 将文件hacker.scr拷贝到C:WindowsSystem32下

    6. 鼠标移到桌面,右击,选择个性化,屏幕保护程序,选择hacker。

    属于自己的黑客帝国屏幕保护程序就设置成功了!

  • 魔众工具箱系统

    魔众工具箱系统

    简单方便、干净整洁、全面完整的在线工具最新版本:v2.7.0 最新发布:2022-04-05

    在线演示 Demos多端支持,助力创业者实现精细化运营及成功

    PC端演示站https://tools.demo.tecmz.com

    后台管理演示https://tools.demo.tecmz.com/admin用户demo 密码123456

  • 开源 Android GNSS/GPS 测试程序

    开源 Android GNSS/GPS 测试程序

    GPS测试:排名第一的开源全球导航卫星系统 (GNSS) 测试应用程序。

    安装

    https://github.com/barbeau/gpstest

    特征

    它支持双频¹ GNSS,用于:

    • GPS(美国导航星)
    • 格洛纳斯(俄罗斯)
    • QZSS(日本)
    • 北斗/COMPASS(中国)
    • 伽利略(欧盟)
    • IRNSS/NavIC(印度)
    • 各种星基增强系统(SBAS):
      • 广域增强系统 (WAAS)(美国)
      • 欧洲地球同步导航覆盖服务 (EGNOS)(欧盟)
      • GPS 辅助 GEO 增强导航 (GAGAN)(印度)
      • 多功能卫星增强系统(MSAS)(日本)
      • 差分校正和监测系统 (SDCM)(俄罗斯)
      • 卫星导航增强系统(SNAS)(中国)
      • Solución de Aumentación para Caribe, Centro y Sudamérica (SACCSA) (ICAO)

    ¹双频 GNSS 需要设备硬件支持和 Android 8.0 Oreo 或更高版本。

    截图

    如下所示:

  • chinese-poetry: 最全中文诗歌古典文集数据库

    chinese-poetry: 最全中文诗歌古典文集数据库

    最全的中华古典文集数据库,包含 5.5 万首唐诗、26 万首宋诗、2.1 万首宋词和其他古典文集。诗人包括唐宋两朝近 1.4 万古诗人,和两宋时期 1.5 千古词人。数据来源于互联网。

    为什么要做这个仓库? 古诗是中华民族乃至全世界的瑰宝,我们应该传承下去,虽然有古典文集,但大多数人并没有拥有这些书籍。从某种意义上来说,这些庞大的文集离我们是有一定距离的。而电子版方便拷贝,所以此开源数据库诞生了。此数据库通过 JSON 格式分发,可以让你很方便的开始你的项目。

    古诗采集没有记录过程,因为古诗数据庞大,目标网站有限制,采集过程经常中断超过了一个星期。2017 年新加入全宋词,全宋词爬取过程及数据分析。。


    高频词分析图

    宋词受欢迎的词牌名

    两宋喜欢的词牌名

    宋词高频词宋词作者作品榜唐诗高频词唐诗作者作品榜宋诗高频词宋诗作者作品榜

    数据集

    • 全唐诗 json
    • 全宋诗 json
    • 全宋词 ci
    • 五代·花间集 wudai/huajianji
    • 五代·南唐二主词 wudai/nantan
    • 论语 lunyu
    • 诗经 shijing
    • 幽梦影 youmengying
    • 四书五经 sishuwujing
    • 蒙學 mengxue

    贡献

    本项目目的是借助技术来生成格式化(JSON)数据,让开发者更方便快速的构建诗词类应用程序。身单力薄,欢迎更多人来维护,你可以通过以下方法来参与贡献:

    贡献者

    Contributors

    案例展示

    案例展示

  • 基于Uni-app+FastAdmin开发的应用插件!

    基于Uni-app+FastAdmin开发的应用插件!

    基于Uni-app+FastAdmin开发的应用插件!

    官方主站:https://www.fastadmin.net/uniapp.html

  • php实现域名授权破解的两种方法

    php实现域名授权破解的两种方法

    01. 在线校验域名授权的方法:

    客户端代码:

    <?php
     
    //获取不带端口号的域名前缀
     
    $servername = trim($_SERVER['SERVER_NAME']);
     
    //获取服务端授权文件校验
     
    $verifyurl = file_get_contents('http://www.xxxxxx.com/zb_users/upload/copyright.php?domain='.$servername);
     
    if(!empty($verifyurl)){
     
    echo "已授权!"; //授权成功
     
    }else{
     
    die("未授权!"); //授权失败
     
    }
     
    ?>

    服务端代码:

    <?php
     
    //获取域名
     
    $domain = $_GET['domain'];
     
    //授权域名列表
     
    $Array = array('127.0.0.1','localhost');
     
    //校验结果
     
    echo in_array($domain, $Array) ? 'yes' : '';
     
    ?>

    域名授权代码可封装进函数,或者进行加密,对于常用的php加密形式,都有其破解的方法,比如ZendGuard、ionCube等,如果授权的域名较多,可以在项目中增加域名字段,将域名写入数据库再进行读取和校验

    02. 独立校验域名授权的方法:

    <?php
     
    function allow_domain(){
     
    $is_allow=false;
     
    //获取不带端口号的域名前缀
     
    $servername=trim($_SERVER['SERVER_NAME']);
     
    //授权域名列表
     
    $Array=array("localhost","127.0.0.1");
     
    //遍历数组
     
    foreach($Array as $value){
     
    $value=trim($value);
     
    $domain=explode($value,$servername);
     
    if(count($domain)>1){
     
    $is_allow=true;
     
    break;
     
    }
     
    }
     
    if(!$is_allow){
     
    die("域名未授权!"); //授权失败
     
    }else{
     
    echo "域名已授权!"; //授权成功
     
    }
     
    }
     
    allow_domain();
     
    ?>

    域名授权的目的在于保护知识产权,鼓励开发者能够发布更多优秀的作品,推动整个网络社会的文化发展与科技进步,有着十分重要的意义。

    以上就是这次分享的“php实现域名授权破解的两种方法”详细内容。

  • 破解网页禁止F12

    破解网页禁止F12

    快捷键:1.AIt+D  2.Ctrl+Shift+i

  • WP Super Cache加速WordPress网站教程

    WP Super Cache加速WordPress网站教程

    当为WordPress站点安装了一些插件后,我们经常需要面对一个问题就是加载速度的优化,安装的插件越多,对于网站加载速度影响越大,如果你想提升WordPress加载速度,一个简单易行的方法就是使用缓存插件,本文中我们教大家如何用WP Super Cache缓存WordPress站点

    WP Super Cache 是最受欢迎的 WordPress 缓存插件,由WordPress的母公司Automattic 开发,它可以将你的动态WordPress站点生成静态的html文件,在访客访问时直接调取静态文件,减少数据查询,提升页面的加载速度

    WP Super Cache

    WP Super Cache 开启缓存

    首先我们需要安装 WP Super Cache插件,如果你不知道如何安装插件的话,可以查看我们的WordPress插件安装方法,安装好插件后你会在设置选项中看到 WP Super Cache选项

    默认情况下插件是未启用状态的,我们需要先将其开启,选择 启用缓存功能,然后点击更新

    WP Super Cache 启用缓存

    这样,我们就启用了WordPress的缓存功能了,访问网站就可以使用缓存文件了

    如果不确定自己的站点是否配置成功,你可以退出登陆或者用隐身模式访问自己网站,按 Ctrl + U 查看源代码,拉到页面最底部,看是否有 Cached page generated by WP-Super-Cache 字样,如果有的话,就说明缓存成功

    对于大部分站点来说,缓存就配置完成了,无需太多设置,但如果你有更多的需求,WP Super Cach 还有很多其他功能

    缓存高级设置

    WP Super Cache 缓存设置

    在高级设置中, WP Super Cach 提供了很多专业的功能,其中包括

    • 登陆用户与访客缓存设置
    • GET请求缓存设置
    • 页面压缩
    • 缓存重建
    • 304浏览器缓存
    • 动态缓存
    • 移动设备缓存
    • 首页额外检查等

    针对这些选项,建议勾选带有 推荐 的选项,其他设置有需求再修改选项

    WP Super Cach 预缓存

    WP Super Cache 预缓存

    默认情况下,WP Super Cach 会在访客首次访问特定链接时缓存对应的页面,如果你希望能提前缓存好页面,让每个用户能快速加载,可以使用预缓存,WP Super Cach 预缓存可以提前将WordPress站点中的所有文件缓存到服务器中,提升用户甚至搜索引擎的加载速度

    注意:预缓存需要一定的时间来完成,不宜将刷新间隔设置太短

    缓存内容管理

    WP Super Cache 管理缓存文件

    缓存文件后,我们就需要用到了内容管理,因为有时候我们会修改网站中一些内容,比如插件、代码等,如果影响到了前台,就需要删除之前缓存的文件,重新生成缓存

    可以在内容管理中删除过期文件与缓存,对于特定文章,还可以在工具栏上删除特定文件缓存

    除了以上功能,WP Super Cache 还提供了CDN、插件兼容、调试等功能,是一款好用又强大的缓存插件

  • WordPress建立数据库连接时出错终极解决方案

    WordPress建立数据库连接时出错终极解决方案

    “ 建立数据库连接时出错 ”可能是WordPress用户可能遇到的最常见和最可怕的错误之一。这绝对与死亡白屏(WSOD)息息相关。此错误意味着您的网站不再通信或可以访问WordPress数据库,整个网站瘫痪。

    对于这样的错误,站长切勿掉以轻心的事情,应该立即尝试解决此问题,直接影响流量,SEO等等。但不用担心,今天我们将讨论导致此错误的一些常见情况,以及对应的解决方案。

    建立数据库连接有什么错误?

    WordPress网站上的所有信息,例如发布数据,页面数据,元信息,插件设置,登录信息等,都存储在MySQL数据库中。唯一没有存储的数据是媒体内容,例如图像,以及主题/插件/核心文件,例如index.php,wp-login.php等。当有人访问您的网站时,PHP会在页面上执行代码并从数据库中查询信息,然后将其显示到访客浏览器中。

    如果由于某种原因这无法正常工作,则将出现建立数据库连接时出错,如下所示。整个页面空白,因为连接无法正常工作,无法检索任何数据以呈现页面。这不仅破坏了网站的前端,而且导致无法访问WordPress仪表板。

    但是,访客可能不会立即在前端看到此错误。那是因为站点缓存还可供访问,直到缓存过期为止。

    建立数据库连接时出错

    建立数据库连接时出错

    导致此错误的常见情况

    以下是一些常见原因,后面我们会根据这些常见原因,给出不同的解决方案。

    • 最常见的问题是数据库登录凭据不正确。WordPress网站需要使用数据库相关登录信息来连接到其对应的MySQL数据库。
    • 数据库已损坏。由于主题,插件可安装卸载如此之多,长年累月的不断删除和安装,有时会导致数据库损坏。这可能是由于表丢失或个别损坏,或者是某些信息被意外删除了。
    • WordPress安装中可能存在损坏的文件。
    • 数据库服务器问题。Web主机端可能有很多问题,例如数据库因流量高峰而过载或由于并发连接过多而无法响应。实际上,对于共享主机,这很常见,因为许多网站共享一台主机的资源。

    如何修复“建立数据库连接时出错”

    在开始对错误进行故障排查之前,建议您首先进行数据库备份,因为以下许多建议涉及操作数据库中的信息。无论你的技术水平如何,在尝试修改WordPress网站数据库之前,都应始终进行备份。

    您可以使用WordPress备份插件(例如VaultPress或WP Time Capsule)来备份文件和数据库。

    如果是宝塔面板用户,那就网站文件及数据库备份就很简单了,进入宝塔控制面板,在左边菜单找到“计划任务”,进入界面找到备份数据库和备份网站,手动执行即可。

    备份WordPress网站

    备份WordPress网站

    当然你还可以通过SFTP等工具,进入服务器执行手动备份网站文件,及通过phpMyAdmin手动备份MySQL数据库。备份成功后,就该开始对“建立数据库连接时出错”问题进行故障排除了。

    参考阅读:《使用BackWPup插件备份WordPress教程》、《如何安全备份WordPress博客网站数据?》

    1.检查数据库登录凭据

    首先要做的是检查以确保WordPress配置文件的数据库登录凭据正确。这是迄今为止“建立数据库连接时出错”报错的最常见原因,特别是在迁移网站到新的托管服务提供商之后。WordPress网站的连接详细信息存储在wp-config.php文件中,该文件通常位于WordPress网站的根目录下。

    它包含四个重要信息,这些信息都必须正确才能成功进行连接数据库。

    数据库名称// ** MySQL settings ** // /** The name of the database for WordPress */ define(‘DB_NAME’, ‘xxxxxx’);

    数据库用户名/** MySQL database username */ define(‘DB_USER’, ‘xxxxxx’);

    数据库密码/** MySQL database password */ define(‘DB_PASSWORD’, ‘xxxxxxxxx’);

    主机名(服务器)/** MySQL hostname */ define(‘DB_HOST’, ‘localhost’);

    要访问wp-config.php文件,您可以通过SFTP连接到站点并浏览到站点的根目录。或者,如果您使用的是宝塔,则可以进入宝塔控制面板单击“文件”,浏览到站点的根目录,然后右键单击以编辑文件。

    宝塔文件管理

    宝塔文件管理

    以下是打开文件后的示例。

    wp-config.php文件数据库访问凭证

    wp-config.php文件数据库访问凭证

    现在,您需要对照当前值及服务器数据库真实值,以确保它们正确无误。对于宝塔用户,请按照以下说明进行操作。

    检查宝塔面板中的数据库凭据

    您需要登录宝塔面板,进入数据库即可找到网站对应的数据库,找到数据库名、用户名及密码等信息 。

    宝塔面板查看数据库账号密码

    宝塔面板查看数据库账号密码

    然后核对wp-config.php文件的对应信息,确保两边的信息一致即可,非常方便。(或者这也就是国内众多站长选择使用宝塔面板的原因)

    检查cPanel面板中的数据库凭据

    如果你是使用cPanel管理主机,整个步骤稍微有点复杂。

    首先要检查的是数据库名称。为此,您需要进入cPanel控制面板登录phpMyAdmin 。

    cPanel控制面板的phpMyAdmin

    cPanel控制面板的phpMyAdmin

    在左侧菜单找到你的网站对应的数据库名称。忽略“information_schema”数据库,因为这是主机使用的数据库。然后,将该名称与wp-config.php文件中的DB_NAME值进行比较。如果它们匹配,那么这不是问题。如果它们不匹配,那么您需要更新wp-config.php文件。

    cPanel 数据库名称

    cPanel 数据库名称

    您还可以通过确保数据库是否包含你网站的URL来验证这是正确的数据库。只需单击数据库,然后单击wp_options表(出于安全目的,此名称可能稍有不同,例如wpxx_options)。在表格的顶部,您将看到网站URL和名称的值。如果这些与您当前站点匹配,说明这个是你的网站的数据库。

    在phpMyAdmin检查网站URL

    在phpMyAdmin检查网站URL

    如果数据库名称正确,但是在建立数据库连接时仍然出现错误,那你还需要检查用户名和密码。为此,你需要在WordPress网站的根目录中创建一个新的PHP文件(随意命名,例如checkdb.php),并输入以下代码,需使用wp-config.php文件中的值替换为db_user和db_password的值。<?php$test = mysqli_connect(‘localhost’, ‘db_user’, ‘db_password’);if (!$test) {die(‘MySQL Error: ‘ . mysqli_error());}echo ‘Database connection is working properly!’;mysqli_close($testConnection);

    浏览器访问https://yourdomain.com/checkdb.php。如果收到“MySQL Error: Access denied(MySQL错误:访问被拒绝)”,则说明您的用户名或密码错误,您将需要继续执行下一步以重置凭据。

    MySQL错误:访问被拒绝

    MySQL错误:访问被拒绝

    但如果是“Database connection is working properly.(数据库连接正常工作)”,则说明数据库用户名和密码正确。完成测试后,请确保删除此文件。

    数据库连接正常工作

    数据库连接正常工作

    如果确定数据库用户名和密码错误,接下来您需要重置用户名和密码。在cPanel中,点击“MySQL数据库”。

    cPanel 控制面板之MySQL数据库

    cPanel 控制面板之MySQL数据库

    向下滚动并创建一个新的MySQL用户。尝试选择唯一的用户名和密码(可以使用提供的密码生成器工具生成高强度密码),以免轻易被猜中。然后点击“Create User”。或者,您也可以在此界面上更改当前数据库用户的密码。

    创建MySQL用户

    创建MySQL用户

    然后向下滚动并将新用户添加到数据库中。下一个界面将询问您要分配的特权,选择“All Privileges(所有权限)”。

    使用cPanel新增数据库用户

    使用cPanel新增数据库用户

    然后使用这些新凭据并更新至wp-config.php文件(更新DB_USER和DB_PASSWORD值)。到此,你也可以使用前面提到的测试文件验证数据库凭证信息是否正确。但如果这未能解决问题,可能是主机名(DB_HOST)错误。某些主机使用不同的值,你可以参阅一些常见数据库主机值列表,或者查看主机相关文档及联系主机提供商提供。有些人可能还会使用127.0.0.1而不是localhost。

    如果您已完成上述所有操作,但仍是“建立数据库连接时出错”,继续往下看。

    2. 修复损坏的数据库

    在某些情况下,可能是数据库已损坏。有时(尽管不是很经常)会发生这种情况,因为随着时间的推移,新插件和主题会不断添加/删除数百张数据表。如果您尝试登录WordPress网站的仪表板并收到以下错误,则表明您的数据库已损坏:“一个或多个数据库表不可用。数据库可能需要修复。” 重要的是要注意,您可能只会在访问WordPress管理后台才看到此错误,而在前端仅看到建立数据库连接错误提示。

    WordPress实际上提供可以启动的数据库修复模式。只需将以下内容添加到wp-config.php文件的底部。define(‘WP_ALLOW_REPAIR’, true);

    WordPress修复模式

    WordPress修复模式

    然后浏览器访问WordPress网站地址:https : //yourdomain.com/wp-admin/maint/repair.php。在页面你可以选择“修复数据库”或“修复并优化数据库”。由于您目前可能正在对站点进行故障排除,因此建议使用“修复数据库”选项,更高效。

    WordPress修复数据库

    WordPress修复数据库

    在运行完上述数据库的修复之后,请确保删除添加到wp-config.php文件中的代码行,否则任何人都可以运行修复。如果您使用cPanel,则还可以从MySQL数据库界面中运行修复。

    cPanel修复数据

    cPanel修复数据

    或者,您也可登入phpMyAdmin进行修复。只需登录phpMyAdmin,选择需要修复的网站对应的数据库,然后选择所有表。然后从下拉菜单中单击“修复表”。这实际上只是在运行REPAIR TABLE命令。

    通过phpMyAdmin修复表

    通过phpMyAdmin修复表

    最后,你想更“装逼”些,还可以选择使用WP-CLI通过以下命令运行修复:wp db repair

    3. 修复损坏文件

    “建立数据库连接时出错”另外一个可能原因是文件已损坏。无论这是由于通过FTP传输文件的问题,黑客获得了访问您的站点的权限还是主机的问题,您都可以快速解决此问题。特别提醒,尝试此操作之前先备份您的网站。

    基本上,您只需要替换WordPress的核心版本,无需理会插件,主题或媒体。你可以通过访问WordPress.org下载最新版本的WordPress。

    下载WordPress

    下载WordPress

    在您的计算机上解压缩该文件,然后删除wp-content文件夹以及wp-config-sample.php文件。

    删除wp-content 目录及WP初始配置文件

    删除wp-content 目录及WP初始配置文件

    然后,通过SFTP将其余文件上传到您的站点,覆盖现有文件。这将替换所有有问题的文件,并确保您拥有干净且未损坏的新文件。建议这样做后清除浏览器缓存。然后检查您的WordPress网站以查看错误是否仍然存在。

    4. 数据库服务器问题

    如果上述方法均不能帮助您解决问题,那么强烈建议您与托管服务提供商联系,因为这可能是数据库服务器的问题。例如,如果数据库并发连接太多,则可能会产生错误。因为很多主机在服务器上都限制了一次允许连接的数量。利用缓存插件可以帮助最大程度地减少您站点上的数据库交互。

    这个问题在共享主机上经常发生,因为理论上其他人可能会影响您的站点。这是因为共享主机共同使用服务器上的所有资源。始终建议尽可能使用VPS主机来搭建WordPress网站,至少主机资源由自己分配利用而不会变得人满为患。独立主机通常对环境进行微调,即可处理专门针对WordPress网站的大量流量。

    5. 恢复至最近备份

    最后在情非得已之时,恢复最近备份数据。在某些情况下,如果无需担心发生错误之时与上一次备份之间产生的数据,这可能是解决问题的较快方法。许多服务器提供商都提供备份数据恢复支持。请记住,您可能需要同时还原数据库和文件。

    如果您是宝塔用户,则可以通过宝塔控制面板的计划任务,创建备份数据库或者备份网站计划任务,支持按周期定时备份,非常方便。

    宝塔控制面板备份计划

    宝塔控制面板备份计划

    如果是恢复数据库备份,您只需要进入宝塔控制面板,进入数据库菜单,找到你需要恢复的数据库,点击“有备份”,选择需要恢复的备份版本,点击“恢复”即可。

    WordPress数据库恢复

    WordPress数据库恢复

    如果是恢复网站备份,则可以通过访问宝塔控制面板-文件,进入/www/backup/site目录,找到网站备份压缩包,将压缩包解压到对应网站目录即可。

    WordPress网站数据恢复

    WordPress网站数据恢复

    小结

    如您所见,有很多方法可以解决WordPress中“建立数据库连接时出错”问题。最常见的错误是wp-config.php文件中设置的数据库凭据不正确,为此检查以确保正确无误是应该作为第一步。无论是由于哪个因素导致“建立数据库连接时出错”,希望上述步骤可以帮助您恢复网站的正常运行。请记住,如果需要,应始终对网站进行备份以还原站点。

    您的WordPress站点是否也曾遭遇“建立数据库连接时出错”?当时导致该错误的原因是什么?你又是如何解决?不妨在下方评论,与其他网友一起分享讨论。

  • 前端:屏蔽F12审查元素,禁止修改页面代码

    前端:屏蔽F12审查元素,禁止修改页面代码

    所周知,审查元素的情况下,大家都可以随机更改一部分页面的代码,

    注入恶意JS等等,这种情况避免也不难,虽然还能看到一部分H5源码,但是无法修改

    一、屏蔽F12 审查元素

    
    
    document.onkeydown = function(){
    
    if(window.event && window.event.keyCode == 123) {
        alert("F12被禁用");
        event.keyCode=0;
        event.returnValue=false;
    }
    if(window.event && window.event.keyCode == 13) {
        window.event.keyCode = 505;
    }
    if(window.event && window.event.keyCode == 8) {
        alert(str+"\n请使用Del键进行字符的删除操作!");
        window.event.returnValue=false;
    }
    
    
    }
    

    除了屏蔽这个,我们还有其他有趣的设置:

    二、屏蔽右键菜单
    document.oncontextmenu = function (event){
    if(window.event){
    event = window.event;
    }try{
    var the = event.srcElement;
    if (!((the.tagName == “INPUT” && the.type.toLowerCase() == “text”) || the.tagName == “TEXTAREA”)){
    return false;
    }
    return true;
    }catch (e){
    return false;
    }
    }

    三、屏蔽粘贴
    document.onpaste = function (event){
    if(window.event){
    event = window.event;
    }try{
    var the = event.srcElement;
    if (!((the.tagName == “INPUT” && the.type.toLowerCase() == “text”) || the.tagName == “TEXTAREA”)){
    return false;
    }
    return true;
    }catch (e){
    return false;
    }
    }

    四、屏蔽复制
    document.oncopy = function (event){
    if(window.event){
    event = window.event;
    }try{
    var the = event.srcElement;
    if(!((the.tagName == “INPUT” && the.type.toLowerCase() == “text”) || the.tagName == “TEXTAREA”)){
    return false;
    }
    return true;
    }catch (e){
    return false;
    }
    }

    五、屏蔽剪切
    document.oncut = function (event){
    if(window.event){
    event = window.event;
    }try{
    var the = event.srcElement;
    if(!((the.tagName == “INPUT” && the.type.toLowerCase() == “text”) || the.tagName == “TEXTAREA”)){
    return false;
    }
    return true;
    }catch (e){
    return false;
    }
    }

    这种很适合小说网站,毕竟版权珍贵,被别人随意copy走内容就不好了

    六、屏蔽选中
    document.onselectstart = function (event){
    if(window.event){
    event = window.event;
    }try{
    var the = event.srcElement;
    if (!((the.tagName == “INPUT” && the.type.toLowerCase() == “text”) || the.tagName == “TEXTAREA”)){
    return false;
    }
    return true;
    } catch (e) {
    return false;
    }

    }