Form Antispam

sambo

Utente Attivo
3 Apr 2012
72
0
0
Ho trovato questo script Form antispam Php.
Mi sembra interessante e valido, almeno in un primo momento.
Preferirei installare questo, invece di altri script "dipendenti" da altri siti o società via internet.

Purtroppo, nonostante la sua applicazione dovrebbere essere elementare, incontro delle difficoltà.

Lo script è composto da due parti, la prima va inserita nel nostro form html, la seconda nella pagina php che gestisce e invia i dati ricevuti.

Il mio form mail funziona bene, però vorrei integrarlo con questo script anti spam e spero in un vostro aiuto.

Prima di fare questo è necessario scaricare tutto lo script e installarlo nella root del nostro sito (cosa che ho fatto)

Questa è la prima parte (funziona bene)

Codice:
<img id="captcha" src="/securimage/securimage_show.php" alt="CAPTCHA Image" />
<input type="text" name="captcha_code" size="10" maxlength="6" />
<a href="#" onclick="document.getElementById('captcha').src =
 '/securimage/securimage_show.php?'
 + Math.random(); return false">[ Different Image ]</a>

La inserisco alla fine del codice html del mio form e mi visualizza correttamente il campo anti spam, con la possibilità di ricevere anche una nuova immagine, se non leggibile.

Questa è la seconda parte, quella che va applicata alla pagina php che ricevere ed invia i dati ricevuti dal form alla nostra email.

Codice:
<?php session_start(); 

include_once $_SERVER['DOCUMENT_ROOT'] . '/securimage/securimage.php';
2	 
3	$securimage = new Securimage();

if ($securimage->check($_POST['captcha_code']) == false) {
2	  // the code was incorrect
3	  // you should handle the error so that the form processor doesn't continue
4	 
5	  // or you can use the following code if there is no validation or you do not know how
6	  echo "The security code entered was incorrect.<br /><br />";
7	  echo "Please go <a href='javascript:history.go(-1)'>back</a> and try again.";
8	  exit;
9	}
?>

Purtroppo quando uppo tutto sul mio server php, funziona soltanto la prima parte (quella html che mi da il codice) mentre lo script non riesce nemmeno a trovare la cartella sul server "sercurimage".
Ho personalizzato la prima riga" include_once $_SERVER['DOCUMENT_ROOT'] . '/securimage/securimage.php';" sostituirendo il percorso da esempio al mio, ma il server non riesce a trovare la giusta strada.
Mi ritorna dietro questo errore: Fatal error: Class 'Securimage' not found in /membri/sito76/dati.php on line 5

Io ho inserito la cartella direttamente sulla root quindi il mio percorso dovrebbe essere: include_once $_SERVER['securimage'] . '/securimage/securimage.php'; Oppure: include_once $_SERVER['securimage'] . '/securimage.php';

Ho fatto diverse prove ma ho sempre lo stesso errore. Non so se dipende da questo, oppure dallo script non funzionante.
Mi potete aiutare?

Questo è lo script che ho trovato: http://www.phpcaptcha.org/documentation/quickstart-guide/

Grazie :byebye:
 
Ultima modifica:
ciao
prova a mettere
PHP:
include_once __DIR__  . '/securimage/securimage.php';
oppure
PHP:
PHP:
include_once __DIR__  . 'securimage.php';
al massimo non funzia

p.s.
per php e/o html usa i loro tag approppriati non code.

ps al ps
hai le librerie gd attive?
 
ciao
prova a mettere
PHP:
include_once __DIR__  . '/securimage/securimage.php';
oppure
PHP:
PHP:
include_once __DIR__  . 'securimage.php';
al massimo non funzia

p.s.
per php e/o html usa i loro tag approppriati non code.

ps al ps
hai le librerie gd attive?

Ho provato entrambe le funzioni che mi hai consigliato, ma l'errore è sempre lo stesso:
Fatal error: Class 'Securimage' not found in /membri/sito76/dati.php on line 5

Cosa posso fare? :confused:

P.S. Qui ho trovato anche una guida in Italiano per lo stesso script.
http://www.ascolitech.it/php/inserire-un-captcha-in-1-minuto/
 
