problema anti-spam

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Salve, ho un form contatti mi dite come faccio ad verificare rand(0,99) in questo codice che ho trovato su internet..ed lo messo nel mio codice:
vorrei che uno deve scrivere il numero random inserito sopra nell'elemento text html.
ecco il codice:
PHP:
<?php
require_once('class/Page.php');
require_once('class/email.inc.php');
$Layout = new Layout;
$Layout->setTitle('Contatti');
$Layout->startBody();
?>
<style>

/* and now the form formatting itself */
label {
  display: block;
  float: left;
  clear: left;
  Width: 150px;
  line-height: 20px;
  margin-bottom: 10px;
  margin: 5px 0;
}

input, textarea, select {
  margin: 0;
  padding: 2px;
  font-size: 1em;
  color: #666666;
  background: #F5F5F5;
  border: 1px solid #ccc;
  margin: 5px 0;
}   

input:focus, textarea:focus, select:focus {
  border: 1px solid #999;
  background-color: #FFFFFF;
}

input.button {
  cursor: pointer;
  border: none;
  font-weight: bold;
  background: url(images/submit.jpg) no-repeat left top;
  width: 90px;
  height: 28px;
  margin-left: 150px;
}

span.required{
  font-size: 13px !important;
  color: red !important;
}

.errormsg {
  display: block;
  width: 90%;
  height: 22px;
  line-height: 22px;
  color: #FFFFFF;
  font-weight: bold;
  background: #FF9D9D url(images/stop.gif) no-repeat 10px center;
  padding: 3px 10px 3px 40px;
  margin: 10px 0;
  border-top: 2px solid #FF0000;
  border-bottom: 2px solid #FF0000;
}

.msgSent {
  font-size: 20px;
  text-align: center;
}
</style>
            <?php
                 $error    = ''; // error message
                 $name     = ''; // sender's name
                 $email    = ''; // sender's email address
                 $subject  = ''; // subject
                 $message  = ''; // the message itself
               	 $spamcheck = ''; // Spam check

            if(isset($_POST['send']))
            {
                 $name     = $_POST['name'];
                 $email    = $_POST['email'];
                 $subject  = $_POST['subject'];
                 $message  = bbcode_mail($_POST['message']);
               	 $spamcheck = $_POST['spamcheck'];

                if(trim($name) == '')
                {
                    $error = '<div class="errormsg">Please enter your name!</div>';
                }
            	    else if(trim($email) == '')
                {
                    $error = '<div class="errormsg">Please enter your email address!</div>';
                }
                else if(!isEmail($email))
                {
                    $error = '<div class="errormsg">You have enter an invalid e-mail address. Please, try again!</div>';
                }
            	    if(trim($subject) == '')
                {
                    $error = '<div class="errormsg">Please enter a subject!</div>';
                }
            	else if(trim($message) == '')
                {
                    $error = '<div class="errormsg">Please enter your message!</div>';
                }
	          	else if(trim($spamcheck) == '')
	            {
	            	$error = '<div class="errormsg">Please enter the number for Spam Check!</div>';
	            }
	          	
                if($error == '')
                {
                    if(get_magic_quotes_gpc())
                    {
                        $message = stripslashes(bbcode_mail($message));
                    }

                    // the email will be sent here
                    // make sure to change this to be your e-mail
                    $to      = "[email protected]";

                    // the email subject
                    // '[Contact Form] :' will appear automatically in the subject.
                    // You can change it as you want

                    $subject = '[Contact Form] : ' . $subject;

                    // the mail message ( add any additional information if you want )
                    $msg     = "From : $name \r\ne-Mail : $email \r\nSubject : $subject \r\n\n" . "Message : \r\n".bbcode_mail($message)."";

                    mail($to, $subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n");
            ?>

                  <!-- Message sent! (change the text below as you wish)-->
                  <div style="text-align:center;">
                    <h1>Congratulations!!</h1>
                       <p>Thank you <b><?=$name;?></b>, your message is sent!</p>
                  </div>
                  <!--End Message Sent-->


            <?php
                }
            }

            if(!isset($_POST['send']) || $error != '')
            {
            ?>

            <h1>Contatti</h1>
            <!--Error Message-->
            <?=$error;?>

            <form  method="post" name="contFrm" id="contFrm" action="">


                      <label><span class="required">*</span> Full Name:</label>
            			<input name="name" type="text" class="box" id="name" size="30" value="<?php echo $name;?>" />

            			<label><span class="required">*</span> Email: </label>
            			<input name="email" type="text" class="box" id="email" size="30" value="<?php echo $email;?>" />

            			<label><span class="required">*</span> Subject: </label>
            			<input name="subject" type="text" class="box" id="subject" size="30" value="<?php echo $subject;?>" />

                 		<label><span class="required">*</span> Message: </label>
                 		<textarea name="message" cols="50" rows="10"  id="message"><?php echo $message;?></textarea>
// QUI COME POSSO FARE??::
            			<label><span class="required">*</span> Spam Check: <b><?php echo rand(0,99); ?></b></label><br />
						<input name="spamcheck" type="text" class="box" id="spamcheck" size="4" value="<?php echo $spamcheck;?>" /><br /><br />

            			<!-- Submit Button-->
                 		<input name="send" type="submit" class="button" id="send" value="" />

            </form>

            <!-- E-mail verification. Do not edit -->
            <?php
            }

            function isEmail($email)
            {
                return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i"
                        ,$email));
            }
            ?>
<?php			
$Layout->endBody();
echo $Layout->render('layout/template.php');
?>

vi ringrazio e aspetto risposta..
buona giornata.
 
ciao
io faccio (circa) così

PHP:
<?php
session_start();
?>
<!DOCTYPE html">
<html>
<head>
</head>
<body>
<?php
if(isset($_POST['invia'])){
	if($_SESSION['codice']==$_POST['codice']){
		//fai tutto quello che devi fare
	}else{
		echo "codice antispam errato o non inserito";
	}
}
$_SESSION['codice']=rand(0,99);
?>
<form action="#" method="post">
<!-- tutti gli altri campi -->
scrivi il codice <?php echo $_SESSION['codice']; ?><input name="codice" type="text">
<input name="invia" type="submit" value="invia">
</form>
</body>
</html>

p.s.
perche usi tutto quell'ambaradan per verificare l'email?
filter_var($email, FILTER_VALIDATE_EMAIL)
ritorna false se errata, l'indirizzo email se l'indirizzo è giusto
 

Discussioni simili