Nebula
Nebula

Reputation: 691

Passing variable from php to php

I was wondering how to send a php variable from one server to another php script on another server?

I have 2 php scripts on 2 different server and one must send vars to the other. I've been searching with little luck. Would appreciate any help.

Upvotes: 0

Views: 490

Answers (3)

Ayush
Ayush

Reputation: 42450

You could achieve that using curl and sending the variable as a GET value.

Something like this:

$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);

Let's assume $data = "foobar"

Doing the above from a PHP script would be the same as someone visiting http://example.com?data=foobar from a browser.

You could obviously send it to any script using the url:

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

At yourscript.php you can get the data at $_GET['data'], do some input validation to ensure it is being sent from your script and not from someone else via a browser (more on that later) and then proceed with your script.

For this to work, yourscript.php will have to reside in the public html folder of youtr webhost so it is accessible to your other script.

SECURITY

Whether you are passing the data over GET or POST, someone else can send (possibly malicious) data to your script as well. Thus, when yourscript.php receives data, there needs to be a way for it to ensure you are the sender of the script. An easy way to achieve this is: decide on any arbitrary number known only to you, say, 12.

Concatenate the number with the data you are passing and calculate the md5 hash and send it as another get variable.

In this case, you would calculate md5("12foobar")

and the URL would be: http://example.com/yourscript.php?data=foobar&auth=hash

When yourscript.php receives the data, it calculates the same hash (using the number 12, known to no one else) and if the hash it calculates matches with $_GET['auth'], you can be sure you sent the data.

If someone tried to imitate you and send data, they would not know how you calculate the hash, and would thus send the wrong hash.

PS

Another way to ensure rock solid security, would be to just check the IP address of the user-agent at $_SERVER['REMOTE_ADDR']. If it is the IP address of the webhost where your other script resides, then you know it is you. I haven't thought this method through, so there might be some loopholes.

Upvotes: 3

Vyktor
Vyktor

Reputation: 21007

You should probably use SOAP. It's used for remote function calls and it brings you little more overhead than just calling http requests, but it also brings you guarantee that remote function will be executed (or will cause error), it will directly return whatever datatype you need and I believe that's what this technology was developed for :)

Upvotes: 0

Milad Naseri
Milad Naseri

Reputation: 4118

You can do that either using GET query strings (second_php?var=value) or using a curl connection with POST method and then send your data over POST.

Upvotes: 1

Related Questions