Mettere un CAPTCHA per ogni post in phpBB3

A+ A-

Anche se è po 'irritante per chiedere per il riempimento informazioni extra per ogni post un utente sta per pubblicare il nel tuo forum, ma sarà ancora più frustrante per ottenere 100s di messaggi di spam ogni giorno. Sono stato nella stessa situazione, mentre mi è stato chiesto di diventare amministratore per la sezione di tutorialspoint forum. Ho provato a mettere captcha a livello di registrazione, ma senza successo, sembra che gli spammer hanno già rotto quelli captcha. Alla fine ho deciso di andare per livello post captcha tipo di soluzione e questo è quello che ho fatto per raggiungere questo obiettivo.

Fase 1 - Generazione di un codice casuale

Cominciamo con la creazione di un codice casuale. Aprire posting.php file disponibile nella home directory del tuo forum, ricerca di L_POST_A, le sue variabili globali all'interno template-> assign_vars (array ... ..). Mettiamo una riga di codice appena al di sopra di essa che ci darà un numero casuale come segue:

$ security_code = rand (10000, 100000);
$ Template-> assign_vars (array (
        'L_POST_A' => $ page_title,
        'L_ICON' => ($ modalità == 'risposta' || modalità $ == 'quote' || ($ modalità == 'modifica' && $ post_id! = $ Post_data [ 'topic_first_post_id']))? $ User-> lang [ 'POST_ICON']: $ user-> lang [ 'TOPIC_ICON'],

.....

Ora aggiungiamo questo codice secuirty nella lista delle variabili globali già definite come segue:

$ security_code = rand (10000, 100000);
$ Template-> assign_vars (array (
        'L_POST_A' => $ page_title,
        'Security_code' => $ security_code,
        'L_ICON' => ($ modalità == 'risposta' || modalità $ == 'quote' || ($ modalità == 'modifica' && $ post_id! = $ Post_data [ 'topic_first_post_id']))? $ User-> lang [ 'POST_ICON']: $ user-> lang [ 'TOPIC_ICON'],
.....

Si è fatto con la definizione di una variabile globale. Ora andiamo alla seconda fase in cui faremo uso di questa variabile globale.

Aggiunta Aggiunta campo per prendere il codice di sicurezza

Apriamo il file posting_editor.html disponibile nel seguente percorso

/ [Vostra Home Forum] / stili / [tuo forum nome stile] / template /

Ora cercare le seguenti righe:

<Dl style = "clear: left;">
     <Dt> <label for = "oggetto"> {} L_SUBJECT: </ label> </ dt>
     <Dd> <input type = "text" name = "soggetto" id = "soggetto" size = maxlength "45" = "60" tabindex = "2" value = "{oggetto} {DRAFT_SUBJECT}" class = "inputbox autowidth "/> </ dd>
</ Dl>

Infine aggiungere seguenti poche righe sotto questo argomento per ottenere un codice di sicurezza da parte dell'utente prima di lui / lei invia un post.

<Dl style = "clear: left;">
     <Dt> <label for = "oggetto"> {} L_SUBJECT: </ label> </ dt>
     <Dd> <input type = "text" name = "soggetto" id = "soggetto" size = maxlength "45" = "60" tabindex = "2" value = "{oggetto} {DRAFT_SUBJECT}" class = "inputbox autowidth "/> </ dd>
</ Dl>
<Dl style = "clear: left;">
     <Dt> <label for = "oggetto"> Inserisci il codice di sicurezza: </ label> </ dt>
     <Dd> <input type = "text" name = "security_code" size = "45" maxlength = tabindex "60" = "3" class = "InputBox autowidth" /> <input type = "hidden" name = "hidden_security_code" value = "{} security_code" /> </ dd>
     <Dd> <label> Codice di sicurezza: </ label> {security_code} </ dd>
</ Dl>

Una volta che si è fatto con questo, andare a casa e di amministrazione sotto la scheda Stili -> Modelli -> Referesh il modello che si sta utilizzando. Questo porterà cambiamenti di cui sopra in vigore e ora si trova un campo sotto campo Oggetto in ogni post che si desidera inserire. Ci sarà anche un codice di sicurezza casuale disponibili. Controllare esempio di lavoro dal vivo al link qui sotto

http://www.tutorialspoint.com/forums/posting.php?mode=post&f=2

Fase 3 - Definire il messaggio di errore

Ora & quote; s definire un messaggio che verrà visualizzato nel caso in cui utente non immette il codice di sicurezza corretto prima di inviare la posta o qualsiasi risposta o preventivo. Apriamo il file posting.php disponibile nella directory seguente:

/ [Vostra Home Forum] / lingua / it /

Cerca ADD_ATTACHMENT e mettere la seguente riga sotto la riga come segue:

$ Lang = array_merge ($ lang, array (
        'ADD_ATTACHMENT' => 'Carica allegato',
        'SECURITY_CODE_ERROR' => 'Si prega di inserire il codice di sicurezza corretto di procedere.',
......

Fase 4 - Codice di Sicurezza di convalida

È quasi finito, mettiamo ultimo passo per rendere il nostro potente captcha funziona. Anche in questo caso apriamo posting.php file disponibile nella home directory del tuo forum e cercare la seguente riga:

if ($ presentare || $ anteprima || $ refresh)
{
....

Aggiungere il seguente codice all'interno di questo blocco if come segue

if ($ presentare || $ anteprima || $ refresh)
{
        if ($ presentare || $ refresh) {
           if (! isset ($ _POST [ 'security_code'])) {
              $ Error [] = $ user-> lang [ 'SECURITY_CODE_ERROR'];
           }
           if ($ _POST [ 'hidden_security_code']! = $ _POST [ 'security_code'])
           {
              $ Error [] = $ user-> lang [ 'SECURITY_CODE_ERROR'];
           }
        }
.....

Questo è tutto. Hai fatto. Ora provate a postare nessun messaggio e faccia a sfidare senza inserire il codice di sicurezza corretto che è stato generato in modo casuale :-). Se da oggi nei reparti, si ottiene meno il numero di spam allora si prega di fornire i tuoi commenti su questo post.

Conslusion

Ora avete semplicemente un grande CAPTCHA lavorare per il vostro sito che vi aiuterà a ridurre il 99,99% di spam proveniente nel tuo forum. Questo è in realtà una soluzione generica e può essere implementato con qualsiasi altro CMS (Content Management System) come WordPress, Joomla, ecc