Re: [PHP-WEBMASTER] com web/wiki: moved registration spam prevention to new plugin: dokuwiki/inc/auth.php dokuwiki/inc/html.php dokuwiki/lib/plugins/phpreg/action.php dokuwiki/lib/plugins/phpreg/plugin.info.txt

[email protected] (Hannes Magnusson)
Newsgroups php.webmaster
Message-ID <CADNQb0WKoNUGKdw9Mj6Mwu2bsStkntqBe=LKoCCzQ4W2CZDi=Q@mail.gmail.com>
\o/

-Hannes


On Wed, Mar 25, 2015 at 6:10 AM, Christoph Michael Becker <[email protected]> wrote:
> Commit:    7c2b1a43837731a9131bb5cfc0bbfa42b4cf2536
> Author:    Christoph M. Becker <[email protected]>         Wed, 25 Mar 2015 14:10:25 +0100
> Parents:   cb152975f72becfd94401eaafc6041ed906e5b58
> Branches:  master
>
> Link:       http://git.php.net/?p=web/wiki.git;a=commitdiff;h=7c2b1a43837731a9131bb5cfc0bbfa42b4cf2536
>
> Log:
> moved registration spam prevention to new plugin
>
> Changed paths:
>   M  dokuwiki/inc/auth.php
>   M  dokuwiki/inc/html.php
>   A  dokuwiki/lib/plugins/phpreg/action.php
>   A  dokuwiki/lib/plugins/phpreg/plugin.info.txt
>
>
> Diff:
> diff --git a/dokuwiki/inc/auth.php b/dokuwiki/inc/auth.php
> index 8fa8ef7..4b1e6ce 100644
> --- a/dokuwiki/inc/auth.php
> +++ b/dokuwiki/inc/auth.php
> @@ -962,12 +962,11 @@ function register() {
>      // gather input
>      $login    = trim($auth->cleanUser($INPUT->post->str('login')));
>      $fullname = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/', '', $INPUT->post->str('fullname')));
> -    $spam     = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/', '', $INPUT->post->str('spam')));
>      $email    = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/', '', $INPUT->post->str('email')));
>      $pass     = $INPUT->post->str('pass');
>      $passchk  = $INPUT->post->str('passchk');
>
> -    if(empty($login) || empty($fullname) || empty($email) || empty($spam)) {
> +    if(empty($login) || empty($fullname) || empty($email)) {
>          msg($lang['regmissing'], -1);
>          return false;
>      }
> @@ -988,12 +987,6 @@ function register() {
>          return false;
>      }
>
> -    // make sure the secret spam box was filled out correctly
> -    if($spam != "[email protected]") {
> -        msg("That wasn't the answer we were expecting",-1);
> -        return false;
> -    }
> -
>      //okay try to create the user
>      if(!$auth->triggerUserMod('create', array($login, $pass, $fullname, $email))) {
>          msg($lang['reguexists'], -1);
> diff --git a/dokuwiki/inc/html.php b/dokuwiki/inc/html.php
> index b8135a3..495bdf9 100644
> --- a/dokuwiki/inc/html.php
> +++ b/dokuwiki/inc/html.php
> @@ -1591,7 +1591,6 @@ function html_register(){
>      }
>      $form->addElement(form_makeTextField('fullname', $INPUT->post->str('fullname'), $lang['fullname'], '', 'block', $base_attrs));
>      $form->addElement(form_makeField('email','email', $INPUT->post->str('email'), $lang['email'], '', 'block', $email_attrs));
> -    $form->addElement(form_makeTextField('spam', $_POST['spam'], 'To which email address do you have to send an email now?', '', 'block', array('size'=>'50')));
>      $form->addElement(form_makeButton('submit', '', $lang['btn_register']));
>      $form->endFieldset();
>      html_form('register', $form);
> diff --git a/dokuwiki/lib/plugins/phpreg/action.php b/dokuwiki/lib/plugins/phpreg/action.php
> new file mode 100644
> index 0000000..0a8c6d2
> --- /dev/null
> +++ b/dokuwiki/lib/plugins/phpreg/action.php
> @@ -0,0 +1,88 @@
> +<?php
> +
> +/**
> + * Registration spam prevention.
> + *
> + * @license GPL 3 (http://www.gnu.org/licenses/gpl.html)
> + * @author  Christoph M. Becker <[email protected]>
> + */
> +
> +// must be run within Dokuwiki
> +if(!defined('DOKU_INC')) die();
> +
> +/**
> + * The action class which is automatically instantiated by DokuWiki.
> + *
> + * @link https://www.dokuwiki.org/devel:action_plugins
> + */
> +class action_plugin_phpreg extends DokuWiki_Action_Plugin
> +{
> +    /**
> +     * Registers event handlers.
> +     *
> +     * @param Doku_Event_Handler $controller DokuWiki's event controller object.
> +     *
> +     * @return not required
> +     */
> +    public function register(Doku_Event_Handler $controller)
> +    {
> +        $controller->register_hook(
> +            'HTML_REGISTERFORM_OUTPUT',
> +            'BEFORE',
> +            $this,
> +            'handle_registerform_output'
> +        );
> +        $controller->register_hook(
> +            'ACTION_ACT_PREPROCESS',
> +            'BEFORE',
> +            $this,
> +            'handle_act_preprocess',
> +            array()
> +        );
> +    }
> +
> +    /**
> +     * custom event handler
> +     *
> +     * @param Doku_Event $event  event object by reference
> +     * @param mixed      $param  the parameters passed to register_hook when this
> +     *                           handler was registered
> +     *
> +     * @return   not required
> +     */
> +    public function handle_registerform_output(Doku_Event &$event, $param)
> +    {
> +        $pos = $event->data->findElementByAttribute('type', 'submit');
> +        if (!$pos) return;
> +        $spam = isset($_POST['spam']) ? $_POST['spam'] : '';
> +        $out = form_makeTextField(
> +            'spam', $spam,
> +            'To which email address do you have to send an email now?',
> +            '', 'block', array('size' => '50')
> +        );
> +        $event->data->insertElement($pos, $out);
> +    }
> +
> +    /**
> +     * Checks the spam-prevention.
> +     *
> +     * @param Doku_Event $event  event object by reference
> +     * @param mixed      $param  the parameters passed to register_hook when this
> +     *                           handler was registered
> +     *
> +     * @return   not required
> +     */
> +    public function handle_act_preprocess(Doku_Event &$event, $param)
> +    {
> +        $act = $event->data;
> +        if ($act != 'register' || !isset($_POST['save'])) {
> +            return;
> +        }
> +        $spam = isset($_POST['spam']) ? $_POST['spam'] : '';
> +        $spam = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/', '', $spam));
> +        if ($spam != '[email protected]') {
> +            msg("That wasn't the answer we were expecting", -1);
> +            $_POST['save'] = false;
> +        }
> +    }
> +}
> diff --git a/dokuwiki/lib/plugins/phpreg/plugin.info.txt b/dokuwiki/lib/plugins/phpreg/plugin.info.txt
> new file mode 100644
> index 0000000..4558050
> --- /dev/null
> +++ b/dokuwiki/lib/plugins/phpreg/plugin.info.txt
> @@ -0,0 +1,7 @@
> +base   phpreg
> +author Christoph M. Becker
> +email  [email protected]
> +date   2015-03-25
> +name   PHP Reg
> +desc   Registration spam prevention
> +url    http://git.php.net/?p=web/wiki.git;a=tree;f=dokuwiki/lib/plugins/phpreg
>
>
> --
> PHP Webmaster List Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.