Nascondere indirizzo email agli spambot in un form php

anton

Nuovo Utente
16 Lug 2012
27
0
1
Salve, per un sito che sto realizzando ho creato un form in php che prevede un invio dei dati di registrazione oltre che ad un db anche ad un indirzzo email. Il mio problema è nascondere questo indirizzo agli spambot.

Inserisco solo la parte di codice sulla quale penso si debba intervenire, di php non ne sò abbastanza:

PHP:
<?php
   function ValidateEmail($email)
   {
      $pattern = '/^([0-9a-z]([-.\w]*[0-9a-z])*@(([0-9a-z])+([-\w]*[0-9a-z])*\.)+[a-z]{2,6})$/i';
      return preg_match($pattern, $email);
   }

   if($_SERVER['REQUEST_METHOD'] == 'POST')
   {
      $mailto = '[email protected]'; questo e quello che vorrei evitare
      $mailfrom = isset($_POST['email']) ? $_POST['email'] : $mailto;

Esiste una maniera per nascondere l'indirizzo email nello script che comunque permetta l'invio? Come và variato il codice?
Grazie
 
Ultima modifica:
ciao
in teoria non dovrebbero riuscire a leggere il php, poi come fai poi l'invio? usi la funzione mail o qualche classe tipo phpmailler?
per essese sicuro comunque potresti fare così
ti fai un piccolo script a parte
PHP:
<?php
$mia_email="[email protected]";//qui metterai la tua email o quella che ti necessita
echo base64_encode($mia_email);
?>
lo lanci e copi esattamente il risultato (copy/paste), il risultato sarà un'accozaglia di caratteri, a titolo di esempio
VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==
poi dove devi usarla (mettiamo con la funzione mail)
PHP:
<?php
mail ( base64_decode("VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==") , "oggetto:prova" , "questo è un messaggio di prova" );
?>
in questo modo (non impossibile) risulta molto più difficile individuare l'indirizzo email
anche se l'indirizzo viene da un $_POST puoi fare la stessa cosa
 
Ciao ti ringrazio per la risposta, mi hai dato già un grande aiuto dicendomi che almeno in teoria gli spambot non dovrebbero leggere l'indirizzo all'interno dello script del form. Lo script che mi hai postato per la codifica l'ho provato e funziona non lo inserisco nel form visto che sarebbe pletorico ma lo userò per altro.
Grazie
 
ciao
gli spambot non dovrebbero leggere l'indirizzo all'interno dello script del form
attento se il form e l'indirizzo sono in html (es il classico mailto) es.

HTML:
<a href="mailto:[email protected]" >email</a>
oppure (anche se è parte php)
PHP:
<a href="mailto:<?php echo $email; ?>" >email</a>

lo spamboot ci mette un microsecondo a leggere l'indirizzo
ha difficoltà a leggere quello che è nel php puro e che non si "traduce" in html
PHP:
$mailto = '[email protected]';

ma quello che php "traduce" in html è facilmente leggibile
 
Per sicurezza ho controllato il formato dell'indirizzo email è in puro php come questo:

PHP:
$mailto = '[email protected]';

e mi sono assicurato che non venga tradotto nella pagina html sottostante allo script del form che riporta solo i campi e i valori relativi. La pagina è in formato php.

Lo script che hai postato nel primo post, sto cercando di utilizzarlo se mi riesce, nelle normali pagine html, là dove ci sono link testuali che prevedono l'invio di una mail tipo "contattami" o cose del genere. Avevo già provveduto a criptare tramite servizi online gli indirizzi email che utilizzo, ma provare il nuovo, almeno per me, aiuta a crescere.

Grazie per l'interessamento Borgo Italia
 
Ciao scusa se reinserisco un post a distanza di due tre giorni, sono stato via e oggi ho provato ad utilizzare gli script che mi avevi dato nelle pagine del sito. Ho un problema ho criptato l'indirizzo mail con il primo script, nessun problema, adesso dovrei inserire in varie pagine html la decriptatura su un link testuale tipo "Contatta L'amministratore" è possibile farlo? Come?
Mi sto scervellando come dicevo nel primo post non ne sò molto di php (quasi niente), ho provato e riprovato senza risultato prima di decidermi a riscrivere.
 
Ultima modifica:
ciao
potresti fare una cosa del genere

PHP:
<a href="mailto:<?php echo base64_decode("VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==") ?>" >contatta l'amministratore</a>

ma in questo caso come ti ho detto l'indirizzo lo vedi in chiaro perchè php prima interpreta poi mostra in formato html, quindi l'indirizzo è leggibile

per ovviare devi fare come ha fatto per l'invio delle altre email cioe anche qui dovresti passare per la funzione mail() o classe
 
Ciao, devo ammettere che la mia conoscenza del php è al di sotto delle mie aspettative, non vorrei approfittare della tua dispoibilità ma non riesco a realizzare quanto mi sono prefisso neanche seguendo i tuoi suggerimenti.

Per tagliare la testa al toro ho criptato l'indirizzo email tramite il tuo script ottenendo come risultato la codifica dell'indirizzo.

Quello che vorrei ottenere ora, linkando al file di decodifica il testo "scrivi all'amministratore" o altro, all'utente si aprisse il suo email client con il mio indirizzo in chiaro senza soggetto o testo ci penserà l'utente ad inserire l'uno e l'altro.

Se non vorrai rispondermi o vorrai mandarmici ti capisco, ma ho provato a fare da solo e non ci riesco.

Grazie comunque
 
Ultima modifica:
ciao
se non ho capito male eccoti uno schema di come potresti fare:
1. l'utente seleziona a chi deve essere inviata l'email
2. scrive il testo e LA SUA EMAIL
4. al submit vengono fatti alcuni controlli su quanto l'utente ha inserito
5. se non ha fatto errori l'email viene inviata, altrimenti deve riscriverla
PHP:
<?php
if(isset($_POST['invia']){
	$ok_ko="";//errori
	$scelta=$_POST['scelta'];//leggo la scelta dell'utente
	switch($scelta){
		case "1": $email="[email protected]";
		break;
		case "2": $email="[email protected]";
		break;
		//poi case 3, 4 e 5 o piu o meno. quelle che ti servano
		default://non è stata fatta una scelta
			$ok_ko.="devi scegliere a chi indirizzare l'email<br>";
		break;
	}
	$testo=strip_tags(trim($_POST['testo']));//leggo il testo e verifico che non sia vuoto
	if($testo==""){
		$ok_ko.="il campo testo non può essere vuoto<br>";
	}
	$email=$_POST['email'];//leggo l'email dell'utente e verifico se formalmente corretta
	if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
		$ok_ko.="non hai inserito un indirizzo valido<br>";
	}
	if($ok_ko ==""){//se qui $ok_ko è vuoto non sono stati commessi errori, quindi posso inviare
		$oggetto="richiesta";
		$testo=$testo."<br><br><br>email inviata da: ".$email;
		if(mail($email,$oggetto,$testo)){
			$ok_ko ="grazie di averci scritto, sarai contattato al più presto<br>";
		}else{//se non invia ci possono essere errori del server
			$ok_ko ="c'è stato un errore di trasmissione, riprova più tardi";
		}
	}
	//mostro il messaggio di errore o di invio
	echo $ok_ko;
	//e faccio ritornare al form pulito dopo tre secondi
	echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}
?>
<form action="#" method="post">
<table width="80%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="20%">scrivi a: </td>
    <td width="20%">&nbsp;</td>
    <td width="20%">&nbsp;</td>
    <td width="20%">&nbsp;</td>
    <td width="20%">&nbsp;</td>
  </tr>
  <tr>
    <td>amministratore
      <input name="scelta" type="radio" value="1"></td>
    <td>pinco 
      <input name="scelta" type="radio" value="2"></td>
    <td>pallo
      <input name="scelta" type="radio" value="3"></td>
    <td>sempronio
      <input name="scelta" type="radio" value="4"></td>
    <td>asdubale
      <input name="scelta" type="radio" value="5"></td>
  </tr>
  <tr>
  </tr>
  <tr>
    <td>testo:</td>
    <td colspan="3" rowspan="3" valign="top"><textarea name="testo" cols="60" rows="10"></textarea></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
    <tr>
    <td>tua email:</td>
    <td colspan="2"><input name="email" type="text" id="email"></td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td><input name="invia" type="submit" id="invia" value="invia"></td>
  </tr>
</table>
</form>
o
suo email client
non fare aprire il client di posta dell'utente (raro ma potrebbe non averlo, c'è chi legge/scrive direttamente da internet) quindi usa la funzione mail() e quando sarai più bravo l'abbandoni per una classe più performante e sicura, es phpmailler). in pratica EVITA il mailto:
 
