как использовать CURL для запроса php-страницы на другом сервере, а затем обработать ответ - PullRequest
1 голос
/ 29 июля 2011

Я пытаюсь подключиться к базе данных mysql, но с другого сервера и обработать все запросы на этом сервере, а затем отправить все данные на исходный сервер, используя CURL.

Я искал много часов и, похоже, не могу найти правильный путь для этого.

вот что я пытаюсь сделать в целом:

  1. Когда кто-то посещает страницу с сервера A, запрос будет отправлен с сервера A на сервер B, который затем подключится к базе данных.

  2. Как только сервер B подключится к базе данных, он будет получать информацию из определенных строк и полей и затем отправлять ее обратно на сервер a.

  3. Как только сервер А получит информацию, он будет отображаться и т.д. и т.д ...

Во-первых, это безопасно делать? Не так ли это, как открыть дверь на обоих серверах или даже на одном сервере?

Во-вторых, я понятия не имею, как это сделать.

Пример кода был бы великолепен!

1 Ответ

1 голос
/ 29 июля 2011

На сервере 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 теперь содержит HTML-код страницы, которую вы запросили с сервера B.

На сервере 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, а затем получить и проверить его с $_SERVER на сервере B.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...