如何使用CURL在另一台服务器上请求php页面,然后处理响应

时间:2011-07-29 13:16:32

标签: php mysql curl

我正在尝试连接到mysql数据库,但是从另一台服务器连接并处理该服务器上的所有查询,然后使用CURL将所有数据发送到原始服务器。

我一直在研究几个小时,似乎无法找到正确的方法。

所以这就是我要整体做的事情:

  1. 当有人从服务器A访问某个页面时,一个请求将从服务器A发送到服务器B,然后服务器B将连接到数据库。

  2. 服务器B连接到数据库后,它将从某些行和字段中获取信息,然后将其发送回服务器a。

  3. 一旦服务器A收到信息,它就会回显等等......

  4. 首先,这样做安全吗?它不喜欢在两个或甚至一台服务器上打开一扇门吗?

    其次,我不知道如何去做。

    示例代码会很棒!

1 个答案:

答案 0 :(得分:1)

在服务器A上

$post_fields = array(
    'variable_name' => 'variable_value',
    'variable' => $variable,
);
$ch = curl_init('http://www.serverB.com/example.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,  $post_fields);
curl_setopt($ch, CURLOPT_POST, 1);
$result = curl_exec($ch);

$result现在包含您从服务器B请求的页面的HTML。

在服务器B上

// pseudocode
$variable = $_POST['variable'];
$variable_name = $_POST['variable_name'];
$db_results = $db->getQuery('SELECT * FROM table WHERE `variable` = ?', array($variable))->toString();
echo $db_results;

安全吗?

这取决于。是否需要保护来自数据库的信息不受公众查看?显然,通过上面的设置,信息只是echo到服务器B上的页面。如果有人找到该页面,那么他们将能够看到这些信息。

如果那没关系那么它完全保存并且没有打开任何门(你们两个网站都对吗?)特别。

如果您需要防范,那么我建议从服务器A向服务器B发送令牌,以验证正确的脚本是否正在尝试访问该信息。类似于API密钥的东西,你可以在curl请求中作为标题传递,然后从服务器B上的$_SERVER出来验证。