2012-01-18 3 views
0

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

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

+0

Как бы эти сценарии запускались/запускались/активировались/связывались для начала? – deceze

+0

Возможный дубликат [Передача переменной из одного файла PHP в другой] (http://stackoverflow.com/questions/4804440/passing-an-variable-from-one-php-file-to-another) – hakre

ответ

3

Вы можете достичь этого, используя 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 должен будет находиться в папке youtr webhost public html, поэтому он доступен для вашего другого скрипта.

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

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

Объедините число с данными, которые вы передаете, и вычислите хэш хд5 и отправьте его как другую переменную 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

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

0

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

Смежные вопросы