Ultima modifica:
ciao
sei sicuro di averlo caricato? la cartella è quella giusta? sembrerebbe che sicureimage.php cerchi un dati.php e non lo trovi

Si, il file dati.php è caricato sul server di prova. Fa parte di uno script form mail che funziona correttamente proprio con questo file dati.php
Adesso sto provando lo script, ma se dovessi toglierlo, ti assicuro che il form mail ritornerebbe a funzionare perfettamente.

Ho 2 file:

Contattaci.html (il form che raccoglie i dati e li passa all'altro file php)

Dati.php (lo script raccoglie i dati inseriti e li passa nella mia email)

Funziona tutto bene, soltanto che adesso sto provando questo script "sicurimage" e ho dovuto inserire nuovo php nel file dati.php

http://sito76.altervista.org/contattaci.html
 
ciao
sembrerebbe, dico sembrerebbe, un problema di percorsi
posta la linea 5 di dati.php e come sono organizzate le cartelle.
dati.php è un file che viene incluso ? ti chiedo questo perche i percorsi che sono in dati.php non devono essere riferiti a dati, ma al file che include (in pratica è come se tu facessi un copy/paste dentro il file che include)

dimenticavo:
altra prova (per quello che ho detto sopra)
PHP:
include_once __DIR__  . '../securimage.php';
 
Ultima modifica:
ciao
sembrerebbe, dico sembrerebbe, un problema di percorsi
posta la linea 5 di dati.php e come sono organizzate le cartelle.
dati.php è un file che viene incluso ? ti chiedo questo perche i percorsi che sono in dati.php non devono essere riferiti a dati, ma al file che include (in pratica è come se tu facessi un copy/paste dentro il file che include)

dimenticavo:
altra prova (per quello che ho detto sopra)
PHP:
include_once __DIR__  . '../securimage.php';

Ciao.

Per quanto riguarda la prova
PHP:
include_once __DIR__  . '../securimage.php';
purtroppo non cambia nulla, mi riporta sempre lo stesso errore.

Il contenuto della riga 5 del file dati.php è:
$securimage = new Securimage();

Invece per quanto riguarda i percorsi:

Ho scaricato lo script di "securimage" e l'ho scompattato nella root del mio sito.
Tramite ftp ho controllato è la cartella "securimage" è presente e dentro di essa è presente anche il file securimage.php

Edit: questi sono i requisiti richiesti dallo script:

REQUIREMENTS:
PHP 5.2 or greater
GD 2.0
FreeType (Required, for TTF fonts)

Sul forum di supporto di altervista, mi hanno assicurato che sono soddisfatti.
 
Ultima modifica:
Ciao.

Per quanto riguarda la prova
PHP:
include_once __DIR__  . '../securimage.php';
purtroppo non cambia nulla, mi riporta sempre lo stesso errore.

Il contenuto della riga 5 del file dati.php è:
$securimage = new Securimage();

Invece per quanto riguarda i percorsi:

Ho scaricato lo script di "securimage" e l'ho scompattato nella root del mio sito.
Tramite ftp ho controllato è la cartella "securimage" è presente e dentro di essa è presente anche il file securimage.php

Edit: questi sono i requisiti richiesti dallo script:

REQUIREMENTS:
PHP 5.2 or greater
GD 2.0
FreeType (Required, for TTF fonts)

Sul forum di supporto di altervista, mi hanno assicurato che sono soddisfatti.
$securimage = new Securimage();

Hai controllato se la classe istanziata è dichiarata correttamente?
 
ciao
non so se è una put....ta, ma visto che php e casesensitive, al posto di
$securimage = new Securimage();
prova a scrivere
$securimage = new securimage();
eventualmente puoi aprire con un editor securimage.php e verificare
 
Grazie a tutti per i consigli, credo di averle provate proprio tutte.
Mi arrendo qui, anche se mi dispiace, perchè era uno script utile e facilmente installabile.
Sto diventando matto, devo mollare. Magari un giorno qualcuno lo proverà e mi saprà dire se è un mio problema.


:hammer:
 
Oramai sono entrato nell'ottica di utilizzare reCAPTCHA di Google.
Ho trovato diverse guide sull'installazione, alcune in Italiano altre in Inglese, ma non sono mai riuscito a completare tutti i vari passaggi.
Potreste essere cosi gentili da passarmi una guida, meglio se in Italiano, che spieghi passo passo, per i principianti come me, il processo di installazione?

Io ho registrato il mio sito di prova ed ho ottenuto le due chiavi, quella privata e quella pubblica.

Spero di riuscire almeno a installare questo anti spam :byebye:

Ciao a tutti
 
Alla fine ho dovuto rispolverare le mie vecchie conoscenze di inglese e accedere alla documentazione ufficiale di reCAPTCHA.
Ci sono quasi, adesso lo script svolge bene il suo lavoro. Se il codice è giusto esegue le funzioni a seguire, mentre se è sbagliato mi riporta un messaggio di errore e mi dice di tornare indietro. E' proprio quest'ultima parte che non mi convince .. io vorrei che se il codice anti spam fosse sbagliato, venisse ricaricata la stessa pagina e comparisse una scritta di codice errato nella stessa pagina e magari vicino allo script reCAPTCHA.

Questo è il codice che ho inserito, con aggiunta di chiave, nella pagina verify.php

<?php
require_once('recaptchalib.php');
$privatekey = "XXXXXXXXXXXXXXXXXXXXXXXXXXH_-W";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);

