difesa dai "Commenti spam" negli album difesa dai "Commenti spam" negli album
 

News:

CPG Release 1.6.26
Correct PHP8.2 issues with user and language managers.
Additional fixes for PHP 8.2
Correct PHP8 error with SMF 2.0 bridge.
Correct IPTC supplimental category parsing.
Download and info HERE

Main Menu

difesa dai "Commenti spam" negli album

Started by wilrino, August 13, 2007, 03:03:22 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

wilrino

Ciao a tutti.
ultimamente la mia galleria si riempie di commenti fatti da spammer (che non sò cosa ci guadagnano dato le ridotte visite che ha il mio sito)...
Inizialmente ho messo dei filtri sugli ip che si ripetevano, ma poi mi è venuto in mente dell'immaginina con le lettere da scrivere correttamente x confermare la registrazione (come su questo forum) e allora ho cercato come si poteva metterela..

Ho provato a fare come è stato scritto in + topic su questo forum, nelle pagine in inglese, ma non mi va... non mi appare l'immaginina un fondo alla pagina e ad ogni commento inserito mi dice che non ho inserito il codice di conferma corretto...
Forse è il mio povero inglese che non mi ha aiutato molto...

Qualke italiano ha già fatto questa prova?  :)

Grazie!!

Davide Renda

La soluzione ai tuoi (e, ahimé, non solo...) problemi di spam è il plugin Captcha, lo installi e chi vuole inserire un commento dovrà validarlo.
Per che funzioni, devi avere, come indicato nel topic di presentazione, le librerie GD versione 2 o superiore (dalla 2.0.28 raccomandato) con il supporto Freetype e PHP versione 4.3.5 o superiore. Chiedi al tuo host se non hai i dati sotto mano.

Se, per qualsiasi motivo, non puoi installare il plugin, l'unica soluzione è fare in modo che solo gli utenti registrati possano inviare commenti e, logicamente, che le registrazioni debbano essere validate.

wilrino

si Captcha è il plug in che ho provato

copio-incollo dalla pagina phpinfo degli strumenti admin di coppermine:

PHP 4.4.8-dev - Optimized for AlterVista

GD Version    bundled (2.0.28 compatible)
FreeType Support    enabled
FreeType Linkage    with freetype

quindi dovrebbe essere tutto a posto...

ho tentato di bloccare i commenti x gli utenti nn registrati, ma ho dovuto riabilitarlo altrimenti nessuno mi lasciava commenti...

Ho scaricato il plugin captcha, lo messo via ftp nella cartella plugins, poi configurazione - gestione plugins e poi ho cliccato sulla "i" x installare il plugin

se vado su una foto e faccio un commento, come administator funziona, mentre se faccio il logout non mi appare l'immagine con la scritta e la casella dove scriverla e una volta fatto il commento appare "Il codice di conferma non corrisponde"

ho provato a cercare a che punto appare questo messaggio nei vari codici, ma non l'ho trovata...

ho anche provato a eseguire il file configuration.php, ma non appare niente e dopo è uguale..

Ho dimenticato qualcosa?

grazie

wilrino

un'altra prova che ho fatto (leggendo nel forum inglese) è stato di eseguire /coppermine/plugins/captcha/captcha.php

e quindi la generazione funziona...

Poi nel rifare tutto quello che c'era scritto sul forum x installare il plug-in ho notato che il file theme.php non ha le righe che vengono indicate... forse è questo che mi impedisce di visualizzare la zona commenti modificata? dove le metto il codice?

Davide Renda


wilrino

#5
il tema che uso è project vii
ma ho cercato anche negli altri theme.php e non ho trovato la riga di codice da cercare x aggiungergli il resto del codice, come descritto nel post di installazione..

però questo problema l'ho risolto aggiungendo nel mio theme.php le seguenti righe di codice, trovate nel forum inglese:


// Displays comments for a specific picture
function theme_html_comments($pid)
{
    global $CONFIG, $USER, $CURRENT_ALBUM_DATA, $comment_date_fmt, $HTML_SUBST;
    global $template_image_comments, $template_add_your_comment, $lang_display_comments;

    $html = '';

//report to moderator buttons
    if (!(($CONFIG['report_post']==1) && (USER_CAN_SEND_ECARDS))) {
        template_extract_block($template_image_comments, 'report_comment_button');
    }

    if (!$CONFIG['enable_smilies']) {
        $tmpl_comment_edit_box = template_extract_block($template_image_comments, 'edit_box_no_smilies', '{EDIT}');
        template_extract_block($template_image_comments, 'edit_box_smilies');
        template_extract_block($template_add_your_comment, 'input_box_smilies');
    } else {
        $tmpl_comment_edit_box = template_extract_block($template_image_comments, 'edit_box_smilies', '{EDIT}');
        template_extract_block($template_image_comments, 'edit_box_no_smilies');
        template_extract_block($template_add_your_comment, 'input_box_no_smilies');
    }

    $tmpl_comments_buttons = template_extract_block($template_image_comments, 'buttons', '{BUTTONS}');
    $tmpl_comments_ipinfo = template_extract_block($template_image_comments, 'ipinfo', '{IPINFO}');

    if ($CONFIG['comments_sort_descending'] == 1) {
        $comment_sort_order = 'DESC';
    } else {
        $comment_sort_order = 'ASC';
    }
    $result = cpg_db_query("SELECT msg_id, msg_author, msg_body, UNIX_TIMESTAMP(msg_date) AS msg_date, author_id, author_md5_id, msg_raw_ip, msg_hdr_ip, pid FROM {$CONFIG['TABLE_COMMENTS']} WHERE pid='$pid' ORDER BY msg_id $comment_sort_order");

    while ($row = mysql_fetch_array($result)) {
        $user_can_edit = (GALLERY_ADMIN_MODE) || (USER_ID && USER_ID == $row['author_id'] && USER_CAN_POST_COMMENTS) || (!USER_ID && USER_CAN_POST_COMMENTS && ($USER['ID'] == $row['author_md5_id']));
        $comment_buttons = $user_can_edit ? $tmpl_comments_buttons : '';
        $comment_edit_box = $user_can_edit ? $tmpl_comment_edit_box : '';
        $comment_ipinfo = ($row['msg_raw_ip'] && GALLERY_ADMIN_MODE)?$tmpl_comments_ipinfo : '';

        if ($CONFIG['enable_smilies']) {
            $comment_body = process_smilies(make_clickable($row['msg_body']));
            $smilies = generate_smilies("f{$row['msg_id']}", 'msg_body');
        } else {
            $comment_body = make_clickable($row['msg_body']);
            $smilies = '';
        }

        $ip = $row['msg_hdr_ip'];
        if ($row['msg_hdr_ip'] != $row['msg_raw_ip']) {
            $ip .= ' [' . $row['msg_raw_ip'] . ']';
        }

        $params = array('{EDIT}' => &$comment_edit_box,
            '{BUTTONS}' => &$comment_buttons,
            '{IPINFO}' => &$comment_ipinfo
            );

        $template = template_eval($template_image_comments, $params);

        $params = array('{MSG_AUTHOR}' => $row['msg_author'],
            '{MSG_ID}' => $row['msg_id'],
            '{PID}' => $row['pid'],
            '{EDIT_TITLE}' => &$lang_display_comments['edit_title'],
            '{CONFIRM_DELETE}' => &$lang_display_comments['confirm_delete'],
            '{MSG_DATE}' => localised_date($row['msg_date'], $comment_date_fmt),
            '{MSG_BODY}' => bb_decode($comment_body),
            '{MSG_BODY_RAW}' => $row['msg_body'],
            '{OK}' => &$lang_display_comments['OK'],
            '{SMILIES}' => $smilies,
            '{IP}' => $ip,
            '{REPORT_COMMENT_TITLE}' => &$lang_display_comments['report_comment_title'],
            '{WIDTH}' => $CONFIG['picture_table_width']
            );

        $html .= template_eval($template, $params);
    }

    if (USER_CAN_POST_COMMENTS && $CURRENT_ALBUM_DATA['comments'] == 'YES') {
        if (USER_ID) {
            $user_name_input = '<tr><td><input type="hidden" name="msg_author" value="' . USER_NAME . '" /></td>';
            template_extract_block($template_add_your_comment, 'user_name_input', $user_name_input);
            $user_name = '';
        } else {
            $user_name = isset($USER['name']) ? '"' . strtr($USER['name'], $HTML_SUBST) . '"' : $lang_display_comments['your_name'] . '" onclick="javascript:this.value=\'\';';
        }

        $params = array('{ADD_YOUR_COMMENT}' => $lang_display_comments['add_your_comment'],
            // Modified Name and comment field
            '{NAME}' => $lang_display_comments['name'],
            '{COMMENT}' => $lang_display_comments['comment'],
            '{CONFIRM}' => $lang_display_comments['confirm'],
            '{PIC_ID}' => $pid,
            '{USER_NAME}' => $user_name,
            '{MAX_COM_LENGTH}' => $CONFIG['max_com_size'],
            '{OK}' => $lang_display_comments['OK'],
            '{SMILIES}' => '',
            '{WIDTH}' => $CONFIG['picture_table_width'],
            );

        if ($CONFIG['enable_smilies']) $params['{SMILIES}'] = generate_smilies();

        $html .= template_eval($template_add_your_comment, $params);
    }

    return $html;
}

