problema con mail e php

vladimiro

Nuovo Utente
15 Gen 2015
2
0
0
Buongiorno a tutti,
è il mio primo post qui, e spero di non cominciare male postando... nel posto sbagliato.

Vi spiego il mio problema:

per la pagina web utilizzo un form per ricevere messaggi, dove l'indirizzo email e il nome sono obbligatori.
Non mettendoli, non si può mandare il messaggio.
Evidentemente credevo, con questo, di evitare lo spam.
Invece mi arrivano messaggi spam... senza testo, senza nome, senza email.

Quindi automaticamente il form invia un messaggio di cortesia... facendo un grosso piacere allo spammer.

Come posso risolvere il problema?
(Non so se posso postare qui il codice del form.... non riesco a fare l'upload)

Grazie.
 
Immagino che il tuo form abbia i campi obbligatori indicati solo tramite l'attributo HTML "required". I robot degli spammer se ne fregano di quell'attributo inviando i messaggi direttamente allo script indicato nel "action" del form.
Purtroppo la validazione dei campi devi farla lato PHP (nello script "action") per risolvere il problema e devi aggiungere un captcha in Javascript, come detto da Altutto.
 
Io attualmente utilizzo una funzione del genere: crei un campo di testo chiedendo un risultato di un'addizione e con php verifichi se il risultato immesso è corretto. Se è corretto procedi con l'invio della mail altrimenti blocchi.

if ($antispam != "10") {
echo "<font color=\"#FF0000\">Attenzione: Il risultato dell'Operazione 7+3 non è corretto.</font>";
}else{
mail ($destinatario, $subject, $body, $headers);
}
 
ciao
io mi sono fatto questo e per ora non mi posso lamentare (sono 5 anni che il form è in linea e l'ho usato anche per far scrivere commenti nella sezione delle foto)
PHP:
<?php
session_start();
function capta(){
	$lungo=3;//quanto deve essere lungo il codice
	//mi sono creato delle immaginette gif con i numeri da 0 a 9
	$imm=array('a.gif','b.gif','c.gif','d.gif','e.gif','f.gif','g.gif','h.gif','i.gif','l.gif');
	$codice="";
	$figura:"";
	//genero il codice
	for($c=0; $c<$lungo; $c++){
		$x=rand(0,9);//genero un numero rand da 0 a 9
		$codice .="".$x;//forzo a stringa altrimeni es 01 risulta 1
		//preparo l'immagine da visualizzare (non ho messo il percorso)
		$figura.="<img src=\"".$imm[$x]."\">";
	}
	//passo in sessione il codice lo complico con un semplice md5
	$_SESSION['codice']=md5($codice);
	return $figura;
}
//e qui leggo i dati dal form e se la sessione esiste
if(isset($_POST['invia']) && isset($_SESSION['codice'])){
	//verifico il valore della sesione con quanto dal form
	if($_SESSION['codice']!=md5($_POST['code']){
		//quanto invvito non corrisponde
		//azzero
		$_SESSION=array();
		//e riinvio al form
		header("location=$_SERVER['PHP_SELF']");//
		exit();
	}else{
		//tutti i controlli necessari e invio emil
	}
}
?>
<!--qui il form con i campi che servono-->
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<!-- ...campi che servono... -->
scrivi il codice <?php echo capta(); ?><input name="code" type="text">
<br />
<input name="invia" type="submit" id="invia" value="invia">
</form>
volendo i numeri essendo immagini gif possono essere anche in movimento rendendo più difficile ai reader leggerli
 

Discussioni simili