phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Problema Guestbook php

Area di discussione relativa al linguaggio di programmazione web più conosciuto. Il forum è dedicato anche a MySQL, la piattaforma di database più utilizzata con il PHP.
Avatar utente
Sir Xiradorn
Grafico
Grafico
Messaggi: 1659
Iscritto il: 11/08/2009, 12:41
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.15
Database: MariaDB 10.1.9
Località: Lontano....
Contatta:

Re: Problema Guestbook php

Messaggio da Sir Xiradorn » 23/12/2015, 19:53

Credo che stiamo mischiando delle cose che ci stanno poco le une con le andiamo per gradi.

Tu vuoi creare un captcha giusto? Bene potresti fare un semplice array di domande e di risposte e farne il check. Facciamo un esempio semplicistico.

Questo è un esempio

Codice: Seleziona tutto

<?php
/**
 * Semplice captcha
 * Funzioni di generazione del captcha semplice con una serie di domande
 * @author Sir Xiradorn <http://xiradorn.it>
 */

/** 
 * Variabili di controllo
 */
$domande = array(
    '0'    => 'Quale è il nome del creatore di questo codice?',
    '1'    => 'Quale è il nome del sito in cui ci troviamo ora?',
    '2'    => 'Quanto fa 2 + 2 - 1?',
);

// questa variabile la possiamo attivare o meno se vuoi il testo senza vedere maiuscole e minuscole
$case_sensitive = false;

$risposte = array(
    '0'    => 'xiradorn',
    '1'    => 'phpbbitalia',
    '2'    => '3',
);

/**
 * Funzione di calcolo del captcha
 */
function xir_captcha_domanda() {
    // generiamo il captcha e andiamo a prendere la domanda da una delle presenti
    // per una migliore gestione vado a auto calcolare la lunghezza dell'array
    // usiamo questo numero per il calcolo del valore random
    $numero_random = rand(0, count($domande));

    return array(
        'domanda'             => $domande[$numero_random],
        'numero_domanda'    => $numero_random
    );
}

/**
 * Questa funzione è usata per il controllo della risposta
 * Ritornerà un vero se ho verificato la risposta. Falso se non ho verifica
 */
function xir_captcha_risposta($risposta_utente, $numero_domanda) {
    // facciamo il check e vediamo se trova la nostra risposta
    $valido = false;

    // se voglio che sia non case sensitive e quindi tutto minuscolo
    if($case_sensitive == false) {
        $risposta_utente = strtolower($risposta_utente);
    }

    // facciamo un primo confronto per filtrare subito la risposta utile
    // dato che mi sono portato il numero della domanda fuori 
    // posso pescarla senza cicli o altro e infatti
    $risposta_di_controllo = $risposte[$numero_domanda];

    // faccio il controllo
    if ($risposta_utente === $risposta_di_controllo) {
        $valido = true;
    } 

    // ritorniamo il valore di controllo se e solo se il controllo
    // si confà perfettamente al valore.
    return $valido;
}

 
Chiaro fino a qua? Se si facciamo un altro passo. Questo è un captcha davvero semplice e di basse pretese e serve per fine di spiegazione.

EDIT: Mi ero scordato una cosa
Sir Xiradorn
Immagine
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~

Immagine
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x

Jmdesign
Utente
Utente
Messaggi: 59
Iscritto il: 17/12/2015, 22:26
Sesso: Maschio
Versione: 3.0.0
Server: Windows

Re: Problema Guestbook php

Messaggio da Jmdesign » 23/12/2015, 20:02

Ok, fino a qui ci sono :D

Avatar utente
Sir Xiradorn
Grafico
Grafico
Messaggi: 1659
Iscritto il: 11/08/2009, 12:41
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.15
Database: MariaDB 10.1.9
Località: Lontano....
Contatta:

Re: Problema Guestbook php

Messaggio da Sir Xiradorn » 23/12/2015, 20:54

Vediamo un tipico caso di uso che puoi riadattare al tuo esempio:
xir_captcha.php (riveduto e corretto e funzionante - provato in locale)

Codice: Seleziona tutto

<?php
/**
 * Semplice captcha
 * Funzioni di generazione del captcha semplice con una serie di domande
 * @author Sir Xiradorn <http://xiradorn.it>
 */

/** 
 * Variabili di controllo
 */
$x_domande = array(
    '0'    => 'Quale è il nome del creatore di questo codice?',
    '1'    => 'Quale è il nome del sito in cui ci troviamo ora?',
    '2'    => 'Quanto fa 2 + 2 - 1?'
);

// questa variabile la possiamo attivare o meno se vuoi il testo senza vedere maiuscole e minuscole
$case_sensitive = false;

