通过读取调试工具 Chrome 为 Wordpress 创建 POST(协议)

Create POST (protocol) for Wordpress from reading debugging tool Chrome

我的 WordPress 页面上有一个按钮,用于选中或取消选中 WordPress 的 post 作为收藏。我打算从 php 调用 POST 来执行此操作。后来我从移动应用程序中调用它 php。

我的移动应用程序 ==> (get_favorito.php) POST (idUser, idPost, Status) ==> 收藏夹开/关

我目前使用 WP 4.4.2 和 WordPress 收藏夹插件 (https://github.com/kylephillips/favorites)

我推出了 POST 用于 Chrome 开发人员的工具。

image important debugging

而且我可以看到调用已完成:

http://web.domine.com/wp-admin/admin-ajax.php?action=simplefavorites_favorite&nonce=XXXXXXcd14&postid=273&siteid=1&status=inactive

http://web.domine.com/wp-admin/admin-ajax.php?action=simplefavorites_favorite&nonce=XXXXXXcd14&postid=273&siteid=1&status=active

我的问题来自Header和Cookie部分。您是如何获得这些信息的?

我正在尝试这个,但它不起作用。 这是我写的php

<?php

$ruta = 'http://' . $_SERVER['HTTP_HOST'];
$json = file_get_contents($ruta . '/wp-admin/admin-ajax.php?action=simplefavorites_nonce');

$arr = json_decode($json, true);
$nonce = $arr['nonce'];


$opts = array(
  'http'=>array(
    'method'=>'POST',
    'header'=> 'POST /wp-admin/admin-ajax.php HTTP/1.1\r\n' .
        'Host: web.domine.com\r\n' .
        'Connection: keep-alive\r\n' .
        'Content-Length: 84\r\n' .
        'Accept: */*\r\n' .
        'Origin: http://web.domine.com\r\n' .
        'X-Requested-With: XMLHttpRequest\r\n' .
        'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36\r\n' .
        'Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n' .
        'Referer: http://web.domine.com/hola-mundo-2/\r\n' .
        'Accept-Encoding: gzip, deflate\r\n' .
        'Accept-Language: es-ES,es;q=0.8\r\n' .
        'Cookie: wordpress_dddd3333f97127bf3816f4455971ce5aa=peteradmin%7C1457085836%7CxWJrk7EQVEYRpZY9Jzev4fH6jx3cq97wx6LPaMd9C4v%7Cd232ca14edca535e653dd37607b754d78926410e317d34315cbcb5533cda08c8; PHPSESSID=8eda0049e17a67becb1c8fddd18c6c51;

         wordpress_logged_in_dddd3333f97127bf3816f4455971ce5aa=peteradmin%7C1457085836%7CxWJrk7EQVEYRpZY9Jzev4fH6jx3cq97wx6LPaMd9C4v%7C63a7b53cfbb2c5a3b86e59c65e9977077e352ad8fe00228dee9b04a7a1e36ad9;

          wp-settings-1=libraryContent%3Dbrowse%26editor%3Dtinymce%26mfold%3Do;

           wp-settings-time-1=1456991866;
           wordpress_test_cookie=WP+Cookie+check; 

          simplefavorites=%5B%7B%22site_id%22%3A1%2C%22posts%22%3A%7B%221%22%3A194%2C%222%22%3A208%2C%223%22%3A273%7D%7D%5D'

)
);

$context = stream_context_create($opts);

//
//
$param = "action=simplefavorites_favorite&nonce='.$nonce.'&postid=273&siteid=1&status=active";
$json = file_get_contents($ruta . '/wp-admin/admin-ajax.php?'.$param.'', false, $context);
echo $json;


?>

(我放了空格是为了正确显示cookies)

现在我得到随机数:

http://web.domine.com/wp-admin/admin-ajax.php?action=simplefavorites_nonce

您好,我是从 nubelo 重定向到这里来回答的。

headers 由浏览器自动设置,cookie 由不同的 wordpress 页面设置,如 wp-login。php 页面。

simplefavorites cookie 是存储匿名用户最喜欢的帖子数组的 cookie,它在 wp-admin/admin-ajax 的响应 headers 中返回。php?action=simplefavorites_array 页。对于登录用户,收藏夹信息在同一页面的响应中以 json 格式返回。

我制作了一个 php 脚本来切换状态,它只是将 cookie 发送到相应的端点,您只需要将 cookie 存储在您的移动应用程序中,然后将它们与您的请求一起发送。 https://gist.github.com/chaps/eec3769560c7d8debe59