我正在解决WordPress中的一个奇怪的错误,虽然我不知道WordPress是如何工作的,但我花了一个小时左右来试图分离问题并查看问题的根源。
结果发现问题在于该内容没有更新,因为$_POST没有被请求到的数据。
在我从浏览器访问的文件的顶部,在任何其他代码之前,我执行了以下操作:
我发现WordPress将$_POST作为全局变量并对其进行写入。我认为WordPress可能在某个地方处理这些数据,但我找不到它的位置。无论如何,在文件的顶部,这些变量都会被定义,甚至在任何其他操作之前... 我认为在此之前是不可能修改变量的。
输出结果如下:
请注意,在原始数据中,存在
我查看了phpinfo,但找不到任何相关设置。 我使用的是PHP版本5.3.8,Apache 2,在AWS上运行suse。
有人有任何想法如何使$_POST正确解析原始数据吗?
结果发现问题在于该内容没有更新,因为$_POST没有被请求到的数据。
在我从浏览器访问的文件的顶部,在任何其他代码之前,我执行了以下操作:
echo file_get_contents("php://input");
print_r($_POST); exit();
我发现WordPress将$_POST作为全局变量并对其进行写入。我认为WordPress可能在某个地方处理这些数据,但我找不到它的位置。无论如何,在文件的顶部,这些变量都会被定义,甚至在任何其他操作之前... 我认为在此之前是不可能修改变量的。
输出结果如下:
widget-text%5B3%5D%5Btitle%5D=Test&widget-text%5B3%5D%5Btext%5D=THISISATEST&sidebar=sidebar-1&sidebar-1_position=1&sidebar-2_position=&sidebar-3_position=&sidebar-4_position=&sidebar-5_position=&savewidget=Save+Widget&widget-id=text-3&id_base=text&multi_number=3&_wpnonce=36852083b6&_wp_http_referer=%2Fwp-admin%2Fwidgets.php%3Fmessage%3D0%26editwidget%3Dtext-3%26sidebar%3Dsidebar-1%26key%3D0
Array
(
[widget-text] => Array
(
[3] => Array
(
[title] => Test
)
)
[sidebar] => sidebar-1
[sidebar-1_position] => 1
[sidebar-2_position] =>
[sidebar-3_position] =>
[sidebar-4_position] =>
[sidebar-5_position] =>
[savewidget] => Save Widget
[widget-id] => text-3
[id_base] => text
[multi_number] => 3
[_wpnonce] => 36852083b6
[_wp_http_referer] => /wp-admin/widgets.php?message=0&editwidget=text-3&sidebar=sidebar-1&key=0
)
URL解码:
widget-text[3][title]=Test&widget-text[3][text]=THISISATEST&sidebar=sidebar-1&sidebar-1_position=1&sidebar-2_position=&sidebar-3_position=&sidebar-4_position=&sidebar-5_position=&savewidget=Save Widget&widget-id=text-3&id_base=text&multi_number=3&_wpnonce=36852083b6&_wp_http_referer=/wp-admin/widgets.php?message=0&editwidget=text-3&sidebar=sidebar-1&key=0Array
请注意,在原始数据中,存在
widget-text[3][text]=THISISATEST
。 但是,$_POST ['widget-text'] ['3'] ['text']
未定义。我查看了phpinfo,但找不到任何相关设置。 我使用的是PHP版本5.3.8,Apache 2,在AWS上运行suse。
有人有任何想法如何使$_POST正确解析原始数据吗?
$_POST
中,缺少widget-text[3][text]
,但它在原始的php://input
数据中。 - gen_Ericvar_dump(get_cfg_var('auto_prepend_file'));
并且它等于空字符串。从那里的phpinfo()
确认没有包含任何魔法。 - Kavi Siegel