使用cURL,(如何)可以在远程页面上执行PHP命令并将其作为字符串变量返回?

时间:2011-04-22 21:23:12

标签: php curl remote-access

我想用cURL做什么:

  1. 登录我的Wordpress网站,执行我自己的PHP代码并将其保存到变量:

    $ code_to_execute_remotely = wp_create_nonce('my_form');

    $ ch = curl_init();
    curl_setopt($ ch,CURLOPT_URL,'www.mywordpresssite.com');
    curl_setopt($ ch,CURLOPT_SOMEMYSTERIOUSFUNCTION,$ code_to_execute_remotely); $ resul_variable = curl_exec($ ch);

  2. 然后在第二次cURL执行中使用该变量:

    curl_setopt($ ch,CURLOPT_MYSECONDFUNCTION, $ resul_variable );
    $ second_ececution = curl_exec($ ch);
    curl_close($ CH);

  3. 我当然使用虚拟代码来简化操作。其他功能(登录到远程站点等)没有问题,只是远程执行该代码并将其结果作为可用变量返回,这就是我所需要的。由于我不是非常熟悉w / cURL,我可能会尝试超出其界限的东西,在这种情况下,我非常感谢知道可以实现这一目标。

1 个答案:

答案 0 :(得分:0)

在远程站点上使用php eval函数:

http://php.net/manual/en/function.eval.php

完整说明编辑:

在您的本地服务器上:

$post_data['curl_function'] = 'print wp_create_nonce("my_form");'; 
$post_string = http_build_query($post_data); 
curl_setopt($ch, CURLOPT_URL, 'www.mywordpresssite.com/receiver.php');
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch); //This will contain whatever receiver.php prints

在receiver.php中的远程服务器上:

print eval($_POST['curl_function']);

注意:

  • 这只有在您可以访问远程服务器www.mywordpresssite.com并上传receiver.php
  • 时才有效。
  • 如果您没有清理输入并且有办法检查以便只有本地服务器可以发送此请求,则这对远程服务器非常不安全。
  • 但是如果你可以访问远程服务器,那么为什么当你可以直接在receiver.php中编写功能时,为什么要通过cURl发送代码呢?
  • 那么如果您无法访问远程服务器那么答案就是;不,如果要访问远程服务器并将文件上传到其他服务器,则无法通过其他服务器上的cURL运行代码。