Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: Spam in Guestbook txt

  1. #1

    Spam in Guestbook txt

    Salve a tutti .
    Gestisco da qualche tempo un sito di classe tra amici, nel quale è presente un guestbook che utilizza un file txt come database (il guestbook originale lo trovate qui e, se non volete scaricare il file, qui. Io l'ho modificato aggiungendo alcune cose, ma la sostanza è quella).
    Il problema è che da circa una decina di giorni compaiono fastidiosissimi messaggi di spam che sono costretto a rimuovere manualmente...
    La domanda che ora porgo a boi, oh miei sommi maestri, è come faccio a risolvere il problema? Come faccio a inserire un captcha?
    Ho provato a usare recaptcha ma non credo di aver capito come funzioni...

    Grazie in anticipo a tutti!

  2. #2
    Proteggersi dallo spam... la sola soluzione è quella che mi viene in mente akismet.

    Ma se hai avuto difficoltà a integrare il recapcha credo che sia un pò ostico per te integrarlo.
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  3. #3
    Originariamente inviato da oly1982
    Proteggersi dallo spam... la sola soluzione è quella che mi viene in mente akismet.

    Ma se hai avuto difficoltà a integrare il recapcha credo che sia un pò ostico per te integrarlo.
    Innanzitutto grazie per la risposta!
    Non è tanto quello il problema: ho buone conoscenze di php... Ho seguito le istruzioni del sito ( vedi qui, ma ho 2 problemi:
    - La guida dice "Now, verify.php is the destination file in which the values of this form are submitted to. So you will need a file verify.php in the same location as the client html.", ma cosa metto nel file verify.php se il guestbook è tutto in un unica pagina? Rimando tutto alla stessa pagina?
    - Quando richiamo la funzione"require_once('recaptchalib.php')", altervista mi segnala un errore, nonostante io abbia caricato il file...

    Akismet è a pagamento, non mi pare conveniente pagare per una cosa che può essere fatta aggiungendo poche righe al mio codice !

    Aspetto altri suggerimenti!

    EDIT: Finalmente altervista non dà più errore... Il problema è che ora non compare il captcha, ma solo il bottone "submit". Se provo a scrivere un messaggio non viene nemmeno pubblicato il contenuto, ma solo l'autore...

  4. #4
    per blog e siti personali non è a pagamento (offerta libera)
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  5. #5
    Originariamente inviato da oly1982
    per blog e siti personali non è a pagamento (offerta libera)
    Ho fatto la richiesta su Akismet, ma mi sono arrivate solo istruzioni per attivarlo su Wordpress...

    Non potresti farmi un esempio di come inserire il codice (recaptcha o akismet) nel guestbook (il sorgente l'ho lincato all'inizio)? Te ne sarei molto grato.

  6. #6
    Akismet su WP mi sembra ia integrato di default.

    Invece, integrare akismet nel tuo script non è una cosa che si fa su due piedi. Inoltre tenendo conto della possibilità (seppur rara) di false rilevazioni sarebbe comodo un database mysql.

    Il recapcha è più sbrigativo. Anzitutto:
    1) scaricati la recapchalib.php
    2) registrati e procurati la publickey e la privatekey.

    Fatto tutto ciò per inserire il recapcha nel form farai

    Codice PHP:
    <?php
    /*imposti le key pubblica*/
    $_RECAPTCHA['publickey']         = ".....";

    /*includi la libreria*/
    require_once('recapchalib.php');
    # the response from reCAPTCHA
    $resp null;
    # the error code from reCAPTCHA, if any
    $error null;
    recaptcha_get_html($_RECAPTCHA['publickey'], $error);
    ?>
    Prima di inserire il commento per verificare che il codice inserito sia esatto farai:
    Codice PHP:
    if( (!isset($_POST["recaptcha_response_field"])) or (empty($_POST["recaptcha_response_field"])) ){
            exit(
    'input inesistente');
            
    //return FALSE;
            
    }

    /*imposti la key privata*/
    $_RECAPTCHA['privatekey'] = ".....";

    /*includi la libreria*/
    require_once('recapchalib.php');
    # the response from reCAPTCHA
    $resp null;
    # the error code from reCAPTCHA, if any
    $error null;
    $resp recaptcha_check_answer ($_RECAPTCHA['privatekey'],
                                            
    $_SERVER["REMOTE_ADDR"],
                                            
    $_POST["recaptcha_challenge_field"],
                                            
    $_POST["recaptcha_response_field"]);

    if(!
    $resp->is_valid){
    exit(
    'errore nel capcha');

    Ho fatto dei copia incolla da miei codici... spero di non aver fatto casini
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  7. #7
    Grazie mille per l'aiuto. Purtroppo non compare nulla...
    Credo che il problema sia qui :

    Codice PHP:
    function leggi_dati() { $html_form_immissione 
    dato che il codice va messo fra apici...

    Ti riporto comunque le parti del codice interessate, così magari puoi suggerirmi qualcos'altro:

    Per l'inserimento, ho modificato da riga 241 del codice originale così:

    Codice PHP:
        // Inserire nuovo commento
        
    function aggiungi_record(){
            
    $test_non_vuoto trim($_POST["nome"].$_POST["commento"]);
            
            
            
            if( (!isset(
    $_POST["recaptcha_response_field"])) or (empty($_POST["recaptcha_response_field"])) ){ 
            exit(
    'input inesistente'); 
            
    //return FALSE; 
            


    /*imposti la key privata*/ 
    $_RECAPTCHA['privatekey'] = "qui-ho-messo-il-mio-codice"

    /*includi la libreria*/ 
    require_once('recapchalib.php'); 
    # the response from reCAPTCHA 
    $resp null
    # the error code from reCAPTCHA, if any 
    $error null
    $resp recaptcha_check_answer ($_RECAPTCHA['privatekey'], 
                                            
    $_SERVER["REMOTE_ADDR"], 
                                            
    $_POST["recaptcha_challenge_field"], 
                                            
    $_POST["recaptcha_response_field"]); 

    if(!
    $resp->is_valid){ 
    exit(
    'errore nel capcha'); 
    }




            if (
    $test_non_vuoto != "") {
                
    $this->linea $this->separatore_righe.$_POST["dataora"].$this->separatore_campi.$_POST["nome"].$this->separatore_campi.$_POST["email"].$this->separatore_campi.$_POST["citta"].$this->separatore_campi.$_POST["contatto"].$this->separatore_campi.$_POST["commento"]."\r\n";
                
    $puntatore fopen($this->nomefile"a");
                
    $this->linea $this->striptags($this->linea);
                
    fputs($puntatore$this->linea);
                
    fclose($puntatore); 

    L'altra modifica (che come ho detto prima penso sia quella sbagliata) parte dalla riga 253 del codice originale. Ho dovuto inserire dei backslash nel tuo codice altrimenti mi dava errore:

    codice:
    // metodo per la raccolta dati di un nuovo record
    	function leggi_dati() {
    		$html_form_immissione = '
    			<script language="JavaScript">
    				<!--
    					function controlla() {
    						if ((document.inseriscirecord.nome.value == \'\') || (document.inseriscirecord.commento.value == \'\')) {
    							alert(\'inserisci almeno il nome e un commento!\');
    							return false;
    						} else {
    							return true;
    						}
    					}
    				//-->
    			</script>
    			<form method="post" action="guestbook.php" name="inseriscirecord" onSubmit="return controlla();">
      				<table border="0" width="'.($this->larghezza_tabella - 2).'" cellspacing="1" cellpadding="4" class="tabellainterna">
    					<tr>
    						<td colspan="2" class="intestazione" width="'.($this->larghezza_tabella - 2).'">
    							Firma il nostro guestbook!
    						</td>
    					</tr>
    
    
    
    	[non riporto qui l'intero codice per motivi di lunghezza]
    					
    
    
    <tr>
    						<th align="left" valign="top">
    							commenti: 
    						</th>
    						<td>
    							<textarea name="commento" rows="5" cols="45" class="areatesto"></textarea>
    						</td>
    					</tr>
    					
    					<tr>
    					
    					<?php 
    /*imposti le key pubblica*/ 
    $_RECAPTCHA[\'publickey\']         = "6LecqdISAAAAAIIJSNOHjLzHtvA4tjT5yKvxNTyj"; 
    
    /*includi la libreria*/ 
    require_once(\'recaptchalib.php\'); 
    # the response from reCAPTCHA 
    $resp = null; 
    # the error code from reCAPTCHA, if any 
    $error = null; 
    recaptcha_get_html($_RECAPTCHA[\'publickey\'], $error); 
    ?> 
    
    
    					<tr>
    						<td colspan="2" class="intestazione">
    							<input type="hidden" value="inserimento" name="azione">
    							<input type="hidden" name="dataora" value="'.$this->dataora_attuale().'">
    							<input type="submit" name="postati" value="vai !" class="pulsanti">
    							<input type="reset" name="cancell" value="cancella" class="pulsanti">
    						</td>
    					</tr>	
    				</table>
    			</form>
    		';
    		return $html_form_immissione;
    	}
    }
    $guests = new guestbook();
    if (isset($_POST["azione"]) && ($_POST["azione"] == "inserimento")) {
    	$guests->aggiungi_record();
    } 
    $html = "<table><tr><td>";
    if (isset($_POST["azione"]) && ($_POST["azione"] == "dettagli")) {
    	$html .= $guests->mostra_record($_POST["indice"]);
    } else {
    	$html .= $guests->mostra_lista();
    }
    $html .= "</td></tr><tr><td>";
    $html .= $guests->leggi_dati();
    $html .= "</td></tr></table>";
    unset($guests);


  8. #8
    Up!

  9. #9
    Up, up, uppppppppp!!!!!

  10. #10
    Up! Nessuno sa aiutarmi?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.