freoのフォーム管理プラグインで投稿キープラグインを利用する方法
- 投稿日:2016/06/13 |最終更新:2017/03/06
- freo
- ページ機能, エントリー, フォーム管理プラグイン
freoのフォーム管理プラグインでメールを送信する際に、投稿キープラグインを利用してスパム対策を行ってみます。
- フォーム管理プラグインをダウンロード・解凍して実装してください。
- 投稿キープラグインをダウンロード・解凍して実装して下さい。
- [freo/libs/freo/plugins/cconfig.postkey.php]の18行目
define('FREO_PLUGIN_POSTKEY_LOAD_BEGIN', 'page,regist,view');
をdefine('FREO_PLUGIN_POSTKEY_LOAD_BEGIN', 'page,regist,view,form/send');
- [freo/libs/freo/plugins/begin.postley.php]の28~32行目
if (empty($_POST['plugin']['postkey']['key']) or empty($_SESSION['plugin']['postkey']['key']) or $_POST['plugin']['postkey']['key'] != $_SESSION['plugin']['postkey']['key']) { $freo->smarty->append('errors', '投稿キーの認証に失敗しました。'); } else { $_SESSION['plugin']['postkey']['approved'] = true; }
if (empty($_POST['plugin']['postkey']['key']) or empty($_SESSION['plugin']['postkey']['key']) or $_POST['plugin']['postkey']['key'] != $_SESSION['plugin']['postkey']['key']) { $freo->smarty->append('errors', array('id' => 0, 'message' => '投稿キーの認証に失敗しました。')); } else { $_SESSION['plugin']['postkey']['approved'] = true; }
- [freo/templates/internals/view/default.html]の160~164行目
[freo/templates/internals/page/default.html]の150~154行目
[freo/templates/internals/regist/default.html]の8~12行目
及びその他フォーム管理プラグイン以外で投稿キープラグインを利用している画面の<ul class="attention"> <!--{foreach from=$errors|smarty:nodefaults item='error'}--> <li>{$error}</li> <!--{/foreach}--> </ul>
<ul class="attention"> <!--{foreach from=$errors|smarty:nodefaults item='error'}--> <li>{$error.message}</li> <!--{/foreach}--> </ul>
- [freo/templates/plugins/form/form.html]に
<!--{if !$freo.user.id and !$smarty.session.plugin.postkey.approved}--> <dt>投稿キー(スパム対策に、<img src="{$freo.core.http_file}/postkey" alt="投稿キー" title="投稿キー" width="50" height="20" /> を半角で入力してください。)</dt> <dd><input type="text" name="plugin[postkey][key]" size="10" value="" /></dd> <!--{/if}-->
を追加してください。 - 変更したファイルを全てアップロードしてください。
以上の手順で、フォーム管理プラグインでも投稿キープラグインを利用することができるようになります。
解説
フォーム管理プラグインでは、$errorsを配列で扱っているので、投稿キープラグインのエラーも配列で登録してやる必要があります。
フォーム管理プラグインでも投稿キープラグインを利用できるようにしたことを踏まえ、他画面(regist、page、view画面)で投稿キープラグイン利用時に、エラーを配列として扱うように編集する必要があります。