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 » 29/12/2015, 16:56

Hai modificato tale array correttamente?

Codice: Seleziona tutto

$x_images = array(
    '0'    => '111111',
    '1'    => '222222',
    '2'    => '333333'
); 
Questo array è fondamentale per la gestione delle immagini e per la riuscita del captcha. Il codice dell'immagine deve avere lo stesso nome del file (estensione a parte)
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 » 29/12/2015, 16:59

ho sostituito '111111' con 1 perché ho le immagini che si chiamano in quel modo esempio :

'0' => '111111' diventa '0' => '0' perché l'immagine si chiama 0.jpg
e ho sostituito anche questa
<img src="<?php echo "captcha/$x_img_nome.jpg" /* puoi cambiare l'estensione ovvio */ ?>" /><br>
per l'estensione

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 » 29/12/2015, 17:26

ho sbagliato cambiando per caso? l'immagine viene visualizza

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 » 29/12/2015, 17:47

Se fai così

Codice: Seleziona tutto

'0' => '0' 
il tuo captcha per come è strutturato, dovra dare all'utente un capta con scritto 0 appunto. Quindi lui inserendo 0 supera la validazione.

Se hai bisogno di usare più immagini la funzione non potrà essere corretta e dovrai rimaneggiarla in maniera che peschi le immagini a random.

Mi dici di aver sostituito la stessa. La domanda è come? Se hai fatto così (visto che mi hai detto che è una jpg)

Codice: Seleziona tutto

<img src="<?php echo "captcha/$x_img_nome.jpg" /* puoi cambiare l'estensione ovvio */ ?>" /><br> 
va bene. Ma ti valida il gettone se e solo se, il captcha che inserirà l'utente sara 0. Se sulla tua immagine, ci stanno caratteri stramboidi e la tua immagine è classificata come 0, l'ultente digiterà in maniera corretta quello che vede, ma con scarso risultato.

Esempio: se hai

Codice: Seleziona tutto

'0' => '0' 

e una immagine di questo tipo chiamata 0.jpg ad esempio
Immagine
e tu digi "test" non avrai validazione.

Se invece hai

Codice: Seleziona tutto

'0' => '0' 

e una immagine di questo tipo chiamata 0.jpg ad esempio
Immagine
e tu digi "0" avrai validazione.

Lo stesso vale per questo caso. Se per caso hai

Codice: Seleziona tutto

'0' => 'test' 

e una immagine di questo tipo chiamata test.jpg ad esempio
Immagine
e tu digi "test" avrai validazione.

Chiaro così?
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 » 29/12/2015, 18:02

si fino a qui si.. ho fatto tutto giusto allora.. perchè per ora sto usando solo 3 immagini la 0.jpg 1.jpg 2.jpg , ma pur inserendo il numero dell'immagine corrispondente mi da comunque errore :/

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 » 29/12/2015, 19:36

Ultimo esempio e questo si avvicina davvero il più possibile al tuo caso.
index.php

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();

$img_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,textarea {
            width: 100%;
            display: block;
            text-align: center;
        }
        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>Name</legend>
            <label for="name">Nome</label>
            <input type="text" id="nome" name="nome_utente" placeholder="Nome Utente">
        </fieldset>
        <fieldset>
            <legend>Messaggio</legend>
            <label for="messaggio">Inserisci il tuo messaggio</label>
            <textarea name="messaggio" id="mess" placeholder="Inserisci il tuo messaggio"></textarea>
        </fieldset>
        <fieldset>
            <legend>Captcha</legend>
            <label for="domanda"><img src="img/<?php echo $img_domanda; ?>.png" /> </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="Posta il Messaggio" class="submit">
        </fieldset>
    </form>
    <h4>Sir Xiradorn 2015</h4>
</body>
</html>
xir_captcha.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;
}


/**
 * Funzione di servizio con error log
 * Segnalazione della tipoligia di errore e redirect forzato
 */
function xir_error_log($tipo) {
    // timing del redirect ovvero dopo quanti secondi faccio il redirect forzato in caso di errore
    $secondi = 5;
    
    // variabile di servizio con messaggio di errore
    $errore_target = $tipo;
    $error_log = array(
        'generico' => "No Alpitour? Ahiahiahihahihaihiiiiiiii. <br> Attenzione il <b>$errore_target</b> non è corretto. <br> Ritenta. <br> Tra $secondi secondi verrai indirizzato alla pagina della form"
    );

    // stampa a video dell'errore con il suo tipo
    echo $error_log['generico'];

    // redirect forzato alla form
    header("Refresh:$secondi;url=index.php");
} 
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'] : '';

// prelievo delle informazioni da inviare
$nome_utente = (isset($_POST['nome_utente'])) ? $_POST['nome_utente'] : '';
$messaggio = (isset($_POST['messaggio'])) ? $_POST['messaggio'] : '';

// consideriamo il controllo prima del nome poi del testo del messaggio e verifico il captcha
// se tutto è co stampo il tutto. Altrimenti errore
/* controllo il nome utente */
if (!empty($nome_utente) or $nome_utente !== '') {
    /* controllo il messaggio */
    if (!empty($messaggio) or $messaggio !== '') {
        /* verifico il captcha */
        $gettone_di_validita = xir_captcha_risposta($risposta_utente, $numero_domanda);
        if ($gettone_di_validita == true) {
            $html = <<<STAMPA
            <h1>Form Grabber</h1>
            <b>Nome:</b> $nome_utente <br>
            <b>Messaggio:</b> $messaggio <br>
            <b>Captcha:</b> $risposta_utente -> <span style="color: forestgreen; text-weight: bold;">Tutto OK</span>
STAMPA;
            echo $html;
        } else {
            xir_error_log("captcha");
        }
    } else {
        xir_error_log("messaggio");
    }
} else {
    xir_error_log("nome");
} 
Un po più complesso il codice ma è sempre la stessa solfa
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 » 30/12/2015, 1:16

sii :D questo funziona :D :D però io voglio capire dove sbagliavo.. xD continuerò a lavorare anche sull'altro devo trovare per forza l'errore! grazie a tutti ragazzi! davvero! mi avete fatto capire più voi in 40 messaggi che i professori in 5 anni di studio hahahahaah siete davvero fantastici!

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 » 30/12/2015, 11:50

Se hai altre cose da chiede fai pure e magari facci vedere il risultato finale.

Un consiglio. Per capire cosa non va, esamina i codici affiancandoli e vedi subito l'errore dove sta.

Poi se posso farti una domanda. Cosa usi per programmare in php?
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 » 07/01/2016, 11:33

Scusami tanto , ma ho letto solo ora questo messaggio :/ non uso nessun programma , scrivo il codice con notepad ++ :) hai qualche programma da consigliarmi? :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 » 07/01/2016, 11:58

No va stra bene. Io l'ho usato per molto tempo e lo uso ancora anche se ora l'ho un po soppiantato con sublime text. Buona scelta
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: Baidu [Spider] e 23 ospiti