antispam con somma

onebill964

Utente Attivo
21 Giu 2009
46
0
0
venezia
Salve a tutti ragazzi,
ho un form per l'iscrizione utenti nel sito ,ora vorrei(anzi sono costretto!)aggiungere un campo per un controllo antispam costituito da una somma di 2 cifre create con la funzione "rand"che l'utente deve inserire.Ora tutto bene finchè controllo che il campo sia inviato, non sia vuoto e sia numerico; il problema sorge quando devo inserire il controllo che verifichi che la cifra inserita dall'utente sia uguale(o non sia diversa) alla somma dei due valori!!!
Da giorni ci sbatto la testa:incazz::confused:
spero che qualcuno sappia darmi un aiuto.Grazie
posto il codice:
Codice:
          <div align="center">
            <h3><strong><span class="style1">Member Area - Registration Page -</span></strong></h3>
<?php	  
// controllo sul parametro d'invio
if(isset($_POST['submit']) && (trim($_POST['submit']) == "registrati"))
{ 
  // controllo sul formato dell'email
  if((!isset($_POST['email'])) || (!eregi("^([a-z0-9\._-]+)(@[a-z0-9.-]+)(\.{1}[a-z]{2,4})$", $_POST['email'])))
  {
    echo "Attenzione, formato email non valido.";
  }
  // controllo sul formato della password deve essere alfanumerica e non deve superare i dieci caratteri di lunghezza
  elseif((!isset($_POST['password'])) ||  ($_POST['password'] == "") || (!preg_match("/^[a-z0-9]+$/i", $_POST['password'])) || (strlen(trim($_POST['password']) > 10)))
  {
    echo "La password deve essere alfanumerica e non più lunga di 10 caratteri.";
	}
	
	elseif((!isset($_POST['nome'])) || ($_POST['nome'] == "") || (!preg_match("/^[a-z0-9\-_]{0,20}$/", $_POST['nome'])))
	{
	echo "Inserire un nome valido";
  }
  	elseif((!isset($_POST['calcolo'])) || ($_POST['calcolo'] == "") || (!is_numeric($_POST['calcolo'])))
	{
	echo "Inserire il risultato numerico";
  }
//-------------------------------INIZIO VERIFICA NON FUNZIONANTE-------------------------
    elseif($calcolo!=$result)
	{
	echo "La somma non è esatta";
  }
//------------------------------FINE VERIFICA NON FUNZIONANTE--------------------------
else{
    // se i parametri sono corretti popoliamo il database
    $email = $_POST['email'];
    $password = $_POST['password'];
    $nome = $_POST['nome'];
    // ma prima controlliamo che la mail non sia già presente includiamo il file di configurazione
    @include "config.php";

    $ctrl_mail = @mysql_query("SELECT id FROM iscrizioni WHERE email='$email'") or die (mysql_error());
    if(@mysql_num_rows($ctrl_mail)>0)
    {
      echo "L'email risulta già stata registrata.";
    }else{
      // query d'inserimento
      if(@mysql_query("INSERT INTO iscrizioni (email, password) VALUES('$email','$password')") or die (mysql_error()))
      {
        // messaggio di conferma
        echo "Conferma l'iscrizione tramite la mail che ti abbiamo inviato.";

        // email per la conferma
        // intestazioni
        $headers = "From: $admin_email\nreply-To: noreply\r\n";
        $subject = "Conferma la tua iscrizione.";
        //corpo del messaggio
        $messaggio = "Ti ringraziamo per la tua iscrizione.\n";
        $messaggio .= "La tua user è: ".$email."\n";
        $messaggio .= "La tua password è: ".$password."\n";
        $messaggio .= "Per confemare vai alla pagina http://www.sito/conferma.php ";
        $messaggio .= "e inserisci i dati per l'autenticazione.\n"; 
        // invio dell'email
        @mail($email, stripslashes($subject),stripslashes($messaggio),$headers);
		//invio email al webmaster
		//$webmaster = "info@mia-email";
$email1 ="$email";
$mailTo1="$admin_email";
$mailHeaders1="From: $email1";
$mailSubject1="[Inserire il nome del sito]
                  Nuovo UTENTE registrato";
$mailBody1.="Ciao!\n\n";
$mailBody1.="Un nuovo utente si è registrato!\n\n";
$mailBody1.="Questi sono i suoi dati:\n\n";
$mailBody1.="Username: $nome\n";
$mailBody1.="passwd: $passwd\n";
$mailBody1.="Email: $email1\n";
@mail($mailTo1, stripslashes($mailSubject1),stripslashes($mailBody1),$mailHeaders1);
//---------
      }
    }
  } 
}else{
   form per l'iscrizione
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            <table align="center" bgcolor="#FFFF99" class="tabella">
            <tr bgcolor="#FFFF66">
                  <td colspan="2"><div align="center"><div align="center">
                    <h3 class="style1">Register New User</h3>
                  </div></div></td>
                </tr>
                <tr>
                  <td colspan="2"><span class="style3">Name </span><strong><span class="style2">*** </span>:</strong></td>
                </tr>
                <tr>
                  <td colspan="2"><input type="text" name="nome" id="nome" /></td>
                </tr>
                <tr>
                  <td colspan="2"><strong class="style3">E-mail</strong> <span class="style2">***</span><strong class="style3"> : ( User )</strong></td>
                </tr>
                <tr>
                  <td colspan="2"><input type="text" name="email" id="email" /></td>
                </tr>
                <tr>
                  <td colspan="2"><strong class="style3">Password</strong> <span class="style2">***</span><strong>:</strong></td>
                </tr>
                <tr>
                  <td colspan="2"><input type="password" name="password" id="password" /></td>
                </tr>
                <tr>
                  <td colspan="2"><strong class="style3">AntiSpam Control</strong><span class="style2"> **<strong>*</strong></span><strong class="style3">: ( Please enter the sum belowe )</strong></td>
                </tr>
                <tr>
                  <td width="147">
<?php
$x=rand(0,15);
$y=rand(0,15);
$result=$x+$y;
?>                  
                <?php echo "$x";?><strong class="style3"> +</strong> <?php echo "$y";?>&nbsp;<strong class="style3"> =</strong>
                  </td>
                  <td width="205"> <input name="calcolo" type="text" id="calcolo" size="6" maxlength="3" /></td>
              </tr>
                <tr>
                  <td colspan="2" class="style2">*** All fields are required</td>
                </tr>
                <tr>
                  <td colspan="2"><div align="center">
                     <input type="submit" name="submit" id="submit" value="registrati" />
                  </div></td>
                </tr>
              </table>
          </form></div>
<?php
}
?>
 

Magicale

Nuovo Utente
9 Mar 2009
11
0
0
Albenga
www.alessandrostorchi.it
Ciao,
quando invii il form perdi il dato $result, che viene ricalcolato.
Devi trovare il modo di avere ancora quel dato una volta inviato il form.
Un modo potrebbe essere quello di utilizzare le variabili di sessione modificando queste righe
PHP:
elseif($calcolo!=$result)
...
$result=$x+$y;
in questo modo:
PHP:
elseif($_POST['calcolo']!=$_SESSION['result'])
...
$_SESSION['result']=$x+$y;

Ovviamente all'inizio della pagina, se già non lo fai, dovrai inizializzare la sessione con
PHP:
session_start();

Alessandro
 

onebill964

Utente Attivo
21 Giu 2009
46
0
0
venezia
somma antispam

salve ragazzi,prima di tutto grazie per le vostre risposte,
uso già captcha in un altro form e la somma (che non so il motivo ma la preferisco) in un altro ancora solo che il form dove ho inserito il controllo tramite somma è piu semplice dall momento che passo tutti i valori ad un altro file che controlla il tutto e poi invia la mail ,al contrario non ho simpatia per i form dove tutto si trova nella stessa pagina.
Cmq è il controllo della somma che mi da errore nel senso che anche se inserisco la somma esatta mi da sempre 'somma errata'!
Stasera provo con le sessioni poi vi so dire...
Grazie ancora
 

onebill964

Utente Attivo
21 Giu 2009
46
0
0
venezia
somma php

Ciao,ho provato con le sessioni come mi hai indicato ma continuo a ricevere sempre lo stesso errore "somma non corretta"
Provero' con più calma..
cmq grazie
 

onebill964

Utente Attivo
21 Giu 2009
46
0
0
venezia
somma antispam

Niente da fare!!Ho provato con le sessioni ma non va :hammer:
Posto il codice completo della pagina registrazione:
Codice:
<?php
session_start();
$x=rand(0,15);
$y=rand(0,20);
$_SESSION['result']=$x+$y;	  
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php	  
// controllo sul parametro d'invio
if(isset($_POST['submit']) && (trim($_POST['submit']) == "registrati"))
{ 
  // controllo sul formato dell'email
  if((!isset($_POST['email'])) || (!eregi("^([a-z0-9\._-]+)(@[a-z0-9.-]+)(\.{1}[a-z]{2,4})$", $_POST['email'])))
  {
    echo "Attenzione, formato email non valido.";
  }
  // controllo sul formato della password deve essere alfanumerica e non deve superare i dieci caratteri di lunghezza
  elseif((!isset($_POST['password'])) ||  ($_POST['password'] == "") || (!preg_match("/^[a-z0-9]+$/i", $_POST['password'])) || (strlen(trim($_POST

['password']) > 10)))
  {
    echo "La password deve essere alfanumerica e non più lunga di 10 caratteri.";
	}
	
	elseif((!isset($_POST['nome'])) || ($_POST['nome'] == "") || (!preg_match("/^[a-z0-9\-_]{0,20}$/", $_POST['nome'])))
	{
	echo "Inserire un nome valido";
  }
  	elseif((!isset($_POST['calcolo'])) || ($_POST['calcolo'] == "") || (!is_numeric($_POST['calcolo'])))
	{
	echo "Inserire il risultato numerico";
  }

        elseif($_POST['calcolo']!=$_SESSION['result'])
	{
	echo "La somma non è esatta";
  }

else{
    // se i parametri sono corretti popoliamo il database
    $email = $_POST['email'];
    $password = $_POST['password'];
    $nome = $_POST['nome'];
    // ma prima controlliamo che la mail non sia già presente includiamo il file di configurazione
    @include "config.php";

    $ctrl_mail = @mysql_query("SELECT id FROM iscrizioni WHERE email='$email'") or die (mysql_error());
    if(@mysql_num_rows($ctrl_mail)>0)
    {
      echo "L'email risulta già stata registrata.";
    }else{
      // query d'inserimento
      if(@mysql_query("INSERT INTO iscrizioni (email, password) VALUES('$email','$password')") or die (mysql_error()))
      {
        // messaggio di conferma
        echo "Conferma l'iscrizione tramite la mail che ti abbiamo inviato.";

        // email per la conferma
        // intestazioni
        $headers = "From: $admin_email\nreply-To: noreply\r\n";
        $subject = "Conferma la tua iscrizione.";
        //corpo del messaggio
        $messaggio = "Ti ringraziamo per la tua iscrizione.\n";
        $messaggio .= "La tua user è: ".$email."\n";
        $messaggio .= "La tua password è: ".$password."\n";
        $messaggio .= "Per confemare vai alla pagina http://www.sito/conferma.php ";
        $messaggio .= "e inserisci i dati per l'autenticazione.\n"; 
        // invio dell'email
        @mail($email, stripslashes($subject),stripslashes($messaggio),$headers);
		//invio email al webmaster
		//$webmaster = "info@mia-email";
$email1 ="$email";
$mailTo1="$admin_email";
$mailHeaders1="From: $email1";
$mailSubject1="[Inserire il nome del sito]
                  Nuovo UTENTE registrato";
$mailBody1.="Ciao!\n\n";
$mailBody1.="Un nuovo utente si è registrato!\n\n";
$mailBody1.="Questi sono i suoi dati:\n\n";
$mailBody1.="Username: $nome\n";
$mailBody1.="passwd: $passwd\n";
$mailBody1.="Email: $email1\n";
@mail($mailTo1, stripslashes($mailSubject1),stripslashes($mailBody1),$mailHeaders1);
//---------
      }
    }
  } 
}else{
   form per l'iscrizione
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            <table align="center" bgcolor="#FFFF99" class="tabella">
            <tr bgcolor="#FFFF66">
                  <td colspan="2"><div align="center"><div align="center">
                    <h3 class="style1">Register New User</h3>
                  </div></div></td>
                </tr>
                <tr>
                  <td colspan="2"><span class="style3">Name </span><strong><span class="style2">*** </span>:</strong></td>
                </tr>
                <tr>
                  <td colspan="2"><input type="text" name="nome" id="nome" /></td>
                </tr>
                <tr>
                  <td colspan="2"><strong class="style3">E-mail</strong> <span class="style2">***</span><strong class="style3"> : ( User )</strong></td>
                </tr>
                <tr>
                  <td colspan="2"><input type="text" name="email" id="email" /></td>
                </tr>
                <tr>
                  <td colspan="2"><strong class="style3">Password</strong> <span class="style2">***</span><strong>:</strong></td>
                </tr>
                <tr>
                  <td colspan="2"><input type="password" name="password" id="password" /></td>
                </tr>
                <tr>
                  <td colspan="2"><strong class="style3">AntiSpam Control</strong><span class="style2"> **<strong>*</strong></span><strong class="style3">: ( 

Please enter the sum belowe )</strong></td>
                </tr>
                <tr>
                  <td width="147">                  
                <?php echo "$x";?><strong class="style3"> +</strong> <?php echo "$y";?>&nbsp;<strong class="style3"> =</strong>
                  </td>
                  <td width="205"> <input name="calcolo" type="text" id="calcolo" size="6" maxlength="3" /></td>
              </tr>
                <tr>
                  <td colspan="2" class="style2">*** All fields are required</td>
                </tr>
                <tr>
                  <td colspan="2"><div align="center">
                     <input type="submit" name="submit" id="submit" value="registrati" />
                  </div></td>
                </tr>
              </table>
          </form></div>
<?php
}
?>
Spero qualcuno trovi dov'è l'errore
Grazie infinite.
 