$x_risposte = array(
    '0'    => 'xiradorn',
    '1'    => 'phpbbitalia',
    '2'    => '3'
);

/**
 * Funzione di calcolo del captcha
 */
function xir_captcha_domanda() {
    // Riprendo le domande così non devo stare la a richiamarle
    global $x_domande;

    // generiamo il captcha e andiamo a prendere la domanda da una delle presenti
    // per una migliore gestione vado a auto calcolare la lunghezza dell'array
    // usiamo questo numero per il calcolo del valore random
    $numero_random = rand(0, count($x_domande) - 1);

    return array(
        'domanda'             => $x_domande[$numero_random],
        'numero_domanda'    => $numero_random
    );
}

/**
 * Questa funzione è usata per il controllo della risposta
 * Ritornerà un vero se ho verificato la risposta. Falso se non ho verifica
 */
function xir_captcha_risposta($risposta_utente, $numero_domanda) {
    // Riprendo le risposte così non devo stare la a richiamarle
    global $x_risposte, $case_sensitive;

    // facciamo il check e vediamo se trova la nostra risposta
    $valido = false;

    // se voglio che sia non case sensitive e quindi tutto minuscolo
    if($case_sensitive == false) {
        $risposta_utente = strtolower($risposta_utente);
    }

    // facciamo un primo confronto per filtrare subito la risposta utile
    // dato che mi sono portato il numero della domanda fuori 
    // posso pescarla senza cicli o altro e infatti
    $risposta_di_controllo = $x_risposte[$numero_domanda];

    // faccio il controllo
    if ($risposta_utente === $risposta_di_controllo) {
        $valido = true;
    } 

    // ritorniamo il valore di controllo se e solo se il controllo
    // si confà perfettamente al valore.
    return $valido;
}

il file con una piccola form che io ho chiamato index.php ma tu puoi chiamare come te pa

Codice: Seleziona tutto

<?php
/**
 * Form di uso della nostra funzione
 */

// Richiamo come prima cosa il nostro file con le funzioni
require('xir_captcha.php');

$array_domanda = xir_captcha_domanda();

