美高梅4858-美高梅4858mgm-[官方网站]

Nginx 暴力解决使用 CDN/负载均衡后日志里记录的 IP 不是用户真实 IP | Nginx 获取真实用户 IP

暴力配置

修改 nginx.confvhost.conf 之类的文件,将以下配置放在 http 里或 server 里,实现的效果请继续往下看
set_real_ip_from   0.0.0.0/0;
real_ip_header     X-Forwarded-For;
real_ip_recursive on;

1. 放在 http 里,放到这里是全局的,一劳永逸

注意:我测试并没有什么异常,即使是加了 CDN 和没加 CDN,Nginx 日志都一样正确记录 IP(前提是你像我这样配置了)

放在 <code>http</code> 里,放到这里是全局的,一劳永逸

2. 放在 server 里,每个网站单独配置

放在 <code>server</code> 里,每个网站单独配置

效果

效果

搜题库(so.NowTool.cn), 大学生的好助手 支撑超星、智慧树、学习强国 答案搜索

搜题库 #支撑超星、智慧树、*学习强国 答案搜索

网址:https://so.nowtool.cn/

主要面向的是大学生、学习强国用户,建议用使用空格分割关键字,查询内容尽量简短(虽然模糊查找准确率很高)。目前题库量在 94855 题,今天更新了学习强国 挑战题库

*学习强国:题库仅包含挑战答题

欢迎反馈不能查找的题目,或提交题库,感谢你的使用!

搜题库 so.NowTool.cn #支撑超星、智慧树、*学习强国 答案搜索

蝶恋花 搜索结果 —— 搜题库 so.NowTool.cn

用到的技术 & 优缺点

  • ThinkPHP 框架
  • Bootstrap V3
  • PHP
  • MySQL
  • 专门为搜索进行优化,基本保证模糊搜索准确率高、查找速度快(从九万多条数据中匹配,传统搜索需要耗费一两秒,美高梅4858mgm优化后只需要几毫秒至十几毫秒)

TodayInHistory | 历史上的今天数据库 PHP版API

如果你只是想要 API 接口,请访问:历史上的今天 免费API 开发文档

? TodayInHistory | 历史上的今天

历史上的今天数据库,数据源于“维基百科”,演示地址:https://api.nowtime.cc/today_in_history.html

GitHub 项目地址:https://github.com/PrintNow/TodayInHistory

对你有用别忘了点个 Start?

? 说一下爬虫思路

  1. 先下载 https://zh.wikipedia.org/wiki/1月1日

https://zh.wikipedia.org/wiki/12月31日 366天的页面(我用了 3分钟 左右全部下载完成)

  1. 然后写代码(用的世界上最好的语言 PHP)进行数据清洗,这步我花了好久,大概两三个小时(惭愧惭愧,水平有限?)
  2. 清洗完成后导出为 history_in_today.json 文件
  3. 然后写代码(用的世界上最好的语言 PHP)将其批量插入 MySQL数据库
  4. 写 API 逻辑代码,我用的 ThinkPHP 框架,接口地址:https://api.nowtime.cc/v1/today_in_history
  5. 然后根据我之前写的 PrintNow/TimeLine 时间线,修改成了 index.html
  6. 然后你就看到了本项目

? 使用方法

我准备了两份数据 history_in_today.sqlhistory_in_today.json
你可以随意发挥,或使用我写好的,如下?
  1. ? 准备一个 PHP 环境
  2. 下载源码,解压后放置网站根目录
  3. history_in_today.sql 导入 MySQL 数据库
  4. 配置好数据库信息,在 api.php 第 14~17 行
  5. 修改 [static/script.js]() 第3行,将 https://api.nowtime.cc/v1/today_in_history 替换成 http://你的域名/api.php
  6. 打开 http://你的域名/index.html
  7. enjoy ?

? 截图

- 阅读剩余部分 -

Typecho 使用 CommentToDingtalk (评论推送至钉钉)插件遇到的问题

CommentToDingtalk 项目地址:https://github.com/MoLeft/CommentToDingtalk

运行报以下错误

Using $this when not in object context
Error: Using $this when not in object context in //nowtime.cc/usr/plugins/CommentToDingtalk/Plugin.php:123
Stack trace:
#0 /nowtime.cc/usr/plugins/CommentToDingtalk/Plugin.php(87): CommentToDingtalk_Plugin::getWebhook('https://oapi.di...', 'SECca000000000...')
#1 /nowtime.cc/var/Typecho/Plugin.php(489): CommentToDingtalk_Plugin::send(Object(Widget_Feedback), NULL)
#2 /nowtime.cc/var/Widget/Feedback.php(146): Typecho_Plugin->__call('Widget_Feedback...', Array)
#3 /nowtime.cc/var/Widget/Feedback.php(336): Widget_Feedback->comment()
#4 /nowtime.cc/var/Typecho/Router.php(138): Widget_Feedback->action()
#5 /nowtime.cc/index.php(30): Typecho_Router::dispatch()
#6 {main}

原因

在静态方法中调用非静态方法,导致其报错

解决方法

静态方法 中调用 非静态方法 $this-> 改成 (new self())-> 即可

以下是修改后的 Plugin.php,你可以直接复制以下代码进行替换:

<?php
if (!defined('__TYPECHO_ROOT_DIR__')) {
    exit;
}

