2012-10-14 3 views
0

cURL을 사용하여 한 사이트에서 다른 웹 사이트로 양식을 제출하려고합니다. 그러나 그것은 내게 몇 가지 $ fields_string 변수 오류 (정의되지 않은 변수)를 제공하고 있습니다.cURL 변수 오류

내가 처음으로 cURL을 작업하고 있으며 그에 관한 많은 지식이 없습니다. 그래서 양식을 성공적으로 제출할 수있는이 문제를 해결하도록 안내해주십시오.

정보 : 현재 localhost에서 작업 중이며 테스트를 위해 localhost에 다른 양식을 제출하려고합니다. 여기

이 내 HTML 양식입니다

<form action="submit.php" method="POST"> 
    <INPUT NAME="title" TYPE="text" CLASS="qa-form-tall-text custom-ask-text" value="" placeholder="Ask your question" autocomplete="off" role="textbox"> 

    <TEXTAREA NAME="content" CLASS="qa-form-tall-text"></TEXTAREA> 

    <INPUT NAME="tags" TYPE="text" CLASS="qa-form-tall-text custom-ask-text" value=""> 

    <label><input type="checkbox" class="qa-form-tall-checkbox" checked="" value="1" name="q_notify">Email me if my question is answered or commented on</label> 

    <INPUT CLASS="custom-ask-submit" TYPE="submit" value="ask"> 

    <INPUT TYPE="hidden" NAME="doask1" VALUE="1"> 
</form> 

덕분에 내 코드

<?php 

    $url = 'http://localhost/qa/ask'; 
    $fields = array(

       'title'=>urlencode($_POST['title']), 
       'content'=>urlencode($_POST['content']), 
       'tags'=>urlencode($_POST['tags']), 
       'q_notify'=>urlencode($_POST['q_notify']), 

      ); 


    foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } 
    rtrim($fields_string,'&');  

    $ch = curl_init(); 

    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_POST,count($fields)); 
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string); 

    $result = curl_exec($ch); 

    curl_close($ch); 
?> 

당신

편집 : NEW CODE

<?php 

$url = 'http://localhost/qa/ask'; 
$fields = array(
      'title'=>$_POST['title'], 
      'content'=>$_POST['content'], 
      'tags'=>$_POST['tags'], 
      'q_notify'=>$_POST['q_notify'], 

     ); 

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

$ch = curl_init(); 

curl_setopt($ch,CURLOPT_URL,$url); 
curl_setopt($ch,CURLOPT_POST,count($fields)); 
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields); 

$result = curl_exec($ch); 

curl_close($ch); 

?> 

모든 것이 옳다면 틀린 URL을 할당하고있을 수 있습니다. question2answer.org 스크립트를 사용하고 있으며 내 웹 사이트에서 내 사용자가 양식/질문을 제출할 수있는 양식을 만들고 싶습니다.

편집 : 당신은 $fields_string에 추가하고 @GBD

Curl error: array(22) { ["url"]=> string(23) "http://localhost/qa/ask" ["content_type"]=> string(24) "text/html; charset=utf-8" ["http_code"]=> int(200) ["header_size"]=> int(443) ["request_size"]=> int(211) ["filetime"]=> int(-1) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0) ["total_time"]=> float(0.141) ["namelookup_time"]=> float(0) ["connect_time"]=> float(0.016) ["pretransfer_time"]=> float(0.016) ["size_upload"]=> float(87) ["size_download"]=> float(16130) ["speed_download"]=> float(114397) ["speed_upload"]=> float(617) ["download_content_length"]=> float(-1) ["upload_content_length"]=> float(87) ["starttransfer_time"]=> float(0.141) ["redirect_time"]=> float(0) ["certinfo"]=> array(0) { } ["redirect_url"]=> string(0) "" } 

답변

1

; 처음 시작 값을 설정하지 않고 $fields_string

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

. 빈 문자열을 먼저 설정하면 오류가 사라집니다.

$fields_string = ''; 
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } 
1

게시 필드에 고유 한 문자열을 만들지 마십시오. CURL은 PHP 배열을 가져 와서 자체 인코딩을 수행 할 수 있습니다. curl_setopt($ch, CURLOPT_POSTFIELDS, $fields) 만 있으면됩니다.

+0

아무런 결과가 없습니다. 양식을 제출하지 않지만 오류없이 프로세스를 통과하는 것을 의미하고 CSS없이 035 웹 사이트 페이지 ($ url)로드를 제출하면 –

+0

$ 필드를 정의 할 때 urlencode 비트도 제거해야합니다. 내가 말했듯이, 컬은 당신을 위해 모든 것을 해줍니다. –

+0

당신은''title '=> urlencode ($ _ POST ['title '])'~''title'=> $ _ POST [ 'title']' –