구글 리캡챠 오작동관련!
본문
안녕하세요.
리캡챠
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 값을 한번 찍어서 확인해 보시기 바랍니다.
$result = curl_exec($ch);
if($result === false) { echo "Error!! : " . curl_errno($ch) . "<br>\n" . curl_error($ch) . "<br>\n"; }