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 = "[email protected]";
$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 = "[email protected]";
$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 Content Management System (CMS) 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
A Problemi con move_uploaded_file PHP 0
G Menù a tendina di ricerca con query PHP 1
T fatture con voci fattura in php PHP 0
A Tabella con bottoni per aggiornamento record PHP 6
M Come selezionare e deselezionare radiobutton con jquery jQuery 1
MarcoGrazia Calcolo fra due date con esclusione delle feste PHP 7
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
T PROBLEMA CON ARRAY PHP 8
M Inviare un file su un server remoto con JavaScript Javascript 0
L problema con query select PHP 2
M Come validare textarea con jquery jQuery 0
M Problemi con la stampa dei valori in php PHP 1
A Regex per isolare link interni con rel noopener PHP 0
L Problemi con il login PHP 2
F Creare elementi html con javascript Javascript 2
R Problema query con ricerca id numerico PHP 2
R [C#] Quali dipendenze occorrono su progetto "Setup" con Access Database? .NET Framework 0
F Problema con risposta PHP 0
A Sottoquery con group by per mese MySQL 0
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A Quale NVR con ingressi bnc ? IP Cam e Videosorveglianza 1
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
T Film interattivo con linguaggi web Programmazione 7
A pulsante di update campo mysql con javascript Javascript 2
R Tutto su utf-8 ma ancora problemi con i caratteri speciali in mysql MySQL 1
Barierta Testo a comparsa con passaggio del mouse Javascript 13
M Estrarre valore con SELECT COUNT PHP 0
G VBA OpenForm con WhereCondition + LIKE su campi differenti MS Access 5
sara3 Offresi articolista con esperienza Offerte e Richieste di Lavoro e/o Collaborazione 2
L Problema RAM con Tomcat 8 Apache 0
S connesso, internet non disponibile ( con extebder tp-link850) Reti LAN e Wireless 0
L Menù con switch case C/C++ 1
Cosina Upload multiplo con invio allegati per email PHP 0
Cosina Upload multiplo con archiviazione in cartella PHP 16
B ciclare file xml con PHP PHP 1
napuleone problema con sort e asort PHP 4
F Group By con Alias condizionale MySQL 1
R [C#] Scrivere un post in grassetto con Selenium su FB Mobile .NET Framework 0

Discussioni simili