onebill964

Utente Attivo
21 Giu 2009
46
0
0
venezia
somma antispam

Scusate dimenticavo l'errore è sempre 'la somma non è esatta'
anche se inserisco la somma giusta :byebye:
 

Magicale

Nuovo Utente
9 Mar 2009
11
0
0
Albenga
www.alessandrostorchi.it
Ciao,
oltre alla modifica che ti ho suggerito io hai spostato il blocco
PHP:
$x=rand(0,15);
$y=rand(0,20);
$_SESSION['result']=$x+$y;
all'inizio della pagina quando avresti dovuto lasciarlo esattamente dov'era.
 

onebill964

Utente Attivo
21 Giu 2009
46
0
0
venezia
somma antispam

Hai ragione nella fretta e cercando di fare un po' di ordine ho spostato il blocco pensando che non influisse:(
Ora funziona egregiamente!!:mavieni:
Grazie infinite 6 proprio magic....ale
Una domanda,secondo te è valido come antispam?
Ciao Michele
 
Discussioni simili
Autore Titolo Forum Risposte Data
O Form con antispam? Classic ASP 8
M Blocco Antispam Su form PHP 6
S Form Antispam PHP 16
S Form Antispam CMS (Content Management System) 1
E antispam PHP 3
F Filtro Antispam Hotmail Sicurezza e Virus 6
S Form antispam Classic ASP 0
A Antispam PHP 4
L javascript antispam? Javascript 0
peppoweb Concorso antispam internazionale Discussioni Varie 0
peppoweb Achab: nuovo mail server antispam Windows e Software 0
F Cerco Hosting con VECCHIE versioni di php Hosting 0
C Come ricreare questo calcolatore di prezzi a step con woocommerce? WordPress 0
C Segnalo barra laterale di navigazione ASSENTE con Chrome Comunicazioni dallo Staff 5
G Guadagna dalla Vendita di Articoli Sponsorizzati con GuestPostMax.com! Guadagnare col Sito 0
P Hosting multidominio con Plesk Hosting 0
L Soluzione con INNER JOIN Database 0
S passare un valore da un form a un file .php con metodo post PHP 4
A Redirect 301 genera url statico con variabili Web Server 0
T problemi con dati menu a tendina HTML e CSS 2
T Query con date MS Access 1
F Url dinamiche da cambiare con categoria, subcategoria e title PHP 2
L Aiuto con DataGridView Visual Basic 1
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
G Problema con Xampp Web Server 1
M Aggiunta prodotti nel carrello con lo stesso in e varianti diverse PHP 0
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
B Non riesco a trovare i cognomi con i caratteri speciali in Access (Microsoft 365) MS Access 0
N Problema con position absolute e overflow HTML e CSS 4
M Estrarre soltanto i prodotti con stessa descrizione PHP 10
felino [Wordpress] Gallery con foto selezionabili dall'utente WordPress 0
G Invio di più valori con la stessa checkbox PHP 4
csi Inviare file jpg in locale alla stampante con php PHP 0
otto9due Proteggere una cartella e file con password tramite .htaccess e .htpasswd Web Server 0
I Form con selettore HTML e CSS 0
G phpmailer e php 8.1 con estensione mysqli PHP 6
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
N Vendo sito web di casino online con 1000 giochi Compravendita siti e domini 0
G form invio multiplo con checkbox PHP 12
L Query e selezione DB con $_POST PHP 2
K [PHP] Problema con variabili concatenate. PHP 1
R Dubbi su siti sviluppati con Wordpress e con codice WordPress 6
B Router e telecamere con pannello solare IP Cam e Videosorveglianza 0
Z Cerco ecommerce gratuito meglio se realizzato con Woocommerce di Wordpress. E-Commerce 0
S [CERCO] scambio di articoli con link Offerte e Richieste di scambio links 0
A Immagine decentrata con sfondo trasparente Photoshop 0
O problema con query PHP 4
Jensen Errore di sintassi con DELETE PHP 3

Discussioni simili