Verzend variabele naar een andere server en krijg resultaat met PHP

OK, ik wil een PHP-variabele naar een andere server verzenden, dit is mijn code, de php-variabele is een ip-adres.

 header("Location: http://www.domainname.com/bean/data.php?ip=$ip");

In principe krijgt de andere server het ip-adres en retourneert een variabele met de naam Beschrijving waarvan ik onduidelijk ben dat dit de beste manier is om de beschrijvingsvariabele terug te zetten naar de server.

code op data.php pagina

 $ip =$_GET['ip'];
 include("ipology.class.php");
 $ipology = new ipology( array($ip) );
 $out = $ipology->out();
 foreach( $out as $ip ) {
    if( is_array( $ip ) ) {
       $address = implode( ", ", (array) $ip['address'] );
       $descr = implode( ", ", (array) $ip['descr'] );
       echo "$descr";
    }
 }
4
U gebruikt hiervoor geen header()
toegevoegd de auteur John Conde, de bron
afhankelijk van uw situatie, moet u een server of client aan de andere server. Geen van beide gebeurt met header() .
toegevoegd de auteur Nick Andriopoulos, de bron
afhankelijk van uw situatie, moet u een server of client aan de andere server. Geen van beide gebeurt met header() .
toegevoegd de auteur Nick Andriopoulos, de bron
zoek rond naar krul
toegevoegd de auteur Jonathan, de bron
zoek rond naar krul
toegevoegd de auteur Jonathan, de bron
Zo voer je een omleiding uit. Controleer de antwoorden, u moet krul of file_get_contents() gebruiken.
toegevoegd de auteur V.Vachev, de bron

10 antwoord

De oorspronkelijke server kan (zoals Phil Cross vermeldt) file_get_contents of curl gebruiken:

$response = file_get_contents('http://www.domainname.com/bean/data.php?ip='.$ip);
print_r( $response );

Externe server zou kunnen gebruiken:

if ( isset( $_GET['ip'] ) && $_GET['ip'] ) {
  # do description lookup and 'echo' it out:
}

Gebruik de header ('location: xxx'); functie, wat je in essentie doet is het dwingen van PHP op de oorspronkelijke server om te reageren met een 302-omleidingsheader die de client naar de externe server zal sturen, maar er is geen 'teruggaan' vanaf de externe server naar de oorspronkelijke server.

2
toegevoegd
Hallo bedankt, ik heb de inhoud van de data.php-pagina (toegevoegd aan de originele post) toegevoegd aan de sectie # do somehting here, maar het geeft niets terug?
toegevoegd de auteur user1691024, de bron

De oorspronkelijke server kan (zoals Phil Cross vermeldt) file_get_contents of curl gebruiken:

$response = file_get_contents('http://www.domainname.com/bean/data.php?ip='.$ip);
print_r( $response );

Externe server zou kunnen gebruiken:

if ( isset( $_GET['ip'] ) && $_GET['ip'] ) {
  # do description lookup and 'echo' it out:
}

Gebruik de header ('location: xxx'); functie, wat je in essentie doet is het dwingen van PHP op de oorspronkelijke server om te reageren met een 302-omleidingsheader die de client naar de externe server zal sturen, maar er is geen 'teruggaan' vanaf de externe server naar de oorspronkelijke server.

2
toegevoegd
Hallo bedankt, ik heb de inhoud van de data.php-pagina (toegevoegd aan de originele post) toegevoegd aan de sectie # do somehting here, maar het geeft niets terug?
toegevoegd de auteur user1691024, de bron

Die kop leidt de gebruiker eenvoudig naar die website. U wilt zoiets als file_get_contents() als uw serverconfiguratie externe bestandstoegang toestaat.

If not, look into cURL

Je kunt de inhoud van de terugkeer van de krullen pakken en ze op die manier verwerken.

1
toegevoegd

Die kop leidt de gebruiker eenvoudig naar die website. U wilt zoiets als file_get_contents() als uw serverconfiguratie externe bestandstoegang toestaat.

If not, look into cURL

Je kunt de inhoud van de terugkeer van de krullen pakken en ze op die manier verwerken.

1
toegevoegd

U kunt twee methoden gebruiken:

Als de enige uitvoer van de doelpagina de beschrijving is, kunt u deze gebruiken

$description = file_get_contents("http://target.page?ip=xxx.xxx.xxx.xxx");

Zo niet, dan kunt u krullen op deze manier gebruiken:

// Create Post Information
$vars = array(
'ip'=>'xxx.xxx.xxx.xxx',
'some_other_info'=>'xxx'
);


// urlencode the information if needed
$urlencoded = http_build_query($vars);