Ciao e grazie per non avermici mandato, è quello che cercavo, l'ho sto provando su server locale ma mi dà questo errore quando apro la pagina nel browser:

Parse error: syntax error, unexpected '{' in C:\Program Files (x86)\EasyPHP-12.1\home\codesource.php on line 2

Ho provato a spostare la parentesi, cambia l'errore su numero di linea, da quel poco che sò la posizione della parentesi dovrebbe essere giusta.
 
ciao
bisogna sempre interpretare gli errori che da php
correggi

if(isset($_POST['invia']){
in

if(isset($_POST['invia'])){

l'errore non è sulla graffa, ma mancava la chiusura di una tonda (sorry)
 
Corretto l'errore ma provandolo sempre su server locale dopo aver scelto a chi inviare la mail, scritto il testo, la mail dell'evetuale utente e premendo "invia" non succede niente, sto sbagliando io qualcosa? Gli interventi che ho fatto sullo script:
1. ho cancellato 3 case e nei due rimanenti ho inserito 2 diversi indirizzi email
2. ho copiato lo script php in testa alla pagina
3. Dal body alla fine in normale html (ripetendo la cancellazione dei tre che ho fatto in php)
4. La pagina l'ho salvata in php come dovuto
 
Scusa non tener conto di quanto sopra, errore mio due chiusure del body e dell'html, corretto funziona benissimo
Un sentito grazie per l'aiuto e la pazienza dimostrata
 
Scusate se mi intrometto, la cosa interessa anche a me.

Ho messo questo e mi ha generato il codice strano

PHP:
$mia_email="[email protected]"; 
echo base64_encode($mia_email);

Codice generato: aXRhnG8uYOxiZXJ0aUBxY2xvdWQuY29t

Ora, ho questo, cosa ci metto?

PHP:
$me = "Me <[email protected]>";  
$oggetto = "Messaggio del visitatore";  //Le email vanno formattate con HTML
$messaggioM = "<html>
<head>
...
 
Ciao Shyson, se leggi il mio post dall'inizio trovi la risposta di "borgo italia" al tuo quesito, la soluzione dovrebbe essere questa:
PHP:
<?php 
mail ( base64_decode("VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==") , "oggetto:prova" , "questo è un messaggio di prova" ); 
?>
Dico dovrebbe perché la discussione è vecchia di due anni, ma posso assicurarti che se la leggi fin dalla prima pagina capirai come inserire il codice generato e come utilizzarlo.
Ciao
 
Io mi stavo chiedendo: serve davvero questo codice? I miei file sono tutti in php, perciò per logica non sono visibili. Piuttosto è più facile per qualcuno entrare nel sito e scaricare tutto il file, che dici?
 
Non vorrei dirti una castronata, ma se le tue pagine sono in php come fanno a copiartele? al limite possono farlo per la parte html dove viene descritta l'estetica delle pagine, se non usi i css, se no neanche quello, quindi come parte copiabile restano solo i contenuti (testo e foto).
 
Io ho provato a vedere il file sorgente e sono visibili solo codici innoqui html o script. Un tipo mi ha dimostrato di conoscere non solo l'email, ma anche il nick di skipe e altri dati. L'unica cosa che aveva di me è nome, cognome e ip.
Per me c'è un modo per scaricare completamente file anche in php
 
A questo punto non so cosa risponderti, visto che la discussione ha usufruito del bump, aspetta che qualcuno piu' esperto sappia dirti qualcosa di più preciso.
 
Il php non si può vedere se non si ha accesso al pannello di admin dell'host. Si ha accesso però a tutto l'html, tutti i file javascript e anche ai css. Il php viene esaminato dall'host e al browser invia solo html, js e css che il browser trasforma nella pagina web e dei quali ti mostra il codice tramite l'analizza elemento ecc

Inviato con Tapatalk Free da Android
 

Discussioni simili