Передача переменной из php в php - PullRequest
0 голосов
/ 18 января 2012

Мне было интересно, как отправить переменную php с одного сервера на другой скрипт php на другом сервере?

У меня 2 сценария php на 2 разных серверах, и один должен отправлять переменные другому.Я искал с небольшим количеством удачи.Буду признателен за любую помощь.

Ответы [ 3 ]

3 голосов
/ 18 января 2012

Этого можно добиться, используя curl и отправляя переменную как значение GET.

Примерно так:

$data = "data you want to send";
$data = urlencode($data);
$url = "http://example.com?data=" . $data;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_exec($ch);
curl_close($ch);

Предположим, $data = "foobar"

Выполнение вышеизложенного из сценария PHP будет таким же, как если бы кто-то посещал http://example.com?data=foobar из браузера.

Очевидно, вы можете отправить его в любой скрипт, используя URL:

http://example.com/yourscript.php?data=foobar

На yourscript.php вы можете получить данные на $_GET['data'], выполнить некоторую проверку входных данных, чтобы убедиться, что они отправляются из вашего сценария, а не от кого-либо еще через браузер (подробнее об этом позже), а затем продолжить работу со своим сценарием. .

Чтобы это работало, yourscript.php должен находиться в папке public html веб-хостера youtr, чтобы он был доступен для вашего другого скрипта.

БЕЗОПАСНОСТЬ

Независимо от того, передаете ли вы данные через GET или POST, кто-то другой может также отправить (возможно, вредоносные) данные в ваш сценарий. Таким образом, когда yourscript.php получает данные, должен быть способ обеспечить вас отправителем сценария. Самый простой способ добиться этого: выбрать любое произвольное число, известное только вам, скажем, 12.

Объедините число с данными, которые вы передаете, вычислите хэш md5 и отправьте его как другую переменную get.

В этом случае вы бы вычислили md5("12foobar")

и URL будет: http://example.com/yourscript.php?data=foobar&auth=hash

Когда yourscript.php получает данные, он вычисляет тот же хеш (используя число 12, которое никто не знает), и если вычисляемый хеш совпадает с $_GET['auth'], вы можете быть уверены, что отправили данные.

Если кто-то попытается подражать вам и отправить данные, он не будет знать, как вы вычисляете хеш, и, следовательно, отправит неправильный хеш.

PS

Еще один способ обеспечить надежную безопасность - просто проверить IP-адрес пользовательского агента на $_SERVER['REMOTE_ADDR']. Если это IP-адрес веб-хоста, где находится ваш другой скрипт, то вы знаете, что это вы. Я не продумал этот метод, поэтому могут быть некоторые лазейки.

1 голос
/ 18 января 2012

Вы можете сделать это либо используя строки запроса GET (second_php?var=value), либо используя скручиваемое соединение с методом POST, а затем отправлять свои данные через POST.

0 голосов
/ 18 января 2012

Вы, вероятно, должны использовать SOAP . Он используется для удаленных вызовов функций и приносит вам немного больше затрат, чем просто вызов HTTP-запросов, но также дает вам гарантию, что удаленная функция будет выполнена (или вызовет ошибку), он будет напрямую возвращать любой тип данных, который вам нужен, и я считаю, для чего была разработана эта технология:)

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