$testo_domanda = $array_domanda['domanda'];
$numero_associato = $array_domanda['numero_domanda'];
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width; initial-scale=1.0">
    <title>Form Captcha</title>
    
    <style type="text/css">
        html,body { background-color: #222; }
        form {
            padding: 20px;
            margin: 0 auto;
            max-width: 50%;
            background-color: #fff;
            position: relative;
            border: 2px solid black;
        }
        label,input {
            width: 100%;
            display: block;
        }
        h1,h4 { text-align: center; color: white; }
        .submit { margin-top: 10px; }
    </style>

</head>
<body>
    <h1>Form di prova del captcha</h1>
    <form action="xir_captcha_validate.php" method="post">
        <fieldset>
            <legend>Captcha</legend>
            <label for="domanda"> <?php echo $testo_domanda; ?> </label>
            <input type="text" name="risposta_utente" id="risposta_utente" placeholder="Risposta di controllo">
            <input type="hidden" name="numero_domanda" id="numero_domanda" value="<?php echo $numero_associato ?>">
            <input type="submit" value="Verifica" class="submit">
        </fieldset>
    </form>
    <h4>Sir Xiradorn 2015</h4>
</body>
</html>
funzione di controllo validazione xir_captcha_validate.php

Codice: Seleziona tutto

<?php
/**
 * Recupero il tutto dal post e faccio la validazione
 */

// recupero la funzione del captcha
require("xir_captcha.php");

// come prima cosa recupero le variabili inviate
$numero_domanda = (isset($_POST['numero_domanda'])) ? $_POST['numero_domanda'] : 0;
$risposta_utente = (isset($_POST['risposta_utente'])) ? $_POST['risposta_utente'] : '';

// chicca per il timing
$secondi = 5;

if (xir_captcha_risposta($risposta_utente, $numero_domanda)) {
    echo "Tutto Ok";
} else {
    echo "No Alpitour? Ahiahiahihahihaihiiiiiiii. Ritenta. <br> Tra $secondi secondi verrai indirizzato alla pagina della form";
    header("Refresh:$secondi;url=index.php");
}
Ci siamo anche ora :lol: :D ???
Sir Xiradorn
Immagine
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~

Immagine
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x

Jmdesign
Utente
Utente
Messaggi: 59
Iscritto il: 17/12/2015, 22:26
Sesso: Maschio
Versione: 3.0.0
Server: Windows

Re: Problema Guestbook php

Messaggio da Jmdesign » 23/12/2015, 21:08

mmm più o meno ahhahahhahaha, ma nel captcha che voglio fare io devo fare apparire le immagini e farle corrispondere ai numeri quindi dovrei sostituire le domande? e tutto questo come lo integro al mio file di php?

Avatar utente
Sir Xiradorn
Grafico
Grafico
Messaggi: 1659
Iscritto il: 11/08/2009, 12:41
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.15
Database: MariaDB 10.1.9
Località: Lontano....
Contatta:

Re: Problema Guestbook php

Messaggio da Sir Xiradorn » 24/12/2015, 0:43

Ho fatto io ma voglio una birra però. O da mangiare :mrgreen: e molti ci hanno rinunciato a portarmi a mangia. Ma passiamo a noi
xir_captcha_img.php

Codice: Seleziona tutto

<?php
/**
 * Semplice captcha con immagini
 * Funzioni di generazione del captcha semplice con una serie di domande
 * @author Sir Xiradorn <http://xiradorn.it>
 */

/**
 * Variabili di controllo
 */
$x_images = array(
    '0'    => '111111',
    '1'    => '222222',
    '2'    => '333333'
);

// questa variabile la possiamo attivare o meno se vuoi il testo senza vedere maiuscole e minuscole
$case_sensitive = false;

/**
 * Funzione di calcolo del captcha
 */
function xir_captcha_domanda() {
    // Riprendo le domande così non devo stare la a richiamarle
    global $x_images;

    // generiamo il captcha e andiamo a prendere la domanda da una delle presenti
    // per una migliore gestione vado a auto calcolare la lunghezza dell'array
    // usiamo questo numero per il calcolo del valore random
    $numero_random = rand(0, count($x_images) - 1);

    return array(
        'domanda'            => $x_images[$numero_random],
        'numero_domanda'    => $numero_random
    );
}

/**
 * Questa funzione è usata per il controllo della risposta
 * Ritornerà un vero se ho verificato la risposta. Falso se non ho verifica
 */
function xir_captcha_risposta($risposta_utente, $numero_domanda) {
    // Riprendo le risposte così non devo stare la a richiamarle
    global $x_images, $case_sensitive;

    // facciamo il check e vediamo se trova la nostra risposta
    $valido = false;

    // se voglio che sia non case sensitive e quindi tutto minuscolo
    if($case_sensitive == false) {
        $risposta_utente = strtolower($risposta_utente);
    }

    // facciamo un primo confronto per filtrare subito la risposta utile
    // dato che mi sono portato il numero della domanda fuori
    // posso pescarla senza cicli o altro e infatti
    $risposta_di_controllo = $x_images[$numero_domanda];

    // faccio il controllo
    if ($risposta_utente === $risposta_di_controllo) {
        $valido = true;
    }

    // ritorniamo il valore di controllo se e solo se il controllo
    // si confà perfettamente al valore.
    return $valido;
}
 
File con il tuo guestbook

Codice: Seleziona tutto

<?php
/**
 * Innesto del captcha nel guestbook
 * @author Sir Xiradorn <http://xiradorn.it>
 */

// Importazione del file che ho creato prima con le funzioni per la gestione dei captcha
require "xir_captcha_img.php";

// riprendiamo le info dalla nostra funzione del captcha
$xir_imgcp_array = xir_captcha_domanda();

$x_img_nome = $xir_imgcp_array['domanda'];
$x_img_num_assoc = $xir_imgcp_array['numero_domanda'];
?>

<h2>
    Guestbook<br />
    <span> Lasciami un messaggio / Leave me a message...</span>
</h2>

<form method="post" action="guestbook3.php">
    <label for="">Tuo nome / Your name</label>
    <input type="text" name="nome" id="nome"/>

    <label for="messaggio">Messaggio / Message</label>
    <textarea name="messaggio" id="messaggio" rows="5" cols="30"></textarea>

    <!-- Xiradorn Img Simple Captcha -->
    <label for="captcha">
        <img src="<?php echo "captcha/$x_img_nome.png" /* puoi cambiare l'estensione ovvio */ ?>" />
        <small>Scrivi il codice che vedi sopra. Maiuscole e minuscole non sono importanti</small>
    </label>
    <input type="text" name="risposta_utente" id="captcha">
    <input type="hidden" name="numero_associato">
    <!-- Xiradorn Img Simple Captcha -->
    
</form>
file di validazione della form che tu hai chiamato come guestbook3.php

Codice: Seleziona tutto

<?php
/**
 * Codice originale di Jmdesign
 * @author Sir Xiradorn <http://xiradorn.it>
 */

// richiamo funzioni captcha
require "xir_captcha_img.php";

// recupero dati dalla form
$nome = isset($_POST["nome"]) ? $_POST["nome"] : '';
$messaggio = isset($_POST["messaggio"]) ? $_POST["messaggio"] : '';

// realtivi al captcha
$risposta_utente = isset($_POST["risposta_utente"]) ? $_POST["risposta_utente"] : '';
$numero_associato = isset($_POST["numero_associato"]) ? $_POST["numero_associato"] : 0;

// Recupero la data corrente
$data = date("d/m/Y ");

// Recupero il file di testo in cui scrivere i messaggi
$file = "guestbook.txt";

// inizio del confronto e del controllo del captcha
// faccio inoltre il controllo di validità di nome e messaggio

// controllo se il nome è valido senno vado in errore
if ($nome != '') {
    // controllo se il messaggio è presente senno salto fuori senza fae modifiche
    if ($messaggio != '') {
        // controllo il captcha
        if (xir_captcha_risposta($risposta_utente, $numero_associato)) {
            // Apro il file di testo e ci srivo dentro
            $guestbook = fopen($file, "a");
            $scrivi = "<b><font face=”Arial”>" . $nome . "</b><br>\r";
            $scrivi .= $messaggio . "<br>\r";
            $scrivi .= "<i>Scritto in data " . $data . "</i><hr></Font>\r";
            fwrite($guestbook, $scrivi);
            fclose($guestbook);
        } else {
            echo "Attenzione Captcha non corretto!";
        }
    } else {
        echo "Attenzione Messaggio vuoto o non Permesso";
    }
} else {
    echo "Attenzione Nome non permesso o non presente";
}

 
Sir Xiradorn
Immagine
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~

Immagine
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x

Jmdesign
Utente
Utente
Messaggi: 59
Iscritto il: 17/12/2015, 22:26
Sesso: Maschio
Versione: 3.0.0
Server: Windows

Re: Problema Guestbook php

Messaggio da Jmdesign » 24/12/2015, 1:17

mmm, te ne offro quante ne vuoi! :D sono Sardo qui ne abbiamo quanta ne vuoi hahahaha , comunque quando ho messo il codice nella home mi ha fatto sparire tutto praticamente :/ :O

Jmdesign
Utente
Utente
Messaggi: 59
Iscritto il: 17/12/2015, 22:26
Sesso: Maschio
Versione: 3.0.0
Server: Windows

Re: Problema Guestbook php

Messaggio da Jmdesign » 24/12/2015, 1:26

se elimino questo:

Codice: Seleziona tutto

<?php
/**
 * Innesto del captcha nel guestbook
 * @author Sir Xiradorn <http://xiradorn.it>
 */

// Importazione del file che ho creato prima con le funzioni per la gestione dei captcha
require "xir_captcha_img.php";

// riprendiamo le info dalla nostra funzione del captcha
$xir_imgcp_array = xir_captcha_domanda();

$x_img_nome = $xir_imgcp_array['domanda'];
$x_img_num_assoc = $xir_imgcp_array['numero_domanda'];
?>
il sito si visualizza, ma ovviamente il guestbook non mi inserisce il messaggio e non mi fa vedere nessuna immagine di captcha , mentre se lo inserisco nella home non mi visualizza nulla nella pagina..

Jmdesign
Utente
Utente
Messaggi: 59
Iscritto il: 17/12/2015, 22:26
Sesso: Maschio
Versione: 3.0.0
Server: Windows

Re: Problema Guestbook php

Messaggio da Jmdesign » 24/12/2015, 10:17

Scusa era un errore mio il fatto che non visualizzava , però non mi fa apparire nulla come captcha da scrivere..

Jmdesign
Utente
Utente
Messaggi: 59
Iscritto il: 17/12/2015, 22:26
Sesso: Maschio
Versione: 3.0.0
Server: Windows

Re: Problema Guestbook php

Messaggio da Jmdesign » 24/12/2015, 10:45

Sto iniziando a capire davvero :D sono riuscito ad impostare , però mi da sempre captcha non corretto

Avatar utente
Sir Xiradorn
Grafico
Grafico
Messaggi: 1659
Iscritto il: 11/08/2009, 12:41
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.15
Database: MariaDB 10.1.9
Località: Lontano....
Contatta:

Re: Problema Guestbook php

Messaggio da Sir Xiradorn » 24/12/2015, 16:23

Hai fatto si che il nome dell'immagine combacia con quello presente nella parte di configurazione?
Sir Xiradorn
Immagine
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~

Immagine
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x

Rispondi

Torna a “PHP - MySQL”

Chi c’è in linea

Visitano il forum: Nessuno e 38 ospiti