2011-11-05 2 views
1

get을 통해 데이터를 전달하여 함께 상호 작용하는 PHP 처리 페이지 세트가 있지만 지금은 처리 페이지간에 JSON을 전달해야하며 다음과 같은 기능이 필요합니다. GET을 사용할 때.CURL을 사용하여 JSON을 게시 한 다음 게시 된 페이지로 이동

현재 작업 get 메소드 :

//The guts 

header("Location: $moreprocessing_url/?userid=$id"); 

exit(); 
다음

moreprocessing_url가 픽업에 :

$userid = $_GET[id]; 

//More guts 

$something = 'important'; 

header("Location: $public_url/?something=$something"); 

exit(); 

을 이제 첫 번째 처리 페이지에 대신 간단한 문자열을 보내는, 내가 보내야 JSON - 그래서 나는 CURL을 사용하여 JSON을 게시하고 있습니다. 그러나 게시 이후에 게시되는 페이지에 처리를 계속하고 원본 페이지를 중단하고 싶습니다. 위의 코드가 작동하는 것과 같은 방법이지만 CURL/post를 대신 사용합니다. 아마 CURL에 대한 나의 이해가 충분히 강하지는 않으며 이것이 불가능할 수도 있습니다.

내 CURL :

$curl = curl_init($moreprocessing_url); 
curl_setopt($curl, CURLOPT_HEADER, false); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, false); 
curl_setopt($curl, CURLOPT_HTTPHEADER, 
array("Content-type: application/json")); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 

curl_exec($curl); 
curl_close($curl); 

exit(); 

그래서이 현재 컬이 일어나고있는 페이지가 아니라 내가 원하는 moreprocessing_url에 반환 -이 가능합니까? 기본적으로 나는 페이지를 게시하고, 인계하고, CURL을 보내는 페이지를 중단하고 싶습니다.

+0

한 페이지에서 다른 페이지로 데이터를 전달하는 경우 세션을 사용할 수 없습니까? '$ id' 변수 (또는 JSON)는 결코 브라우저를 공격하지 않습니다. –

+0

이러한 PHP 처리 페이지가 세션 ID 관리를 수행하는 다른 언어에서 호출되고 있으므로이를 피하려고했습니다. – bMon

+0

Salman A- 세션이 현재 웹 응용 프로그램 사용자의 세션 ID를 관리하는 데 사용되었다고 생각합니다. 위의 예와 같이 세션에서 데이터를 전달할 수 있습니까? – bMon

답변

0

나는이 작업을 수행하려는 생각 :

  1. 브라우저 guts.php
  2. guts.php 더-guts.php에 데이터를 JSON 인코딩 게시물을 요청
  3. more-guts.php 게시 된 JSON을 처리하고 301을 일시적으로 이동했습니다. 응답; 새 위치가되는 public.php? = 중요한 일이
  4. guts.php은 브라우저 이것이 사실이라면

는 당신이 필요로하는 리디렉션을 다음과

  • 브라우저에이 응답 릴레이를 수신 귀하의 cURL 스크립트에 약간의 조정. 이 라인을 따라 뭔가 : CURLOPT_HEADERCURLOPT_NOBODY에 사용되는 값을 따라

    $curl = curl_init("url.php"); // the URL that processes your POST 
    
    curl_setopt($curl, CURLOPT_POST, true); // use POST method 
    curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json")); // set POST header 
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // set POST body 
    
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // send output to a variable for processing 
    curl_setopt($curl, CURLOPT_HEADER, true); // set to true if you want headers in the output 
    curl_setopt($ch, CURLOPT_NOBODY, true); // set to true if you do not want the body 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); // set to false if you want to see what redirect header was sent 
    
    $output = curl_exec($curl); 
    curl_close($curl); 
    
    var_dump($output); 
    

    $output 변수는 응답 헤더, 신체 또는 둘 모두를 (그들은 두 개의 빈 라인으로 구분하고)이 포함됩니다. 헤더의 내용을 원한다면 정규식을 사용하여 원하는 헤더를 추출하고 브라우저로 보낼 수 있습니다.

    또는 그렇게 선택하면 본체를 에코로 표시 할 수 있습니다.

  • +0

    좋아, 나는 그것을 얻고, 시험되고 작동하게했다. 예를 들어, guts.php가 {foo : bar}를 public.php에 게시하면 어떻게 될까요? 말린 후 exit() 할 수 있고, curl을 public.php로로드 할 수 있습니까? – bMon

    +0

    가장 간단한 질문은 : guts.php 처리 페이지의 {foo : bar}를 공개 페이지로 가져 와서 JSON을 중단하고 표시 할 수있는 방법 (jQuery 또는 그 다른 뭔가). – bMon

    +0

    내가 뭘 물 었는지 정확하게 대답했기 때문에 받아 들였고, 나는 그걸 작동 시켰어. - 고마워. 그러나 내 PHP 처리 페이지에서 공개 된 페이지로 JSON을 가져 오는 (데이터를 전달하는) 방법에 대한 통찰력이 있습니까? – bMon

    관련 문제