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:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
147
63
PR
www.borgo-italia.it
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
 

anton

Nuovo Utente
16 Lug 2012
27
0
1
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
147
63
PR
www.borgo-italia.it
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
 

anton

Nuovo Utente
16 Lug 2012
27
0
1
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
 

anton

Nuovo Utente
16 Lug 2012
27
0
1
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:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
147
63
PR
www.borgo-italia.it
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
 

anton

Nuovo Utente
16 Lug 2012
27
0
1
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:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
147
63
PR
www.borgo-italia.it
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:
 

anton

Nuovo Utente
16 Lug 2012
27
0
1
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.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
147
63
PR
www.borgo-italia.it
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)
 

anton

Nuovo Utente
16 Lug 2012
27
0
1
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
 

anton

Nuovo Utente
16 Lug 2012
27
0
1
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
 

Shyson

Utente Attivo
19 Ago 2012
1.147
1
38
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 <mi[email protected]>";  
$oggetto = "Messaggio del visitatore";  //Le email vanno formattate con HTML
$messaggioM = "<html>
<head>
...
 

anton

Nuovo Utente
16 Lug 2012
27
0
1
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
 

Shyson

Utente Attivo
19 Ago 2012
1.147
1
38
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?
 

anton

Nuovo Utente
16 Lug 2012
27
0
1
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).
 

Shyson

Utente Attivo
19 Ago 2012
1.147
1
38
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
 

anton

Nuovo Utente
16 Lug 2012
27
0
1
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.
 

Night Assassin

Utente Attivo
16 Mar 2013
200
0
0
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
Autore Titolo Forum Risposte Data
Vale2 Nascondere un indirizzo email agli spambot Snippet Javascript 0
max_400 Nascondere indirizzo o visualiz. un altro oppure Proteggere pagina php ricevente PHP 6
G Nascondere la barra indirizzo nelle pagine html HTML e CSS 1
G Nascondere la barra indirizzo nelle pagine html HTML e CSS 0
Alex_70 Nascondere label tab se campo vuoto PHP 2
Shyson [PHP] Nascondere codice PHP 3
Shyson [WordPress] Nascondere email agli spider WordPress 3
V [Javascript] Visualizzare o nascondere div figlio Javascript 4
Shyson [WordPress] Nascondere link del Login WordPress 2
A Javascript Nascondere Div con id numerico dinamico Javascript 18
S [javascript] visualizzare/nascondere div Javascript 3
C Nascondere un div al click di una casella Ajax 1
Shyson [Javascript] Nascondere avviso se utente può registrarsi Javascript 0
jonnino2004 nascondere le proprie visite Google Analytics 1
B APACHE-NASCONDERE DIRECTORY DALL'URL Web Server 0
andrew1975 [Joomla] nascondere lo slider Joomla 1
S [Javascript] Nascondere e rendere visibile un Div cliccando su due link Javascript 2
Marcello.Fiore Nascondere div con jQuery jQuery 7
F Nascondere menù onclick sottovoce jQuery 0
P nascondere div con css inline Javascript 2
Shyson Nascondere codice quando si linka Javascript 10
M Nascondere Video e censurare src in tag <iframe> Quale linguaggio consigliate? Discussioni Varie 0
N Nascondere menu onclick su ancora Javascript 2
V Nascondere prodotti non disponibili in prestashop Content Management System (CMS) 2
L Modo per nascondere una parte variabile di una stringa PHP 0
Licantropo Come nascondere i propri dati su Whois? Hosting 0
L nascondere tastiera ios8 Sviluppo app per iOS 0
G Nascondere cartella con .htaccess PHP 0
N Aiuto con html nascondere i media HTML e CSS 4
N Nascondere cartella sito al pubblico PHP 0
F Nascondere option value Javascript 2
D mostrare nascondere sottomenu Javascript 1
M nascondere la colonna di una tabella in base ad una condizione PHP 8
L funzione per nascondere username PHP 5
M Nascondere url pagina PHP 3
3 iframe e nascondere un div caricato HTML e CSS 5
L Nascondere .htaccess dalla visualizzazione dei file visti da script PHP 5
M Nascondere o Offuscare codice Javascript e Jquey jQuery 2
F Aiuto script per nascondere banner per 24 ore all utente. PHP 7
T nascondere percorso di file da scaricare PHP 3
S Nascondere nome pagina web dalla barra degli indirizzi HTML e CSS 2
K Nascondere i css3 ai vecchi broswer usando @media HTML e CSS 0
F Nascondere una nuova finestra Javascript 1
L Nascondere l'amministratore del sito PHP 9
Athene Come nascondere i dati della checkbox in php PHP 2
asevenx rendere visibili e nascondere DIV con onlink Javascript 12
U nascondere riga di tabella se valore campo =... Javascript 4
S tag per nascondere testo in wordpress WordPress 4
borgo italia nascondere percorso link Javascript 5
P Nascondere codice html o oggetti al passaggio del mouse HTML e CSS 4

Discussioni simili