發表文章

目前顯示的是 11月, 2023的文章

Google reCAPTCHA server端PHP的寫法(v2、v3)

v3版本 $msg = array(); $secret = 'your_secret_key'; $gRecaptchaResponse = isset($_POST['g-recaptcha-response']) ? $_POST['g-recaptcha-response'] : null; $ip = $_SERVER['REMOTE_ADDR']; $domainName = $_SERVER['HTTP_HOST']; include_once ("recaptcha/src/autoload.php"); $recaptcha = new \ReCaptcha\ReCaptcha($secret); $resp = $recaptcha->setExpectedHostname($domainName) ->setExpectedAction('homepage') ->setScoreThreshold(0.5) ->verify($gRecaptchaResponse, $ip); if ($resp->isSuccess()) { // $msg['ending']=$resp->toArray(); } else { $errors = $resp->getErrorCodes(); $msg['ending']='recaptchaFail'; $msg['recaptcha']=$errors; echo json_encode($msg); exit(); } 其中,autoload.php是 官方在github 給的檔案: /* An autoloader for ReCaptcha\Foo classes. This should be required() * by the user before attempting to in

用PHP搭配Cloudflare Turnstile CAPTCHA

網路上有許多機器人驗證的替代方案,這裡介紹與 Google reCAPTCHA 寫法幾乎一樣的 Turnstile 給大家嘗試看看。 下面的寫法給各位參考: 後端PHP傳送與接收資料 與 Google 一樣,將query「response」與「secret」丟過去就可以了(範例多了「remoteip」,這個不一定要有)。 // captcha.php $captcha = $_POST['cf-turnstile-response']; $secretKey = 'your_secret_key'; $ip = $_SERVER['REMOTE_ADDR']; $url_path = 'https://challenges.cloudflare.com/turnstile/v0/siteverify'; $data = array('secret' => $secretKey, 'response' => $captcha, 'remoteip' => $ip); $opts = array( 'http'=> array( 'method'=> 'POST', 'content'=> http_build_query($data) ) ); $query = stream_context_create($opts); $result = file_get_contents($url_path, false, $query); echo json_encode($result); // 如果你想在後端直接判斷有沒有成功 $array = json_decode($result, true); $success = $array['success']; if($success){ // 驗證成功 }else{ // 驗證失敗 } 後端PHP這樣寫沒有問題,但資料回傳到前端JavaScript問題就出現了。 前端JavaScript接收Object $.ajax({ type: &

違反Google AdSense廣告政策,網頁會在SERP消失

圖片
若你的網站違反 Google AdSense 的廣告政策,你的 Google AdSense 介面會出現警告,也會收到 email,並要求你必需在期限內「申請審查」。 也因為如此,我的某些網頁在 SERP 中消失了(它並不會告訢你哪個網頁有問題,只會說網域),這讓我必需立即著手改善,但我該怎麼做? 判斷違規的原因 首先,我去 政策中心 找尋可能的原因,但還是無法判斷。之後,重新讀一次它在信中提到的可能原因:「試圖讓使用者誤點擊」,所以我把側邊工具欄的廣告全部都刪除了。 結果 在申請審查時,表單會叫你填「做了什麼改善」、「範例網頁」等等的欄位,我當然是填了「刪除工具列的廣告」。而在兩天之後,審查通過了,原本在 SERP 消失的網頁也神奇地復活了。 AdSense審查通過的通知信 疑問 讓我驚訝的是,我以為這樣子的違規逞罰頂多是不讓網站出現廣告,或是網站排名下降而已;但我錯了,是網頁直接消失,而且是消失一週之後才通知我違反廣告政策……。 其實,我在網站工具列放廣告已經放好幾年了,現在才說我違規,而且刪掉那裡的廣告還真的讓我過關了……大開眼界。 你可能會說,這說不定是 Google 核心更新在搞事。但官方公告開始更新的日期是在我審查通過後的三天,所以不太可能。