post json_encode gegevens naar andere pagina

Ik heb een bestand met de naam user.php, waarin ik json-gegevens codeer.

echo $json = json_encode(utf8_encode($user));

Ik wil de $ json-waarde naar andere pagina's data.php, menu.php, content.php verzenden die zich op verschillende servers bevinden ... ik open deze pagina's bij een klikgebeurtenis.

Hoe kan ik $ json van user.php doorgeven aan andere pagina's?

1
Via welk medium? een opnemen? een post? een krijgen?
toegevoegd de auteur Neal, de bron
Als het zich op dezelfde server bevindt, houdt u het in $ _ SESSION .
toegevoegd de auteur Michael Berkowski, de bron
Overweeg indien mogelijk gedeelde sessie op basis van memcached. als een elegante oplossing voor uw probleem.
toegevoegd de auteur Arend, de bron
waarom moet je dit doorgeven aan data.php? Is het bestand niet lokaal in dezelfde map?
toegevoegd de auteur Jakub, de bron
moet je naar de pagina's in de browser worden geleid?
toegevoegd de auteur Lars, de bron
Het bevindt zich in een andere directory. Ik heb geprobeerd om krullen te gebruiken ... maar dat helpt me niet echt. Ik wil een POST doen
toegevoegd de auteur ads, de bron

1 antwoord

Probeer dit: maak een php-bestand genaamd sendjson.php (zoals hieronder) en voer een CURL POST uit ( het heeft me altijd geholpen in vergelijkbare situaties ). Laat al uw hyperlinks naar deze pagina verwijzen, waarbij elk de URL (zonder http: //) en de json-gegevens verzendt).

<?php

//In sendjson.php

//Set data
 $json = $_GET['json'];

 //set destination page
 $url = $_GET['url'];

//complete the url
 $url = "http://".$url;

 //create key value array
  $fields = array('jdata'=>urlencode($json));

     //build param string
     foreach($fields as $key=>$value) { 
    $fields_string .= $key.'='.$value.'&'; 
    }

    //finish it
     rtrim($fields_string,'&');

     //POST to url


     //open connection
     $ch = curl_init();

     //set the url, number of POST vars, POST data
     curl_setopt($ch,CURLOPT_URL,$url);
     curl_setopt($ch,CURLOPT_POST,count($fields));
     curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);

     //execute post
     $result = curl_exec($ch);

     //close connection
     curl_close($ch);



?>

Update: If you are getting 301 errors with the above code (which worked for me), try checking that data.php/menu.php/content.php are all where they are supposed to be. And then, double check. Also, (though I don't know if this is related) you may want to make sure your $json data is not malformed.

0
toegevoegd
@ads Ik heb mijn antwoord bijgewerkt om meerdere externe sites te adresseren
toegevoegd de auteur sean, de bron
@ads Niet mijn code. Ziet er goed uit, maar laat me verifiëren ...
toegevoegd de auteur sean, de bron
@ads Ik heb mezelf net gecontroleerd - De code werkte voor mij. De bovenstaande code stuurde gegevens van een externe server naar mijn andere externe server. Maar een 301 is een omgeleide melding, wat betekent dat de bestanden niet op die locatie zijn gevonden. Zijn deze php-bestanden in de externe mappen sindsdien verplaatst?
toegevoegd de auteur sean, de bron
Ik heb de vraag bewerkt. er zijn 3 pagina's waar ik $ json door wil geven. Ik kan dus geen header gebruiken.
toegevoegd de auteur ads, de bron
Ik heb je code geprobeerd. Het werpt me een permanent verplaatst 301-foutbericht.
toegevoegd de auteur ads, de bron