$template_add_your_comment = <<<EOT
<table align="center" width="{WIDTH}" cellspacing="1" cellpadding="0" class="maintable">
        <tr>
                <td width="100%" class="tableh2_compact"><b>{ADD_YOUR_COMMENT}</b></td>
        </tr>
        <tr>
                <td colspan="3">
                <form method="post" name="post" action="db_input.php">
                        <table width="100%" cellpadding="0px" cellspacing="0px">

<!-- BEGIN user_name_input -->
                                <tr><td class="tableb_compact">
                                        {NAME}
                                </td>
                                <td class="tableb_compact">
                                        <input type="text" class="textinput" name="msg_author" size="10" maxlength="20" value="{USER_NAME}" />
                                </td>
<!-- END user_name_input -->
<!-- BEGIN input_box_smilies -->
                                <td class="tableb_compact">
                                {COMMENT} </td>
                                <td width="100%" class="tableb_compact">
                                <input type="text" class="textinput" id="message" name="msg_body" onselect="storeCaret_post(this);" onclick="storeCaret_post(this);" onkeyup="storeCaret_post(this);" maxlength="{MAX_COM_LENGTH}" style="width: 100%;" />                                        <!-- END input_box_smilies -->
<!-- BEGIN input_box_no_smilies -->
                                <input type="text" class="textinput" id="message" name="msg_body"  maxlength="{MAX_COM_LENGTH}" style="width: 100%;" />
<!-- END input_box_no_smilies -->
                                </td>
                                <td class="tableb_compact">
                                <input type="hidden" name="event" value="comment" />
                                <input type="hidden" name="pid" value="{PIC_ID}" />
                                <input type="submit" class="comment_button" name="submit" value="{OK}" />
                                </td></tr>
<tr>
  <td class="tableb_compact" colspan="2">
    {CONFIRM}
  </td>
  <td class="tableb_compact" colspan="2">
    <input type="text" name="confirmCode" size="5" class="textinput"> <img src="captcha.php" align="middle">
  </td>
</tr>
                        </table>
                </form>
                </td>
        </tr>
<!-- BEGIN smilies -->
        <tr>
                <td width="100%" class="tableb_compact">
                        {SMILIES}
                </td>
        </tr>
</table>
<!-- END smilies -->

EOT;

a fine del codice già presente, prima del ?> finale

ora appare tutto x inserire i commenti... solo che una volta che inserisco il commento e il codice di conferma giusto, mi appare:

Fatal error: Cannot redeclare class phpcaptcha in /membri/wilrino/coppermine/include/captcha.class.php on line 0
(solo da firefox.. da IE non appare niente)

ora mi sono arenato qui... non sò + cosa provare a cambiare..

Ha, dimenticavo..
Se da utente non registrato sbaglio il codice, mi dice Il codice di conferma non corrisponde
quindi non funziona solo quando il codice è stato verificato!

wilrino

cavolo non mi sblocco più...
se sbaglio il codice, fa il suo dovere...
ma se lo metto giusto, sia come admin ke come utente non registrato mi da sempre l'errore:
Fatal error: Cannot redeclare class phpcaptcha in /membri/wilrino/coppermine/include/captcha.class.php on line 0

