-
网址安全监测的免费API
VirusTotal API: 这是一个提供免费的网址检测 API。您需要首先注册一个账号,获取 API 密钥,然后集成到您的 PHP 代码中。它可以检测网址是否存在任何恶意软件或病毒。示例代码: $url = 'https://www.example.com'; $apikey = 'your_api_key'; $response = file_get_contents("https://www.virustotal.com/vtapi/v2/url/report?apikey=$apikey&resource=$url"); $json_response = json_decode($response, true); if($json_response['response_code'] == 1 && $json_response['positives'] > 0){ echo "The website is not safe"; }else{ echo "The website is safe"; } Google Safe Browsing API: 这是由 Google 提供的另一个免费的安全检测 API。您可以使用它来检测网址是否受到谷歌认为的威胁。示例代码: $url = 'https://www.example.com'; $apikey = 'your_api_key'; $response = file_get_contents("https://safebrowsing.googleapis.com/v4/threatMatches:find?key=$apikey"); $params = array( 'client' => array( 'clientId' => 'your_company_name', 'clientVersion' => '1.0.0' ), 'threatInfo' => array( 'threatTypes' => array('MALWARE','SOCIAL_ENGINEERING','UNWANTED_SOFTWARE','POTENTIALLY_HARMFUL_APPLICATION'), 'platformTypes' => array('WINDOWS','LINUX','ANDROID'), 'threatEntryTypes' => array('URL'), 'threatEntries' => array( array('url' => $url) ) ) ); $options = array( 'http' => array( 'header' => "Content-Type: application/json", 'method' => 'POST', 'content' => json_encode($params) ) ); $context = stream_context_create($options); $result = file_get_contents("https://safebrowsing.googleapis.com/v4/threatMatches:find?key=$apikey", false, $context); $json_result = json_decode($result, true); if(!empty($json_result['matches'])){ echo "The website is not safe"; }else{ echo "The website is safe"; } 请注意,使用这些 API 需要注册并获取 API 密钥。此外,请注意 API 限制和条款,以确保您不会滥用或违反任何规则。... -
通过原型工具直接生成APP的案例,后端采用的WordPress
原型工具可以将原型转换为移动应用程序。其中之一是 Proto.io。Proto.io 可以将您的原型直接转换为 iOS 和 Android 应用程序。这是使用 WordPress 作为后端的一个示例: 步骤 1: 创建原型 使用 Proto.io 创建您的移动应用程序原型。 Proto.io 是一个在线移动原型工具,可以让您设计和交互您的应用程序原型,而无需编写代码。 步骤 2:连接 WordPress 到 Proto.io Proto.io 可以与 WordPress 集成。在 WordPress 中,您需要安装并启用 WP REST API 插件。这将启用 WordPress 的 REST API,并允许 Proto.io 访问您的 WordPress 帖子和页面。 步骤 3:创建 API 密钥 在 WordPress 中,您需要创建一个 API 密钥,以便 Proto.io 可以通过 REST API 访问您的 WordPress 网站。导航到您的 WordPress 仪表板 > 用户 > 个人资料。从个人资料页面中,单击生成新的 API 密钥按钮。复制并保存 API 密钥。 步骤 4:将 WordPress 数据添加到 Proto.io 使用 Proto.io,您可以添加 WordPress 页面和帖子到您的移动应用程序原型中。通过 Proto.io 插件,您可以轻松地将 WordPress 数据添加到您的手机应用程序原型中,并且将 WordPress 仪表板和新闻页面添加到应用程序底部栏中,以便您的用户可以浏览您的网站。 步骤 5:导出应用程序 完成应用程序原型后,您可以将其导出为 iOS 或 Android 应用程序。Proto.io 将利用您创建的原型,将其转换为应用程序原型,并添加所需的移动应用程序功能和功能。 这就是一个通过原型工具直接生成 APP 的案例,后端采用的 WordPress。... -
如何保护WordPress的wp-cron.php
直接屏蔽外部访问,仅允许服务器自身访问 (因为 Wordpress 执行任务的时候,就是在服务器上请求的)。在你的域名 conf 下,添加下面语句: #禁止外网访问wp-cron location ~ ^/wp-cron\.php { allow 127.0.0.1;#本地IP allow 127.255.255.255;#服务器IP deny all; location ~ .*\.php?$ { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; } } 这样就 ok 了。现在的 Wordpress 的安装文件(/wp-admin/install.php)建议安装后,禁止访问吧。只要: #禁止读取install location ~ ^/wp-admin/install\.php { deny all; log_not_found off; access_log off; } 为什么不直接删除呢,因为每次 Wordpress 更新后,都有。至于为什么屏蔽,原因就是,访问它,它会读取内部 cache(一般在 MySQL,如果你没转移的话),如果不存在,读取 MySQL 数据库,确认安装,返回安装完毕,设置 cache(同样,如果没有外部 Cache,那么就在 MySQL 里面)。... -
WordPress插件 用于用户登陆后不显示部分广告
首先在 WordPress 插件目录下创建一个新目录,并在其中创建一个名为 "hide-ads-on-login" 的新文件夹。在此文件夹中创建一个新 PHP 文件,命名为 "hide-ads-on-login.php" ,并将以下代码添加到该文件中: <?php /* Plugin Name: Hide Ads on Login Description: Hides ads for logged in users Version: 1.0 Author: Your Name Here License: GPL2 */ // Set cookie on login function hide_ads_set_cookie() { if ( is_user_logged_in() ) { setcookie( 'hide_ads', 'true' ); } } add_action( 'wp_login', 'hide_ads_set_cookie' ); // Check cookie and hide ads function hide_ads_hide_content() { if ( isset( $_COOKIE['hide_ads'] ) && $_COOKIE['hide_ads'] == 'true' ) { echo '<style type="text/css">#ad-section { display:none; }</style>'; } } add_action( 'wp_head', 'hide_ads_hide_content' ); 此插件将在用户登录时设置一个名为 "hide_ads" 的 cookie。插件还使用了一个名为 "hide_ads_hide_content" 的函数,该函数检查 cookie,并在页面顶部添加 CSS 样式,以将 ID 为 "ad-section" 的广告部分隐藏。现在将 "hide-ads-on-login" 文件夹上传到 WordPress 插件目录中的 "wp-content/plugins" 目录。在 WordPress 后端页面中,启用 "Hide Ads on Login" 插件。现在,在用户登录后,将显示页面上 ID 为 “ad-section” 的广告部分。如果它存在,将在检查 cookie 时隐藏它。如果您希望在其他部分隐藏广告,只需将 CSS 样式中的 "ad-section" ID 更改为要隐藏的部分的 ID 即可。 另外一个方法是: 让注册用户登陆 WordPress 后不显示广告 在 WordPress 插入广告代码的时候加上判断。通过 get_current_user_id () 返回当前的用户,如果没有登陆用户,那么就是 0. $ad_code = '广告代码放这里..'; if (get_current_user_id()) { $ad_code = ''; } echo $ad_code; 或者是: <php if (!get_current_user_id()) { ?> // 广告代码HTML <php } ?> 这样,只要平时登陆 WordPress, 页面就不会显示广告。一般来说是不会和缓存插件冲突的,因为一般缓存只有在不是 WordPress 用户登陆的时候才会生成缓存。当然,如果你只想你登陆的时候不显示广告 (比如有多个 wordpress 用户), 那么只要知道你用户的 user id 就可以。假设是 1 的话: $ad_code = 'Ads code put here.'; if (get_current_user_id() == 1) { $ad_code = ''; } echo $ad_code; 或者,也许长这样: <php if (get_current_user_id() != 1) { ?>…... -
考虑到反代缓存图片,图片的空间占用太大的问题
可以考虑使用 Linux 自带的图像处理工具 ImageMagick以下是基于 ImageMagick 的示例代码: #!/bin/bash # 指定缓存路径和压缩比例 cache_path="/path/to/cache" quality=80 # 循环处理缓存目录下的所有图片文件 for file in $cache_path/*.jpg; do # 使用 ImageMagick 进行压缩,将压缩后的文件覆盖原始文件 convert "$file" -quality $quality "$file" done 在这个脚本中,我们指定了缓存路径和压缩比例,并使用 ImageMagick 的 convert 命令压缩缓存目录下的所有 JPG 格式图片。通过调整 quality 参数的值可以控制压缩比例,从而达到不同的压缩效果和文件大小。使用脚本批量压缩图片可能会对服务器性能产生一定的影响,特别是当缓存的图片数量较大时。因此,建议在服务器空闲时运行该脚本,以避免影响其他正在运行的服务。 可以将上面的脚本嵌入到 Nginx 的配置文件中,使用 Nginx 的 nginx.conf 文件中的 init_by_lua_block 指令执行 Lua 脚本来调用该脚本。示例代码: http { # 定义变量 set $cache_path "/path/to/cache"; set $quality "80"; # 使用 init_by_lua_block 调用脚本 init_by_lua_block { -- 定义脚本 local cmd = "/bin/bash -c '/path/to/script.sh " .. ngx.var.cache_path .. " " .. ngx.var.quality .. "'"; os.execute(cmd); } # 添加反向代理配置,缓存并压缩图片 server { listen 80; server_name example.com; location / { add_header Cache-Control "public"; proxy_pass http://backend_server$request_uri; proxy_set_header Host $http_host; proxy_cache my_cache; # 使用 image_filter 压缩图片 image_filter resize 800 -1; image_filter_jpeg_quality $quality; } # 设置缓存路径 location /cache/ { internal; alias $cache_path/; } } } 在这个配置中,我们首先定义了 $cache_path 和 $quality 两个变量,并在 init_by_lua_block 中执行调用 /path/to/script.sh 脚本,其中 $cache_path 和 $quality 作为参数传递给脚本。脚本的执行结果是对缓存目录下的 JPG 图片进行压缩。 接下来,我们添加了反向代理配置,使用 image_filter 来压缩图片。image_filter 是 Nginx 内置的图像处理模块,可以用于实时处理图像文件。在这个配置中,我们在缓存中引用图片时,将图片请求转发到名为 /cache/ 的内部位置上,并使用 image_filter 对图片进行实时压缩。... -
一个域名反代多个域名,反代并缓存图片
在这个配置中,我们在 Server 块中定义了多个域名(image1.example.com 和 image2.example.com)反向代理到同一个服务器 backend_server 上。我们使用了 proxy_pass 指令将请求转发到后端服务器,并使用了 proxy_set_header 给请求附加了 Host 字段以便后端服务器识别请求来自于哪个域名。并且在 Location 块中定义了缓存配置,同时使用 if 条件语句根据当前域名设定不同的缓存路径和缓存键值,保证不同域名缓存的图片在不同的文件夹里。注意缓存路径必须在 proxy_cache_path 前面已经声明过,否则会报错。 http { # 定义缓存路径和缓存的有效期 proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:100m inactive=60m; proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_cache_valid 200 60m; # 定义多个域名反向代理到同一个服务器 server { listen 80; server_name image1.example.com image2.example.com; # 反代到同一个服务器上,根据 Host 字段转发请求 location / { add_header Cache-Control "public"; proxy_pass http://backend_server$request_uri; proxy_set_header Host $http_host; } # 根据不同域名设置不同的缓存路径和缓存键值 if ($http_host = "image1.example.com") { proxy_cache_path /path/to/cache1 levels=1:2 keys_zone=my_cache1:100m inactive=60m; proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args"; } if ($http_host = "image2.example.com") { proxy_cache_path /path/to/cache2 levels=1:2 keys_zone=my_cache2:100m inactive=60m; proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args"; } } }... -
WordPress数据互通 SSO篇
使用单一登录(Single Sign-On,SSO)解决方案可以实现两个不同网站之间的用户数据互通和单点登录。下面是一种可行的方案和方法:选择合适的 SSO 协议:选择一个适合的 SSO 协议用于实现单一登录,例如 OpenID Connect、OAuth 或 SAML 等。每个协议都有其自身的优势和适用场景,需要根据具体需求和技术栈选择合适的协议。配置身份提供者(Identity Provider,IdP):选择一个作为身份提供者的网站,负责用户认证和颁发身份令牌。这个网站将是用户进行登录和验证的入口点。可以选择其中一个网站作为 IdP,或者使用独立的身份提供者。配置服务提供者(Service Provider,SP):在每个网站中配置服务提供者,用于接受和处理来自身份提供者的身份令牌。通过 SP 将用户重定向到 IdP 以进行身份验证,并将令牌返回给 SP,从而实现单点登录。实现用户数据同步:一旦用户成功登录并获得身份令牌,将用户的身份信息和必要的用户数据保存在本地。这样,当用户从一个网站跳转到另一个网站时,可以使用本地保存的数据完成用户的登录和授权流程。设置信任关系和安全配置:为了确保安全性,需要在服务提供者和身份提供者之间建立信任关系,并进行适当的安全配置,如使用 SSL 证书以加密通信、设置有效期和刷新机制等。开箱即用的插件实现:WP OAuth Server:这是一个功能强大的 WordPress 插件,可用于实现 OAuth 和 OpenID Connect 认证授权。它可以作为身份提供者(IdP)和服务提供者(SP),提供单一登录和用户数据共享功能。SimpleSAMLphp:这是一个基于 SAML 协议的插件,可以将 WordPress 网站作为服务提供者进行对接。它提供简化的配置和管理界面,使得与各种身份提供者的对接变得更加容易。SAML Single Sign On:这是另一个基于 SAML 协议的 WordPress 插件,可用于实现单一登录。它支持与多种身份提供者对接,并提供广泛的配置选项和自定义功能。OpenID Connect Generic:这个插件提供了对 OpenID Connect 协议的支持,可以将 WordPress 网站作为 OpenID Connect 客户端进行对接。它可以与各种 OpenID Connect 提供者对接,实现单一登录功能。Auth0:Auth0 是一个流行的身份管理和认证平台,它提供了一个 WordPress 插件,可以实现 SSO 和身份验证功能。通过 Auth0,你可以轻松地集成不同的身份提供者和多种身份验证方式。... -
7B2主题批量修改文章/圈子话题隐藏内容阅读权限
登录可见的话题修改为公开可见 UPDATE wpb2_postmeta SET meta_value = replace(meta_value,'login','public') WHERE meta_key = 'b2_topic_read_role' 评论可见的话题修改为公开可见 UPDATE wpb2_postmeta SET meta_value = replace(meta_value,'comment','public') WHERE meta_key = 'b2_topic_read_role' 积分可见的话题修改为公开可见 UPDATE wpb2_postmeta SET meta_value = replace(meta_value,'credit','public') WHERE meta_key = 'b2_topic_read_role' 付费可见的话题修改为公开可见 UPDATE wpb2_postmeta SET meta_value = replace(meta_value,'money','public') WHERE meta_key = 'b2_topic_read_role' 等级可见的话题修改为公开可见 UPDATE wpb2_postmeta SET meta_value = replace(meta_value,'lv','public') WHERE meta_key = 'b2_topic_read_role' 2. 批量修改 7B2 主题文章隐藏内容阅读权限文章的修改也是跟圈子话题比较类似,有所变化的就是判断的字段而已,大家参照修改就行 登录可见的隐藏内容修改为公开可见 UPDATE wpb2_postmeta SET meta_value = replace(meta_value,'login','public') WHERE meta_key = 'b2_post_reading_role'... -
广告位美化
HTML 代码: <div class="n_banner_inner"> <div class="img-info">! <div class="info">也想出现在这里? <a rel="nofollow noopener noreferrer" href="转跳Url" target="_blank">联系我们</a>吧</div> </div> <a href="前往Url" target="_blank" rel="noopener noreferrer"> <div class="Banner-adTag">广告</div> <img class="tirr" src="图片Url" alt="信息"> </a> </div> CSS: /*定位*/ .n_banner_inner { position: relative; } /*提示信息*/ .n_banner_inner .img-info { position: absolute; right: 12px; top: 9px; padding: 0; text-align: right; color: #fff; } .n_banner_inner .img-info i { position: relative; display: inline-block; color: #007bff; font-size: 20px; line-height: 19px; text-align: center; z-index: 9; font-style: inherit; } .n_banner_inner .img-info .info { position: absolute; bottom: 5px; right: 0; width: 0; padding: 5px 0; overflow: hidden; background: #007bff; border-radius: 10px; line-height: 10px; text-align: center; font-size: 10px; color: #fff; white-space: nowrap; -webkit-transition: all 0.2s cubic-bezier(0, 0.34, 0.71, 1.26) !important; -moz-transition: all 0.2s cubic-bezier(0, 0.34, 0.71, 1.26) !important; -ms-transition: all 0.2s cubic-bezier(0, 0.34, 0.71, 1.26) !important; -o-transition: all 0.2s cubic-bezier(0, 0.34, 0.71, 1.26) !important; transition: all 0.2s cubic-bezier(0, 0.34, 0.71, 1.26) !important; } .n_banner_inner .img-info .info a { color: #fff; } .n_banner_inner .tirr { max-width: 100%; height: auto; transition: 0.5s; border-radius: 5px; } /*触发Hover*/ .n_banner_inner:hover .info { width: auto; padding: 5px 23px 5px 12px; -webkit-transition: all 0.2s cubic-bezier(0, 0.34, 0.71, 1.26) !important; -moz-transition: all 0.2s cubic-bezier(0, 0.34, 0.71, 1.26) !important; -ms-transition: all 0.2s cubic-bezier(0, 0.34, 0.71, 1.26) !important;…... -
火车头发布文章自动发布到了页面里的处理方法
Wordpress 升级到 6.3 后,一些使用火车头发布模块的朋友,会自动把文章发布到页面下面,而非文章下面。 出现问题原因: WordPress 内核升级到 6.3 后,$post_type被作为全局变量了,在火车头发布接口内的 post_type 被默认成了page,最终导致文章被发布到了page页面下。解决方法:如果不需要发布到其他地方,可以打开火车头发布接口文件,搜索post_type替换成其他任意字符串即可,替换成post_type2即可。...




