Visualizzazione risultati 1 fino 15 di 15

Discussione: Problema con gli spam bot sul mio guestbook

  1. #1
    Data registrazione
    07-01-2012
    Messaggi
    0

    Unhappy Problema con gli spam bot sul mio guestbook

    Salve a tutti ho un problema con gli spam bot sul mio guestbook mi rompono da mesi purtroppo il guestbook che era ottimo di altervista come sapete è stato dismesso e ho dovuto farne uno io in php ma aggiungendo il recaptcha di google non mi funziona ho provato diversi codici ma nessuno sembra funzionare potete aiutarmi per favore vi linko il mio sito web: chatdivertimento.altervista.org per adesso ho ovviato bloccando dal codice per inserire i commenti oppure ogni santo giorno e ora dovevo riaggiornare il file guests.txt che è dove finiscono i commenti cancellando così quelli dei bot in pratica manualmente e mi son scocciato di farlo!!Grazie a chi mi saprà aiutare.

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,173

    Predefinito

    Anni fa avevo provato recaptcha e sembra ancora funzionante (vedi qui).

    Vedo però che ora c'è una nuova versione. Puoi mostrare come hai effettuato il controllo lato PHP?

    Ciao!
    Ultima modifica di alemoppo : 08-09-2021 alle ore 00.42.33

  3. #3
    Data registrazione
    07-01-2012
    Messaggi
    0

    Predefinito

    si eccoti il codice che ho:

    Codice PHP:
    <td colspan="2" class="intestazione">
    <input type="hidden" value="inserimento" name="azione">
    <input type="hidden" name="dataora" value="'.$this->dataora_attuale().'">
    <div class="g-recaptcha" data-sitekey="6LfHA0scAAAAADYev-zAHPdbv9xXNmM3SJ2BX5I_"></div>
    <input type="submit" name="postati" value="Invia" class="pulsanti">
    <input type="reset" name="cancell" value="cancella" class="pulsanti">
    <!--<div class="frc-captcha" data-sitekey="FCMVGA4CT9IE4I53" data-callback="myCallback"></div>-->
    </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);
    ?>
    <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title> Guestbook </title>
    <meta name="Generator" content="EditPlus">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">

    <script language="JavaScript" type="text/javascript"><!--

    var tdmessaggio="Aiaiaia Giu' Le Mani!!";

    // Autore dello script: Morpheus™

    // Funzione che disabilita il tasto destro su Internet Explorer
    function clickIE4(){ if(event.button==2){ if(tdmessaggio!= '') alert(tdmessaggio); return false; } }

    // Funzione che disabilita il tasto destro su Netscape e FireFox
    function clickNS4(e){
    if (document.layers||document.getElementById&&!document.all){ if (e.which==2||e.which==3){ if(tdmessaggio!= '') alert(tdmessage); return false; } }
    }

    // Controlli per la selezione del browser
    if (document.layers){ document.captureEvents(Event.MOUSEDOWN); document.onmousedown=clickNS4; }
    else if (document.all&&!document.getElementById){ document.onmousedown=clickIE4; }
    document.oncontextmenu=function(){ if(tdmessaggio!= '') alert(tdmessaggio); return false;};

    //--></script>

    <script src="https://www.google.com/recaptcha/api.js"></script>

    <?php
    if (isset($_POST['postati'])) {

    $response = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=6LfHA0scAAAAAKb1Gv6gJIWVJ_uL1IwPGzi3Uo8Z&response='.$_POST['g-recaptcha-response'].'&remoteip='.$_SERVER['REMOTE_ADDR']);
    $responseDecoded = json_decode($response);
    if (
    $responseDecoded->success == true ) {

    // verifica andata a buon fine

    } else {

    // verifica non andata a buon fine

    }

    }
    ?>
    Ultima modifica di chatdivertimento : 08-09-2021 alle ore 01.45.00

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,173

    Predefinito

    E l'inserimento lo fai al posto di "// verifica andata a buon fine"? Oppure questo è il codice completo? Se è il codice completo, devi spostare:
    Codice PHP:
    if (isset($_POST["azione"]) && ($_POST["azione"] == "inserimento")) {
    $guests->aggiungi_record();
    }
    In quel punto: il metodo aggiungi_record() immagino aggiunga appunto il commento: questo devi farlo solamente se il captcha è stato "passato".

    Ciao!

  5. #5
    Data registrazione
    07-01-2012
    Messaggi
    0

    Thumbs up

    Uhm ho provato ma non va cmq il codice intero è questo qua:
    Codice PHP:
    <?php
    /*
    Text Guestbook Matrix
    script per gestire un libro degli ospiti utilizzando un file di testo
    data: 18 Febbraio 2021
    Autore: Morpheus™
    Potete distribuire questo script per usi non commerciali e modificarlo
    come desiderate. Vi prego di citare sempre l'autore originale e di
    evidenziare e firmare eventuali modifiche. Grazie.
    */
    class guestbook {
    // parametri
    var $separatore_righe = "--inizioriga--";
    var
    $separatore_campi = "--finecampo--";
    // numero di record mostrato per pagina: è possibile modificare questo valore a vostro piacimento
    var $record_per_pagina = 3;
    // informazioni sulla locazione e sul nome del file di testo
    var $percorso_fisico_guest = "";
    var
    $guesttxt = "guests.txt";
    var
    $nomefile;
    // larghezza in pixel della tabella esterna
    var $larghezza_tabella = "450";
    // settando questa opzione a vero, il visitatore potrà visualizzare i dettagli di un singolo record
    var $mostra_dettagli = true;
    // caratteristiche del guestbook
    var $righe = array();
    var
    $posizione;
    var
    $numero_righe;
    var
    $book;
    var
    $linea;
    // COSTRUTTORE
    function guestbook() {
    $this->nomefile = $this->percorso_fisico_guest.$this->guesttxt;
    if (isset(
    $_POST["indietro"]) || isset($_POST["avanti"])) {
    $this->posizione = $_POST["posizione"];
    $this->leggi_guestbook();
    } else {
    if (isset(
    $_POST["azione"]) && ($_POST["azione"] == "inserimento")) {
    $this->posizione = 0;
    } else {
    $this->leggi_guestbook();
    $this->posizione = 0;
    }
    }
    }
    // metodo per il calcolo della data
    function dataora_attuale() {
    $mesi = array("gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre");
    $mese = (int)date("m") - 1;
    $data = date("d")." ".$mesi[$mese]." ".date("Y");
    $ora = strftime ("%H:%M");
    $data_finale = $data." ore: ".$ora;
    return
    $data_finale;
    }
    // rimozione tag HTML
    function striptags($stringa) {
    $tag_consentiti = '<b><i><u><br>';
    return
    strip_tags($stringa, $tag_consentiti );
    }
    // metodo per leggere il file di testo. Verrà memorizzato nella caratteristica $book
    function leggi_guestbook() {
    if (!
    file_exists($this->nomefile)) {
    echo
    '
    <h2>ERRORE:</h2>
    Il file '
    .$this->nomefile.' non è presente su disco.<br>
    Createlo, anche vuoto, e riavviate lo script
    '
    ;
    die;
    }
    $dimensione = filesize ($this->nomefile);
    if (
    $dimensione == 0) {
    $this->numero_righe = 0;
    return;
    }
    $this->book = stripslashes(file_get_contents($this->nomefile));
    $this->righe = split($this->separatore_righe, $this->book);
    $this->righe = array_reverse($this->righe);
    $this->numero_righe = count($this->righe) - 1;
    }
    // metodo per mostrare un singolo record
    function mostra_record($indice) {
    list (
    $dataora, $nome, $email, $commento) = split($this->separatore_campi, $this->righe[$indice]);
    $html_record = '<table border="0" width="'.($this->larghezza_tabella-4).'" class="tabellaesterna">';
    $html_record .= '
    <tr>
    <td>
    <table border="0" width="'
    .($this->larghezza_tabella-20).'" cellspacing="1" cellpadding="4" class="tabellainterna">
    <tr>
    <td width="100" align="left" class="intestazione">
    inserito il:
    </td>
    <td align="left" class="testo">
    '
    .$dataora.'
    </td>
    </tr>
    <tr>
    <td width="100" align="left" class="intestazione">
    Nome:
    </td>
    <td align="left" class="testo">
    '
    .$this->striptags($nome).'
    </td>
    </tr>
    <tr>
    <td width="100" align="left" class="intestazione">
    e-mail:
    </td>
    <td align="left" class="testo">
    '
    .$this->striptags($email).'
    </td>
    </tr>
    <tr>
    <td width="100" align="left" class="intestazione" valign="top">
    Commento:
    </td>
    <td align="left" class="testo" valign="top">
    '
    .$this->striptags($commento).'
    </td>
    </tr>
    </table>
    </td>
    </tr>
    '
    ;
    $html_record .= '<tr><td><a class="pulsanti" href="guestbook.php">torna alla lista</a></td></tr>';
    $html_record .= '</table>';
    return
    $html_record;
    }
    // metodo per gestire la visualizzazione della lista dei record con paginazione
    function mostra_lista() {
    if (
    $this->numero_righe == 0) {
    return
    "<strong><font color=#00C300>Nessuno fin ora ha firmato il Guestbook</font></strong>";
    }
    $limite = $this->record_per_pagina; // numero di record mostrati per pagina
    if (isset($_POST["indietro"])) {
    $this->posizione--;
    $inizio = $this->posizione*$limite;
    } else if (isset(
    $_POST["avanti"])) {
    $this->posizione++;
    $inizio = $this->posizione*$limite;
    } else {
    $inizio = 0;
    }
    $contatore = 0;
    $indice_riga = $inizio;
    $html_lista = '<table border="0" width="'.($this->larghezza_tabella-4).'" class="tabellaesterna">';
    while ((
    $indice_riga < $this->numero_righe) && ($contatore < $limite)) {
    list (
    $dataora, $nome, $email, $commento) = split($this->separatore_campi, $this->righe[$indice_riga]);
    if (
    $this->mostra_dettagli) {
    $dettagli = '<a class="pulsanti" href="javascript: document.mostradettagli.indice.value=\''.$indice_riga.'\'; document.mostradettagli.submit()">dettagli</a>';
    } else {
    $dettagli = '';
    }
    $html_lista .= '
    <tr>
    <td valign="top">
    <table border="0" width="'
    .($this->larghezza_tabella-26).'" cellspacing="0" cellpadding="4" class="tabellainterna" align="center">
    <tr>
    <td width="100" align="left" class="intestazione">
    Nome:
    </td>
    <td align="left" class="testo">
    '
    .$this->striptags($nome).'
    </td>
    </tr>
    <tr>
    <td valign="top" width="100" align="left" class="intestazione">
    Commento:
    </td>
    <td valign="top" align="left" class="testo">
    '
    .ereg_replace("\n", "<br>", $this->striptags($commento)).'
    </td>
    </tr>
    <tr>
    <td align="left" width="100" valign="top" class="intestazione">
    '
    .$dettagli.'
    </td>
    <td align="right">
    '
    .$dataora.'
    </td>
    </tr>
    </table>
    <td>
    </tr>
    '
    ;
    $contatore++;
    $indice_riga++;
    }
    $html_pulsanti = '';
    if (
    $this->numero_righe > $limite) {
    if (
    $inizio >= $limite) {
    $html_pulsanti .= '<input type="submit" value="<<" name="indietro" class="pulsanti">&nbsp;&nbsp;&nbsp;';
    }
    if (
    $indice_riga < $this->numero_righe) {
    $html_pulsanti .= '<input type="submit" value=">>" name="avanti" class="pulsanti">&nbsp;&nbsp;&nbsp;';
    }
    }
    $html_lista .= '
    <form method="post" action="guestbook.php" name="pageing">
    <tr>
    <td>
    <input type="hidden" value="mostralista" name="azione">
    <input type="hidden" name="posizione" value="'
    .$this->posizione.'">
    '
    .$html_pulsanti.'
    </td>
    </tr>
    </form>
    '
    ;
    $html_lista .= '
    </table>
    <form method="post" action="guestbook.php" name="mostradettagli">
    <input type="hidden" value="dettagli" name="azione">
    <input type="hidden" name="indice" value="">
    </form>
    '
    ;
    return
    $html_lista;
    }
    // Metodo per l'inserimento di un nuovo record
    function aggiungi_record() {
    $test_non_vuoto = trim($_POST["nome"].$_POST["email"].$_POST["commento"]);
    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["commento"]."\r\n";
    $puntatore = fopen($this->nomefile, "a");
    $this->linea = $this->striptags($this->linea);
    fputs($puntatore, $this->linea);
    fclose($puntatore);
    }
    $this->leggi_guestbook();
    }
    // 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>

  6. #6
    Data registrazione
    07-01-2012
    Messaggi
    0

    Predefinito

    ho dovuto dividerlo in due non ci andava tutto in uno ecco il resto:

    Codice PHP:
    <form method="post" action="guestbook.php" name="inseriscirecord" id="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>
    <tr>
    <th align="left">
    &nbsp;nome:
    </th>
    <td>
    <input type="text" name="nome" size="40" class="areatesto">
    </td>
    </tr>
    <tr>
    <th align="left">
    &nbsp;e-mail:
    </th>
    <td>
    <input type="text" name="email" size="40" class="areatesto">
    </td>
    </tr>
    <tr>
    <th align="left" valign="top">
    &nbsp;commenti:
    </th>
    <td>
    <textarea name="commento" rows="5" cols="45" class="areatesto"></textarea>
    </td>
    </tr>
    <tr>
    <td colspan="2" class="intestazione">
    <input type="hidden" value="inserimento" name="azione">
    <input type="hidden" name="dataora" value="'.$this->dataora_attuale().'">
    <div class="g-recaptcha" data-sitekey="6LfHA0scAAAAADYev-zAHPdbv9xXNmM3SJ2BX5I_"></div>
    <input type="submit" name="postati" value="Invia" class="pulsanti">
    <input type="reset" name="cancell" value="cancella" class="pulsanti">
    <!--<div class="frc-captcha" data-sitekey="FCMVGA4CT9IE4I53" data-callback="myCallback"></div>-->
    </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);
    ?>
    <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title> Guestbook </title>
    <meta name="Generator" content="EditPlus">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">

    <script language="JavaScript" type="text/javascript"><!--

    var tdmessaggio="Aiaiaia Giu' Le Mani!!";

    // Autore dello script: Morpheus™

    // Funzione che disabilita il tasto destro su Internet Explorer
    function clickIE4(){ if(event.button==2){ if(tdmessaggio!= '') alert(tdmessaggio); return false; } }

    // Funzione che disabilita il tasto destro su Netscape e FireFox
    function clickNS4(e){
    if (document.layers||document.getElementById&&!document.all){ if (e.which==2||e.which==3){ if(tdmessaggio!= '') alert(tdmessage); return false; } }
    }

    // Controlli per la selezione del browser
    if (document.layers){ document.captureEvents(Event.MOUSEDOWN); document.onmousedown=clickNS4; }
    else if (document.all&&!document.getElementById){ document.onmousedown=clickIE4; }
    document.oncontextmenu=function(){ if(tdmessaggio!= '') alert(tdmessaggio); return false;};

    //--></script>

    <script src="https://www.google.com/recaptcha/api.js"></script>

    <?php
    if (isset($_POST['postati'])) {

    $response = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=6LfHA0scAAAAAKb1Gv6gJIWVJ_uL1IwPGzi3Uo8Z&response='.$_POST['g-recaptcha-response'].'&remoteip='.$_SERVER['REMOTE_ADDR']);
    $responseDecoded = json_decode($response);
    if (
    $responseDecoded->success == true ) {

    // verifica andata a buon fine

    } else {

    // verifica non andata a buon fine

    }

    }

    ?>

    <!--<script type="module" src="https://unpkg.com/friendly-challenge@0.8.12/widget.module.min.js" async defer></script>
    <script nomodule src="https://unpkg.com/friendly-challenge@0.8.12/widget.min.js" async defer></script>
    <script>import { useEffect, useRef } from "react";
    import { WidgetInstance } from 'friendly-challenge';

    const FriendlyCaptcha = () => {
    const container = useRef();
    const widget = useRef();

    const doneCallback = (solution) => {
    console.log('Captcha was solved. The form can be submitted.');
    console.log(solution);
    }

    const errorCallback = (err) => {
    console.log('There was an error when trying to solve the Captcha.');
    console.log(err);
    }

    useEffect(() => {
    if (!widget.current && container.current) {
    widget.current = new WidgetInstance(container.current, {
    startMode: "auto",
    doneCallback: doneCallback,
    errorCallback: errorCallback
    });
    }

    return () => {
    if (widget.current != undefined) widget.current.reset();
    }
    }, [container]);

    return (
    <div ref={container} className="frc-captcha" data-sitekey="6LfHA0scAAAAADYev-zAHPdbv9xXNmM3SJ2BX5I_" />
    );
    }

    export default FriendlyCaptcha;
    </script>-->


    <style>
    .tabellaesterna
    {

    background-color: #00C300;
    text-decoration: none;
    color: #FFFFFF;
    font-family: Verdana;
    font-size: 9pt;
    padding-top: 4pt;
    padding-right: 4pt;
    padding-bottom: 4pt;
    padding-left: 4pt;
    border-width: 2px;
    border-style: outset;
    empty-cells: show;
    font-weight: bold;
    margin: 0px;
    }
    .pulsanti
    {
    background-color: #FFFFFF;
    font-family: Tahoma, Verdana;
    font-size: 8pt;
    font-weight: bold;
    font-style: normal;
    font-variant: normal;
    font-stretch: normal;
    color: #00C300;
    border-width: 1px;
    border-style: outset;
    border-color: #00C300;
    outline-style: double;
    outline-width: 1px;
    padding: 1px;
    margin: 1px;
    text-decoration: none;
    }
    .areatesto
    {
    font-family: Verdana, Tahoma, Arial;
    font-size: 8pt;
    font-weight: normal;
    font-style: normal;
    font-variant: normal;
    font-stretch: normal;
    font-size-adjust: none;
    color: #000000;
    text-decoration: none;
    text-align: left;
    text-transform: none;
    vertical-align: middle;
    line-height: normal;
    word-spacing: normal;
    letter-spacing: normal;
    white-space: normal;
    margin-top: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
    margin-left: 0px;
    padding-top: 1px;
    padding-right: 1px;
    padding-bottom: 1px;
    padding-left: 1px;
    border-width: 1px;
    border-style: inset;
    border-color: #000000;
    outline-width: 0px;
    outline-style: none;
    background-color: #FFFFFF;
    }
    .tabellainterna
    {
    background-color: #00C300;
    text-decoration: none;
    color: #FFFFFF;
    font-family: Verdana;
    font-size: 9pt;
    border-width: 1px;
    border-style: solid;
    border-color: #00C300;
    margin: 0px;
    padding: 0px;
    }
    .intestazione
    {
    background-color: #00C300;
    color: #FFFFFF;
    font-style: normal;
    font-weight: bold;
    font-family: Verdana;
    font-size: 9pt;
    }
    .testo
    {
    font-family: Tahoma;
    font-size: 9pt;
    background-color: #00C300;
    }
    </style>
    </head>
    <body>
    <?=$html?>
    </body>
    </html>

  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,173

    Predefinito

    Io vedo ancora:
    Codice PHP:
    if ( $responseDecoded->success == true ) {

    // verifica andata a buon fine

    } else {

    // verifica non andata a buon fine

    }
    Hai capito cosa ti ho suggerito nel precedente messaggio?

    Ciao!

  8. #8
    Data registrazione
    07-01-2012
    Messaggi
    0

    Predefinito

    Ciao si ho provato come mi hai detto tu ma non funziona cmq dice nessuno ha firmato il guestbook rimane come bloccato e non da nessun commento!!Ti metto il codice online come mi hai suggerito provalo tu stesso e vedi!!
    http://chatdivertimento.altervista.org/guestbook.php

  9. #9
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,173

    Predefinito

    Se spunto il captcha, appare:
    Codice PHP:
    Fatal error: Call to a member function aggiungi_record() on null in /membri/chatdivertimento/guestbook.php on line 344
    Invece se non lo spunto, appare quel che dici, perché appunto non è stato superato il test.

    Credo tu abbia richiamato solo il metodo aggiungi_record() come se fosse una funzione (senza $guests->aggiungi_record())

    Ciao!
    Ultima modifica di alemoppo : 09-09-2021 alle ore 22.41.14

  10. #10
    Data registrazione
    07-01-2012
    Messaggi
    0

    Predefinito

    Ho fatto togliendo il
    Codice PHP:
    $guests->aggiungi_record()
    ma così facendo aggiunge il commento anche se non verifica il capatcha e quindi non funziona!!

  11. #11
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,173

    Predefinito

    Senza vedere però il codice fiale mi è impossibile aiutarti. Puoi mostrarlo?

    Ciao!

  12. #12
    Data registrazione
    07-01-2012
    Messaggi
    0

    Predefinito

    Ciao si certo eccoti il codice finale:
    Codice PHP:
    <?php
    if (isset($_POST['postati'])) {

    $response = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=6LfHA0scAAAAAKb1Gv6gJIWVJ_uL1IwPGzi3Uo8Z&response='.$_POST['g-recaptcha-response'].'&remoteip='.$_SERVER['REMOTE_ADDR']);
    $responseDecoded = json_decode($response);
    if (
    $responseDecoded->success == true ) {

    if (isset(
    $_POST["azione"]) && ($_POST["azione"] == "inserimento")) {



    } else {

    // verifica non andata a buon fine

    }

    }

    ?>

  13. #13
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,173

    Predefinito

    Non vedo il:
    Codice PHP:
    $guests->aggiungi_record();
    Cerca di capire il codice cosa fa, devi eseguire la stessa cosa che facevi prima, ma questa volta solo con la condizione:
    Codice PHP:
    ( $responseDecoded->success == true )
    Ciao!

  14. #14
    Data registrazione
    07-01-2012
    Messaggi
    0

    Predefinito

    Non funziona cmq eccoti il codice completo:

    Codice PHP:
    <td colspan="2" class="intestazione">
    <input type="hidden" value="inserimento" name="azione">
    <input type="hidden" name="dataora" value="'.$this->dataora_attuale().'">
    <div class="g-recaptcha" data-sitekey="6LfHA0scAAAAADYev-zAHPdbv9xXNmM3SJ2BX5I_"></div>
    <input type="submit" name="postati" value="Invia" class="pulsanti">
    <input type="reset" name="cancell" value="cancella" class="pulsanti">
    <!--<div class="frc-captcha" data-sitekey="FCMVGA4CT9IE4I53" data-callback="myCallback"></div>-->
    </td>
    </tr>
    </table>
    </form>
    ';
    return $html_form_immissione;
    }
    }
    $guests = new guestbook();
    $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);
    ?>
    <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title> Guestbook </title>
    <meta name="Generator" content="EditPlus">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">

    <script language="JavaScript" type="text/javascript"><!--

    var tdmessaggio="Aiaiaia Giu' Le Mani!!";

    // Autore dello script: Morpheus™

    // Funzione che disabilita il tasto destro su Internet Explorer
    function clickIE4(){ if(event.button==2){ if(tdmessaggio!= '') alert(tdmessaggio); return false; } }

    // Funzione che disabilita il tasto destro su Netscape e FireFox
    function clickNS4(e){
    if (document.layers||document.getElementById&&!document.all){ if (e.which==2||e.which==3){ if(tdmessaggio!= '') alert(tdmessage); return false; } }
    }

    // Controlli per la selezione del browser
    if (document.layers){ document.captureEvents(Event.MOUSEDOWN); document.onmousedown=clickNS4; }
    else if (document.all&&!document.getElementById){ document.onmousedown=clickIE4; }
    document.oncontextmenu=function(){ if(tdmessaggio!= '') alert(tdmessaggio); return false;};

    //--></script>

    <script src="https://www.google.com/recaptcha/api.js"></script>

    <?php
    if (isset($_POST['postati'])) {

    $response = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=6LfHA0scAAAAAKb1Gv6gJIWVJ_uL1IwPGzi3Uo8Z&response='.$_POST['g-recaptcha-response'].'&remoteip='.$_SERVER['REMOTE_ADDR']);
    $responseDecoded = json_decode($response);
    if (
    $responseDecoded->success == true ) {

    if (isset(
    $_POST["azione"]) && ($_POST["azione"] == "inserimento")) {

    // verifica andata a buon fine

    } else {

    // verifica non andata a buon fine

    }

    }
    }
    ?>
    così facendo inserisce il commento saltando la verifica del capatcha!!

  15. #15
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,173

    Predefinito

    A parte che il controllo del captcha andrebbe fatto prima dell'eventuale salvataggio del messaggio, così da mostrare eventualmente anche il nuovo messaggio.

    Comunque, finché non capirai il codice, è inutile continuare.
    Devi prima capire come funziona il tuo codice, poi come funziona il controllo e poi metterli assieme (quest'ultimo codice mi sembra identico a quello del 08-09-2021, 01.40.32).

    I passi che ti suggerirei di capire sono:

    1. Il vecchio codice, con quale istruzione salva i commenti?
    2. Il vecchio codice, con quale istruzione legge e stampa a video i commenti?
    3. Il codice di controllo, cosa esegue in caso di fallimento del captcha?
    4. Il codice di controllo, cosa esegue in caso di verifica del captcha?


    Per verificare i primi 2 punti, potresti (uno alla volta) eliminare l'istruzione individuata e vedere che non venga eseguita solo quella azione.
    Per verificare gli ultimi 2 punti, potresti fare uso delle echo, come avevo fatto nel mio esempio.

    Poi, semplicemente devi prendere il codice vecchio, e nel punto 1 devi aggiungere il punto 4 (ovvero salvare i commenti solo se è stato passato il test captcha).

    Ciao!
    Ultima modifica di alemoppo : 12-09-2021 alle ore 08.46.48

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •