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 , 5 years ago
comment:2 by , 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 (next)
comment:3 by , 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 , 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);
}
comment:6 by , 3 years ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
comment:7 by , 2 years ago
| Milestone: | modified-shop-2.0.8.0 → modified-shop-2.0.9.0 |
|---|
Note:
See TracTickets
for help on using tickets.

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