테스트 사이트 - 개발 중인 베타 버전입니다

구글 리캡챠 오작동관련! 채택완료

유우니얌 9년 전 조회 7,882

안녕하세요.

 

리캡챠 

http://sir.kr/g5_plugin/618?sfl=wr_subject%7C%7Cwr_content&stx=recap#vcmt_anchor">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">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개

채택된 답변
+20 포인트
thisgun
9년 전

http://stackoverflow.com/questions/6041741/fastest-way-to-check-if-a-string-is-json-in-php">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));

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

유우니얌
9년 전
그래도 안되네요 히구... 답변감사합니다

댓글을 작성하려면 로그인이 필요합니다.

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

 

$result = curl_exec($ch); 

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



로그인 후 평가할 수 있습니다

답변에 대한 댓글 8개

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

위와같이 에러가 발생되네요!!!
유우니얌
9년 전
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
이걸 추가하니까 되긴하네요...
마스타
9년 전
역시 그 문제 였군요.. ^^

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

PHP 버전 문제는 아닌 것 같습니다.
유우니얌
9년 전
아 ㅠㅠ그런거군요ㅠㅠ 왠지 이거때문에 소셜로그인도 안됫던것같네요... 역시 백엔드는 너뭉 어렵네요ㅠ
유우니얌
9년 전
깡패호스팅 사용중인데 위 내용은
기본적으로 되야하는부분들 아닌가요?
유우니얌
9년 전
안녕하세요 마스타님!
카페24에서 curl60 에러 발생된다고 체크 부탁한다고 말하니..

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


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



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


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



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

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

왜그러죠 이거 ㅠㅠ
마스타
9년 전
CA cert 관련해서는, 권한 문제나 경로 문제 등등으로 curl 60 오류가 발생할 수 있다고 합니다.

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

그냥,
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
를 추가해서 사용하시면 될 듯 합니다. ^^
유우니얌
9년 전
아................ 어쩔수없는거군요 T_T 이런 ! 감사합니다!!!!!

좋은주말보내세요!!

댓글을 작성하려면 로그인이 필요합니다.

9년 전

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

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

 

디버깅하신다면,

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

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 6개

유우니얌
9년 전
음 왜그러죠 그럼 ㅠㅠ
유우니얌
9년 전
둘다 찍어봣는데..."" 빈값으로 return 되네요...
마스타
9년 전
위 본문에 적힌 소스를 보면,
제가 올려놓은 소스와 코드가 조금 다른 것 같습니다.
혹시 수정해서 사용하시는 것인가요?
유우니얌
9년 전
아니요아니요~! 수정한거 없습니다. 새로 받아서 설치해보고..
체크를 위해서
return $recaptcha_secret_key."값:".$ch; 이부분을 추가해본거예요~!

흠...
지금은 어쩔수없이..
if(!$_POST['g-recaptcha-response'])
return false;
else
return true;
이렇게해서만 사용중인데...어디에서 에러가나는건지 알수가없네용 히구..
마스타
9년 전
어떤 에러가 나는지, 제가 에러나는 곳을 한번 볼 수 있을 까요?
유우니얌
9년 전
현재 에러가 따로 뜨는것이 아니라.. 결과값이 없으므로 false되어 자동등록방지숫자가 틀렷다고 나오는건데요~!
잠시 원래의 소스로 돌려놓아보겠습니다~!
http://goo.gl/bzCRTu
자유게시판 비회원글쓰기를 해보시면되세요~!!


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

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

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인