구글 리캡챠 오작동관련! 채택완료
안녕하세요.
리캡챠
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개
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개
댓글을 작성하려면 로그인이 필요합니다.
$result = curl_exec($ch);
if($result === false) { echo "Error!! : " . curl_errno($ch) . "<br>\n" . curl_error($ch) . "<br>\n"; }
답변에 대한 댓글 8개
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에서 테스트 할 수 있는 정보를 주시면 확인 후 안내 또는 조치를 하도록 하겠습니다.
다른문의가 있으시면 언제든지 게시판으로 문의주시기 바랍니다.
성심성의껏 안내해 드리겠습니다.
======================
이렇게 답변이 오네요.........
왜그러죠 이거 ㅠㅠ
호스팅 업체에서는 모든 고객의 요구에 전부 대응하지는 못할 것 같습니다.
그냥,
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
를 추가해서 사용하시면 될 듯 합니다. ^^
좋은주말보내세요!!
댓글을 작성하려면 로그인이 필요합니다.
일단 제가 테스트 해 보았는데요,
PHP 5.5 에서 이상없이 동작하는 것으로 보입니다.
디버깅하신다면,
$result 값이나 $obj 값을 한번 찍어서 확인해 보시기 바랍니다.
답변에 대한 댓글 6개
제가 올려놓은 소스와 코드가 조금 다른 것 같습니다.
혹시 수정해서 사용하시는 것인가요?
체크를 위해서
return $recaptcha_secret_key."값:".$ch; 이부분을 추가해본거예요~!
흠...
지금은 어쩔수없이..
if(!$_POST['g-recaptcha-response'])
return false;
else
return true;
이렇게해서만 사용중인데...어디에서 에러가나는건지 알수가없네용 히구..
잠시 원래의 소스로 돌려놓아보겠습니다~!
http://goo.gl/bzCRTu
자유게시판 비회원글쓰기를 해보시면되세요~!!
[code]
if ( $obj->success != "1" ) { return "result:".print_r($result)."obj".print_r($obj);}//return false; }
[/code]
위와같이 결과값 리턴을 변경해두었습니다
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인