구글 리캡챠 오작동관련!

구글 리캡챠 오작동관련!

QA

구글 리캡챠 오작동관련!

본문

안녕하세요.

 

리캡챠 

http://sir.kr/g5_plugin/618?sfl=wr_subject%7C%7Cwr_content&stx=recap#vcmt_anchor 

위 소스를 적용을 햇는데요.

 

그전에 잘 사용하던 플러그인인데 지금 새로 php5.5 신버전을 설치했는데

오류가발생되네요

 

function _isCurl(){

    return function_exists('curl_version');

}

 

echo _isCurl();

 

체크해보니 true 값이 나오는걸 보니 curl은 정상 설치 되잇는것같긴 한데....

호스팅은 (카페24 웹호스팅 천원짜리..)

 

아래는 실제 리캡챠 위 플러그인 중에 값을 받아오는 부분입니다.

오류가 나길래 제가 테스트로

   return $recaptcha_secret_key."값:".$ch; 

를 해보니, 글전송시.

$recaptcha_secret_key 값은 잘 넘어옵니다.

$ch 의 값을 확인해보는것이 맞는건진 모르겟지만.. 우선 전달된 값은 

Resource id #27 

 

그러나,

$result,$obj,$obj->success 

값은 넘어 오지가 않네요...

 

아래 $url 값으로 주소창에 시크릿키와 리스폰스키를 넣어 확인햇을때는

정상적으로 true 값과 함꼐 호스트 정보가 리턴되는데요..

 

이경우는 어떤문제라고 봐야할까요!!?

 

 

$url = 'https://www.google.com/recaptcha/api/siteverify'; 

$data = array('secret' => $recaptcha_secret_key, 'response' => $_POST['g-recaptcha-response']);  

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_POST, sizeof($data));

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($ch);

curl_close($ch);

$obj = json_decode($result);

   return $recaptcha_secret_key."값:".$ch;

if ( ! $obj->success ) { return false; }

이 질문에 댓글 쓰기 :

답변 3

http://stackoverflow.com/questions/6041741/fastest-way-to-check-if-a-string-is-json-in-php 

 

json 값인지 맞는지 확인한후 아니면 encode 한후 decode 합니다.

 

if( !function_exists('is_json') ){

function is_json($str)

{

    return is_array(json_decode($str,true));

}

}

 

$obj = is_json($result) ? json_decode($result) : json_decode(json_encode($result));

일단 제가 테스트 해 보았는데요,

PHP 5.5 에서 이상없이 동작하는 것으로 보입니다.

 

디버깅하신다면,

$result 값이나 $obj 값을 한번 찍어서 확인해 보시기 바랍니다. 

 

아니요아니요~! 수정한거 없습니다. 새로 받아서 설치해보고..
체크를 위해서
  return $recaptcha_secret_key."값:".$ch; 이부분을 추가해본거예요~!

흠...
지금은 어쩔수없이..
if(!$_POST['g-recaptcha-response'])
return false;
else
return true;
이렇게해서만 사용중인데...어디에서 에러가나는건지 알수가없네용 히구..

현재 에러가 따로 뜨는것이 아니라.. 결과값이 없으므로 false되어 자동등록방지숫자가 틀렷다고 나오는건데요~!
잠시 원래의 소스로 돌려놓아보겠습니다~!
http://goo.gl/bzCRTu
자유게시판 비회원글쓰기를 해보시면되세요~!!



if ( $obj->success != "1" ) { return "result:".print_r($result)."obj".print_r($obj);}//return false; }


위와같이 결과값 리턴을 변경해두었습니다

아래와 같이 cur_exec 다음에 에러확인 구문을 추가하여,
curl_exec 에서 에러가 있었는지 한번 확인해 보세요.

 

$result = curl_exec($ch); 

if($result === false) { echo "Error!! : " . curl_errno($ch) . "<br>\n" . curl_error($ch) . "<br>\n"; }



안녕하세요~! 신경써주셔서 감사드려ㅑ요 ㅠㅠ
error!!:60
ssl certificate problem, verify tha the CA cert is OK.
detail: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify faile

위와같이 에러가 발생되네요!!!

역시 그 문제 였군요.. ^^

저도 60번 에러 나는 곳이 있어서..
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
이걸 추가한 곳이 있습니다.

PHP 버전 문제는 아닌 것 같습니다.

안녕하세요 마스타님!
카페24에서 curl60 에러 발생된다고 체크 부탁한다고 말하니..

-============
안녕하세요.
카페24 호스팅입니다.


관련해서 서버단에서 문제가 될만한 사항을 찾아 보았지만 서버단에서 문제가 발견되지 않았고, 시스템도 정상이었습니다.

 

카페24에서 테스트 할 수 있는 정보를 주시면 확인 후 안내 또는 조치를 하도록 하겠습니다.


다른문의가 있으시면 언제든지 게시판으로 문의주시기 바랍니다.
성심성의껏 안내해 드리겠습니다.



======================

이렇게 답변이 오네요.........

왜그러죠 이거 ㅠㅠ

CA cert 관련해서는, 권한 문제나 경로 문제 등등으로 curl 60 오류가 발생할 수 있다고 합니다.

호스팅 업체에서는 모든 고객의 요구에 전부 대응하지는 못할 것 같습니다.

그냥,
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
를 추가해서 사용하시면 될 듯 합니다. ^^

답변을 작성하시기 전에 로그인 해주세요.
전체 123,744 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT