我正在尝试连接到mysql数据库,但是从另一台服务器连接并处理该服务器上的所有查询,然后使用CURL将所有数据发送到原始服务器。
我一直在研究几个小时,似乎无法找到正确的方法。
所以这就是我要整体做的事情:
当有人从服务器A访问某个页面时,一个请求将从服务器A发送到服务器B,然后服务器B将连接到数据库。
服务器B连接到数据库后,它将从某些行和字段中获取信息,然后将其发送回服务器a。
一旦服务器A收到信息,它就会回显等等......
首先,这样做安全吗?它不喜欢在两个或甚至一台服务器上打开一扇门吗?
其次,我不知道如何去做。
示例代码会很棒!
答案 0 :(得分:1)
$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。
// 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
出来验证。