non capisco se il problema stà nel db_input.php (che appare in alto, nella casella dell'indirizzo..) oppure nel file captcha.class.php
e poi nella riga 0...  ???

Davide Renda

L'unica cosa alla quale mi viene da pensare è che, forse, il plugin interferisce con un altro. Quali e quanti altri plugin hai installato sulla tua galleria? Hai provato a spostare di posizione (usando il plugin manager) Captcha e metterlo in alto?

wilrino

no, altri plug in non ne ho installati... (ci sono i 2 che ci sono sempre stati che non ho meso io: Sample Plugin ver1.0 e Search Engine Friendly URLs ver1.0; ma sono nella sezione plugin non installati)
e la prima cosa che ho fatto appena l'ho installato l'ho spostato sopra cliccando sulla I..

perchè dici che potrebbe interferire con altri plugin?
Mi sembra strano il fatto che abbia seguito tutte le istruzioni e non andava.. poi ho provato a leggere quasi tutti i post e quando leggevo che qualcuno risolveva un problema, provavo anke io la sua soluzione...

il problema che da a me.. inizia ad essere troppo nei meandri del php e programmazione varia... e quindi mi ci perdo un pò!  :-[

Davide Renda

Quoteperchè dici che potrebbe interferire con altri plugin?
A volte alcuni plugin interferiscono fra loro e, a seconda della posizione in pluginmgr, possono funzionare o meno. Questo, naturalmente, non sembra essere il caso tuo, visto che altri installati non ce ne sono.
Una domanda scema: qual è il chmod di captcha.php?
Se vuoi, metti un link alla tua galleria con tanto di login/password (utente semplice).

wilrino

qual è il chmod di captcha.php?
sarebbe a dire? non capisco...

http://wilrino.altervista.org/coppermine/index.php

utente: prova
psw: prova

Davide Renda

Controlla i permessi del file captcha.php (con il tuo client FTP) e verifica sia possibile chiamarlo.
Ho fatto alcune prove e non funziona: se sbagli il codice hai il messaggio, se lo metti corretto una pagina bianca. Temo possa trattarsi di un limite posto da Altervista.

wilrino

i permessi del file captcha.php sono questi:
(https://coppermine-gallery.com/forum/proxy.php?request=http%3A%2F%2Fimg213.imageshack.us%2Fimg213%2F4324%2Fcatturayx4.jpg&hash=8f905b3793db071dbc302c731c181edcac10b2a1)

ma le se lo richiamo direttamente: http://wilrino.altervista.org/coppermine/captcha.php
a me funziona (ho provato anke su 3 diversi pc)
però ora appare anche a me solo la pagina bianca e non la riga d'errore che mi appariva.. Hai cambiato qualcosa tu?

Davide Renda


wilrino

cavolo... non cambia niente...
ho provato a mettere le stesse proprietà anke al file db_input.php (che è quello che viene visualizzato nella barra degli indirizzi quando appare la pagina bianca)

???

Davide Renda

Sinceramente neanch'io saprei dover sbatter la testa. Mi viene solo da pensare che possa venire da Altervista, spesso gli host gratuiti e/o economici hanno di queste limitazioni.
Facci sapere se riesci a risolvere ;-)

Ludo

Quote from: wilrino on August 20, 2007, 08:42:11 PM
cavolo non mi sblocco più...
se sbaglio il codice, fa il suo dovere...
ma se lo metto giusto, sia come admin ke come utente non registrato mi da sempre l'errore:
Fatal error: Cannot redeclare class phpcaptcha in /membri/wilrino/coppermine/include/captcha.class.php on line 0

non capisco se il problema stà nel db_input.php (che appare in alto, nella casella dell'indirizzo..) oppure nel file captcha.class.php
Il problema sta nel fatto che probabilmente hai installato sia il plugin che il mod Captcha, e quindi ti trovi a caricare 2 volte la classe: elimina il file include/captcha.class.php e gli altri file/modifiche del mod.

Mi aggancio a questa vecchia discussione, in cui si parla di hosting Altervista, per segnalare un fatto curioso, già inutilmente denunciato nel forum generale: pur dopo mille tentativi di installazione, non ho trovato il modo di far funzionare il plugin Captcha. L'immagine col codice, richiamando captcha.php, viene visualizzata correttamente, ma non compare (nè compaiono i campi per l'inserimento) nelle pagine dove è richiesta (registrazione e commenti).
Per fortuna sono riuscito a far funzionare, sia pure dopo qualche tentativo, almeno il mod per i commenti (che ho a sua volta modificato per mostrare il codice di conferma solo agli ospiti)....ma vi sono stati nel forum italiano casi simili?

wilrino

io alla fine ho riportato tutto su un dominio aruba ed è funzionato al primo tentativo... ero proprio altervista che dava problemi..

io proverei a spostarlo su un'altro dominio (magari free) tanto per provare..

Ludo

No, beh, una volta che funziona il mod per i commenti non ho altre esigenze...e poi Altervista mi soddisfa appieno per rapporto costi/benefici.
Però qualche funzione di PHP deve essere disabilitata, oppure dev'esserci qualche configurazione anomala, perchè oltre al plugin Captcha non mi funzionava neppure il filtro del plugin Search Album per la sostituzione del link a 'search.php' con quello impostato dal plugin stesso (ho dovuto riabilitare il "vecchio metodo", per fortuna lasciato nel codice commentato dal buon Paver): insomma, tutti filtri per la sostituzione di parti dell'HTML della pagina con altro codice. Quando ho tempo, indagherò nell'API dei plugin...