if (!$resp->is_valid) {
// What happens when the CAPTCHA was entered incorrectly
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")");
} else {
// Your code here to handle a successful verification
echo "Codice sbagliato torna indietro" ;

}
?>


La parte in rosso è dove ho inserito la mia chiave privata, dopo aver registrato il mio sito di prova.
La parte in verde è quella che gestisce l'azione da eseguire in caso di codice antispam errato.
E' proprio quella che io dovrei scrivere a dovere, ma non ne sono in grado.
Mi potete aiutare?

Buona domenica a tutti :byebye:

Edit: Per spiegarmi meglio: Se il codice antispam è sbagliato, secondo questo script preso dal sito ufficiale, si apre una nuova pagina che esegue il comando echo e digita la scritta: Codice sbagliato torna indietro.
Io vorrei che in caso di codice antispam sbagliato, non venisse caricata un'altra pagina, ma la stessa del web form e che il messaggio di codice sbagliato avvenisse dentro la stessa pagina, come si vede in tutti i siti che usano un antispam.
 
Ultima modifica:
ciao
non hai rispolverato bene il tio inglese :)

} else {
// Your code here to handle a successful verification
echo "Codice sbagliato torna indietro" ;
}
?>

Your code here to handle a successful verification => metti qui il tuo codice se la verifica è giusta
cioè ad es il codice per l'invio email
comunque ci penso un momento e poi spero di saperti dire
 
ciao
immagino che tu voglia che ti inviino una email, secondo me dovresti organizzare la tua pg in questa modo (guarda che scrivo schematicamente)

PHP:
<style type="text/css">
.messaggi{/*o altre misure e/colori, l'importante è la visibility e lo z-index*/
	width:782px;
	height: auto;
	position: absolute;
	top: 100px;
	background-color:#FF0000;
	font-weight:300;
	text-align:center;
	visibility:hidden;
	z-index:99;
}
</style>
<?php
require_once('recaptchalib.php');
$privatekey = "[COLOR="#FF0000"]XXXXXXXXXXXXXXXXXXXXXXXXXXH_-W[/COLOR]";
if(issett($_POST['submit'])){//cliccato su invia
	$resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"]);
	if (!$resp->is_valid) {//verifica del codice captcha
    // codice CAPTCHA sbagliato, si sovrappone la scritta
    echo "<div style=\"visibility:visible \" class=\"messaggi\">codice errato</div>";
	//dopo 4 secondi (content=='4;...) il messaggio scompare e ritorni al form pulito
	echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	} else {
	// Your code here to handle a successful verification !!!!il codice è giusto
	//qui leggi tutti gli altri $_POST , li verifichi e se tutto ok li invii
	} 
}else{
	//qui metti il form con tuo captcha
}
//....
?>
 

Discussioni simili