Modify

Opened 6 years ago

Last modified 2 years ago

#1844 reopened Neues Feature

Captcha Reload-Button

Reported by: Torsten Riemer Owned by: somebody
Priority: normal Milestone: modified-shop-2.0.9.0
Component: Shop Version: trunk
Keywords: Cc:
Blocked By: Blocking:

Description

Da es manchmal beim Captcha wirklich nicht zu entziffernde Kombinationen gibt finde ich die Idee eines Reload-Buttons ganz sinnvoll. Eine fertige Lösung hat noRiddle hier vorgeschlagen: Captcha base64-encoded, wo ?

Attachments (0)

Change History (7)

comment:1 by anonymous, 5 years ago

Wenn in der modified-eigenen ajax.php der Content-Type für den header nicht auf application/json oder text/IRGENDWAS erwzungen begrenzt wäre könnte man das ja darüber nach modified-Standard machen.
Es funktioniert allerdings mit type: plain nach meinen Tests (wohl weil der Rückgabewert in der Tat ja einfach nur ein String ist).
Wenn Ihr das bestätigen könnt würden die beiden Dateien folgendermaßen aussehen und man bräuchte die Datei im Root aus meinem post nicht:

/**********************************************************************************************************
* file: captcha.js.php
* path: /templates/YOUR_TEMPLATE/javascript/extra/
* use: define function for reload button for captcha
*      adaptation for reload icon in e.g. /templates/YOUR_TEMPLATE/module/contact_us.html needed
*
* (c) 03-2020, noRiddle
***********************************************************************************************************/

if(CAPTCHA_MOD_CLASS == 'modified_captcha' || CAPTCHA_MOD_CLASS == 'php_captcha') {
?>
<script>
$(function(){
    var $rel_capt = $('#rel-capt');
    $rel_capt.click(function(){
        $.post('ajax.php',
            {ext: 'captcha_reload',
             type: 'plain',
             captcha_reloaded: 'cr_true'
            },
            function(data){
                $rel_capt.prev('span').find('img').attr('src', data);
            }
        );
    });
});
</script>
<?php
}
?>
<?php
/*******************************************************
* file: captcha_reload.php
* path: /includes/extra/ajax/
* use: function for php response on ajax request to reload captcha
*
* (c) 07-2020, noRiddle
*******************************************************/

function captcha_reload() {
    if(isset($_POST['captcha_reloaded']) && $_POST['captcha_reloaded'] == 'cr_true') {
        require_once(DIR_WS_CLASSES.'modified_captcha.php');
        $mod_capt_inst = $_mod_captcha_class::getInstance();

        return 'data:image/jpeg;base64,'.base64_encode($mod_capt_inst->output());
    }

    return '';
}
?>

Gruß,
noRiddle

comment:2 by Torsten Riemer, 5 years ago

Den Header in der ajax.php zu erweitern sollte ja kein problem sein, siehe Zeile 57 - 62:

if ($ajax_rt == 'json') {
  $response = json_encode($response);
  header('Content-Type: application/json');
} else {
  header('Content-Type: text/'.$ajax_rt);
}
Version 0, edited 5 years ago by Torsten Riemer (next)

comment:3 by anonymous, 5 years ago

Ja, schon klar, aber man ist auf text/IRGENDWAS festgelegt.
Was ist z.B. mit image/WASWEISSICH ?

Gruß,
noRiddle

comment:4 by Torsten Riemer, 5 years ago

Na das meinte ich doch, dass man doch die bedingten Anweisungen entsprechend erweitern kann:

if ($ajax_rt == 'json') {
  $response = json_encode($response);
  header('Content-Type: application/json');
} else if ($ajax_rt == 'imagejpeg') {
  header('Content-Type: image/jpeg');
} else if ($ajax_rt == 'imagepng') {
  header('Content-Type: image/png');
} else {
  header('Content-Type: text/'.$ajax_rt);
}

Oder noch flexibler sowas wie:

if ($ajax_rt == 'json') {
  $response = json_encode($response);
  header('Content-Type: application/json');
} else {
  header('Content-Type: '.$type.'/'.$ajax_rt);
}
Last edited 5 years ago by Torsten Riemer (previous) (diff)

comment:5 by Gerhard Waldemair, 3 years ago

Resolution: fixed
Status: newclosed

In 14889:

partly fix #1844 - extend ajax for content type header

comment:6 by Torsten Riemer, 3 years ago

Resolution: fixed
Status: closedreopened

comment:7 by Gerhard Waldemair, 2 years ago

Milestone: modified-shop-2.0.8.0modified-shop-2.0.9.0

Modify Ticket

Action
as reopened The owner will remain somebody.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.