if( function_exists( "curl_init" )) { 
    $CR = curl_init();
    curl_setopt($CR, CURLOPT_URL, 'http://distantpage');
    curl_setopt($CR, CURLOPT_POST, 1);
    curl_setopt($CR, CURLOPT_FAILONERROR, true);
    curl_setopt($CR, CURLOPT_POSTFIELDS, $urlencoded );
    curl_setopt($CR, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($CR, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($CR, CURLOPT_FAILONERROR,true);


    $result = curl_exec( $CR );
    $error = curl_error ( $CR );


   //if there's error
    if( !empty( $error )) {
            echo $error;
            return;
    }

    curl_close( $CR );

}

parse_str($result, $output);
echo $output['description']; //get description
1
toegevoegd
Hallo bedankt, maar ik weet niet zeker hoe ik de inhoud van mijn data.php-pagina hieraan zou toevoegen? en zie niet hoe je de echo-uitvoer krijgt
toegevoegd de auteur user1691024, de bron
jouw data.php moet iets uitvoeren als: description = description and stuff ... & other_info = andere info en andere dingen .. en dan kun je echo $ output ['description'] of $ uitvoer ['other_info']
toegevoegd de auteur user2050393, de bron

U kunt twee methoden gebruiken:

Als de enige uitvoer van de doelpagina de beschrijving is, kunt u deze gebruiken

$description = file_get_contents("http://target.page?ip=xxx.xxx.xxx.xxx");

Zo niet, dan kunt u krullen op deze manier gebruiken:

// Create Post Information
$vars = array(
'ip'=>'xxx.xxx.xxx.xxx',
'some_other_info'=>'xxx'
);


// urlencode the information if needed
$urlencoded = http_build_query($vars);

if( function_exists( "curl_init" )) { 
    $CR = curl_init();
    curl_setopt($CR, CURLOPT_URL, 'http://distantpage');
    curl_setopt($CR, CURLOPT_POST, 1);
    curl_setopt($CR, CURLOPT_FAILONERROR, true);
    curl_setopt($CR, CURLOPT_POSTFIELDS, $urlencoded );
    curl_setopt($CR, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($CR, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($CR, CURLOPT_FAILONERROR,true);


    $result = curl_exec( $CR );
    $error = curl_error ( $CR );


   //if there's error
    if( !empty( $error )) {
            echo $error;
            return;
    }

    curl_close( $CR );

}

parse_str($result, $output);
echo $output['description']; //get description
1
toegevoegd
Hallo bedankt, maar ik weet niet zeker hoe ik de inhoud van mijn data.php-pagina hieraan zou toevoegen? en zie niet hoe je de echo-uitvoer krijgt
toegevoegd de auteur user1691024, de bron
jouw data.php moet iets uitvoeren als: description = description and stuff ... & other_info = andere info en andere dingen .. en dan kun je echo $ output ['description'] of $ uitvoer ['other_info']
toegevoegd de auteur user2050393, de bron

In dit fragment wordt JSON gebruikt om de waarde te retourneren, zodat u in de toekomst meerdere waarden kunt retourneren als uw vereisten worden uitgebreid.

Ik gebruik meestal xml in plaats van JSON, maar het lijkt erop dat het uit de mode raakt :-P

Laat me weten of dit voor jou werkt.

<?php

$output = file_get_contents("http://www.domainname.com/bean/data.php?ip=$ip");

// This is what would go in data.php
$output = '{ "ip": "127.0.0.1", "description": "localhost" }';

$parsed = json_decode($output);

echo "Description for $parsed->ip is $parsed->description\n";

// var_dump($parsed);
0
toegevoegd

In dit fragment wordt JSON gebruikt om de waarde te retourneren, zodat u in de toekomst meerdere waarden kunt retourneren als uw vereisten worden uitgebreid.

Ik gebruik meestal xml in plaats van JSON, maar het lijkt erop dat het uit de mode raakt :-P

Laat me weten of dit voor jou werkt.

<?php

$output = file_get_contents("http://www.domainname.com/bean/data.php?ip=$ip");

// This is what would go in data.php
$output = '{ "ip": "127.0.0.1", "description": "localhost" }';

$parsed = json_decode($output);

echo "Description for $parsed->ip is $parsed->description\n";

// var_dump($parsed);
0
toegevoegd

Nou, als we aannemen dat data.php alleen de beschrijving retourneert die je kunt gebruiken

echo file_get_contents("http://www.domainname.com/bean/data.php?ip=".$ip);

Het zou het werk moeten doen, maar het gebruik van CURL is de beste optie.

0
toegevoegd

Nou, als we aannemen dat data.php alleen de beschrijving retourneert die je kunt gebruiken

echo file_get_contents("http://www.domainname.com/bean/data.php?ip=".$ip);

Het zou het werk moeten doen, maar het gebruik van CURL is de beste optie.

0
toegevoegd