/**
 * Typecho评论推送到钉钉插件
 *
 * @package CommentToDingtalk
 * @author MoLeft
 * @version 1.0
 * @link http://www.moleft.cn/
 */
class CommentToDingtalk_Plugin implements Typecho_Plugin_Interface
{
    /* 激活插件方法 */
    public static function activate()
    {
        //挂载评论接口
        Typecho_Plugin::factory('Widget_Feedback')->finishComment = array('CommentToDingtalk_Plugin', 'send');

        return '插件已激活,请设置相关信息';
    }

    /* 禁用插件方法 */
    public static function deactivate()
    {
        return '插件已禁用';
    }

    /* 插件配置方法 */
    public static function config(Typecho_Widget_Helper_Form $form)
    {
        $webhook = new Typecho_Widget_Helper_Form_Element_Text('webhook', null, '', 'Webhook地址', '请将钉钉中的webhook地址填到此处');
        $secret  = new Typecho_Widget_Helper_Form_Element_Text('secret', null, '', 'Secret密钥', '请将钉钉中的Secret密钥填到此处');
        $form->addInput($webhook);
        $form->addInput($secret);
    }

    /**
     * 个人用户的配置面板
     *
     * @access public
     * @param Typecho_Widget_Helper_Form $form
     * @return void
     */
    public static function personalConfig(Typecho_Widget_Helper_Form $form)
    {

    }

    /* 插件实现方法 */
    public static function render()
    {

    }

    /* 推送通知方法 */
    public static function send($post)
    {
        //获取系统配置
        $options = Helper::options();
        //判断是否配置webhook地址
        if (is_null($options->plugin('CommentToDingtalk')->webhook)) {
            throw new Typecho_Plugin_Exception(_t('Webhook地址未配置'));
        }
        //判断是否配置secret密钥
        if (is_null($options->plugin('CommentToDingtalk')->secret)) {
            throw new Typecho_Plugin_Exception(_t('Secret密钥未配置'));
        }
        $webhook = $options->plugin('CommentToDingtalk')->webhook;
        $secret  = $options->plugin('CommentToDingtalk')->secret;
        $text = "###您收到了一条新评论\n文章标题:{$post->title}\n评论编辑:{$post->author}\n评论内容:{$post->text}";
        $data = [
            'msgtype' => 'actionCard',
            'actionCard' => [
                'title' => '您收到了一条新评论',
                'text' => $text,
                'btnOrientation' => 1,
                'hideAvatar' => 0,
                'singleTitle' => '查看详情',
                'singleURL' =>$post->permalink
            ]
        ];
        
        //我修改了这里
        //我修改了这里
        //我修改了这里
        $response = (new self())->request((new self())->getWebhook($webhook,$secret), json_encode($data));
        //我修改了这里
        //我修改了这里
        //我修改了这里

        if($response['errcode'] !== 0){
            //发送失败,记录日志
            $log = @file_get_contents('./error.log');
            file_put_contents('./error.log','['.date("Y-m-d H:i:s").']'.$response['errmsg']);
        }
    }

    /* Curl请求精简版 */
    private function request($url, $postData)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json;charset=utf-8'));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        // 线下环境不用开启curl证书验证, 未调通情况可尝试添加该代码
        // curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
        // curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
        $data = curl_exec($ch);
        curl_close($ch);
        return json_decode($data, true);
    }

    /* webhook地址 */
    private function getWebhook($webhook, $secret)
    {
        list($msec, $sec) = explode(' ', microtime());
        $timestamp        = (float) sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
        $sign             = $this->signSecret($timestamp, $secret);
        $webhook_url      = "{$webhook}&timestamp={$timestamp}&sign={$sign}";
        return $webhook_url;
    }

    /* 计算签名 */
    private function signSecret($timestamp,$secret){
        $stringToSign = $timestamp."\n".$secret;
        return urlencode(base64_encode(hash_hmac('sha256', $stringToSign, $secret, true)));
    }
}

WordPress 设置私人站点,不登陆无法访问

前言

我专门搭建了属于 私人的博客,不想给没有拥有该站账号的人访问(或许到了某一天我会悄悄地开放)

开始

打开 /wp-blog-header.php 文件,在 require_once __DIR__ . '/wp-load.php'; 这一行后面加入以下代码:

<?php
/**
 * Loads the WordPress environment and template.
 *
 * @package WordPress
 */

if ( ! isset( $wp_did_header ) ) {

    $wp_did_header = true;

    // Load the WordPress library.
    require_once __DIR__ . '/wp-load.php';
    
        //加入这段代码即可
        //is_user_logged_in() 函数事判断用户是否登录
        //如果登陆了就返回 true,未登录返回 false
    if(!is_user_logged_in()){
        die("<h1>很抱歉,这是我的私人站点,我不想给任何人查看美高梅4858的内容!除非你拥有美高梅4858账号</h1>如果你要登录请点击:<a href='/wp-admin'>登录</a>");
    }

    // Set up the WordPress query.
    wp();

    // Load the theme template.
    require_once ABSPATH . WPINC . '/template-loader.php';

}

效果

未登录显示的页面:
未登录显示的页面

登录了显示的页面:
登录了显示的页面

XML 地图 | Sitemap 地图