Re: 外部フォーム:同一ドメインのメールアドレスから送付されるスパムメールを防ぎたい(CAPTCHAは設定済)

2018年3月2日 at 14:21

すいません……。フォームの動作チェックをしていた所、
そもそもCAPTCHAのチェックが出来ていないことが判明しました。
(空欄でなければフォームが送付出来ていました)

標準のフォームを参考にして、


$captcha = Loader::helper('validation/captcha');
<div class="form-group captcha">
<?php
$captchaLabel = $captcha->label();
if (!empty($captchaLabel)) {
?>
<label class="control-label"><?php echo $captchaLabel; ?></label>
<?php
}
?>
<div><?php $captcha->display(); ?></div>
<div><?php $captcha->showInput(); ?></div>
</div>

View側では上記コードでCAPTCHAを表示し、


$captcha = Core::make('helper/validation/captcha');
if (!$captcha->check()) {
$isvalid = false;
$error['captcha'] = t("Incorrect captcha code");
$input['ccmCaptchaCode'] = '';
}

Controller側にチェックするコードを追加したのですが、これでは不完全だったようです……。

フォームのcontrollerを見ても、他にcaptchaをチェックしている箇所が見当たらないのですが、
どこかに必要な処理があるのでしょうか?

Re: 外部フォーム:同一ドメインのメールアドレスから送付されるスパムメールを防ぎたい(CAPTCHAは設定済)

2018年3月2日 at 17:12
バリデーションの失敗した時に例外を投げて外側でキャッチするという実装じゃなく、falseを代入してるだけなので、そのあとでtrueに上書きされてるとかは、あり得そうですが。