Form mail php - indirizzo ip

utente

Nuovo Utente
2 Mag 2016
30
0
6
rilevamento indirizzo ip
quando ricevo una email da un form, vorrei ricevere nell'email anche l'indirizzo ip del mittente,
ho fatto piu tentativi, ma non sono ci riuscito ad inserirlo in questo modulo che segue

pagina html esempio
______________

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>messaggio</title>


</head><body>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br>

<div style="text-align: center;"><br>
</div>

<form method="post" action="form.php">

<input name="required" value="email,nome" type="hidden"> <input name="oggetto" value="messaggio " type="hidden"> <br>
<table align="center" width="95%">
<tbody>
<tr>
<td colspan="2">
<div class="style1"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
MESSAGGIO</strong></div>
</td>
</tr>
<tr>
<td style="height: 27px;" class="style3">&nbsp;</td>
<td style="height: 27px;">&nbsp;<strong>&nbsp;</strong></td>
</tr>
<tr>
<td style="height: 27px;" class="style3">NOME</td>
<td style="height: 27px;"><input name="cognome" style="width: 278px;" type="text"> <strong>&nbsp;</strong></td>
</tr>
<tr>
<td style="height: 28px;" class="style3">Città</td>
<td style="height: 31%;"><input name="citta" style="width: 178px;" type="text">
<span class="style4"><small><small><strong>
<small><span class="style6"><small><small><small>
<span class="style8"><small>&nbsp;</small></span>&nbsp;</small></small></small></span>&nbsp;
</small></strong></small></small></span></td>
</tr>
<tr>
<td class="style3">e-mail</td>
<td><input name="email" style="width: 225px;" type="text"><span class="style3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></td>
</tr>
<tr>
<td class="style3" style="height: 114px;">Messaggio&nbsp;</td>
<td style="height: 114px;"><textarea rows="10" name="testo" style="width: 421px;" class="style20" cols="20"></textarea></td>
</tr>
<tr>
<td colspan="2" style="height: 23px;">&nbsp;</td>
</tr>
<tr>
<td colspan="2" style="height: 23px;">&nbsp;</td>
</tr>
<tr>
<td colspan="2">
<div class="style1"><input name="Submit" value="INVIA" type="submit"></div>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>



</form>

</body></html>


__________________


segue succesivo pagina php
 
pagina in php
_________

<?
/*
formMail completo, è possibile aggiungere qualunque campo
è sufficiente inserire le due pagine in un punto qualunque
del proprio dominio.
by linkbruttocane
REV 2013
*/

//INIZIO PARAMETRI DA SETTARE OBBLIGATORIAMENTE
/****************************************************************************************/

//email di destinazione, mettere qui la propria email

$contenitore = "[email protected]";

// Il parametro $provenienza indica le possibili provenienze dei dati: indicare
// il proprio dominio nella forma mostrata dall'esempio. l IP è facoltativo.

$provenienza = array ('sito.com','www.sito.com.com');


// Il parametro $url indica la pagina alla quale si viene
// rimandati una volta compilato correttamente il modulo
// io ho messo la homepage, ma potrebbe essere qualunque altra pagina

$url = "/";


//FINE PARAMETRI DA SETTARE OBBLIGATORIAMENTE
/****************************************************************************************/

// lettura dell'indirizzo IP
$ip = getenv("REMOTE_ADDR");



// Il parametro $delay indica i secondi di ritardo impiegati
// a riportare l'utente all'home page una volta
// compilato correttamente il modulo

$delay = "5";

// Il parametro $esclusioni vi permette di NON consentire
// messaggi da un indirizzo mail specificato
// sia appartenente ad un dominio, ovvero
// 'tutte le mail che appartengono ad un dominio'
// od anche a singoli account

$esclusioni = array ('*@quellochetipare.com', '[email protected]', '[email protected]');


//$redirect = "http://www.sito.com.com";

$versione_form = "stabile";




function print_error($reason,$type = 0) {
global $versione_form;
build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet);
if ($type == "missing") {
?>
<body bgcolor='#94B6C6'>
<p align='center'><font face='Arial' color='#990000' size='2'>Il modulo non è
stato inviato per le seguenti ragioni</font></p><br>
<p align='center'><font face='Arial' size='2' color='#990000'>
<?
echo $reason."\n";
?>
</font>
<p align='center'><font face='Arial' size='2' color='#990000'>Premere indietro
nel browser e riprovare.</font></p><?
} else { // every other error
?>
Il modulo non è stato inviato per le seguenti ragioni:<p align='center'>
<?
}
echo "<br><br>\n";

exit;
}


function check_banlist($esclusioni, $email) {
if (count($esclusioni)) {
$allow = true;
foreach($esclusioni as $banned) {
$temp = explode("@", $banned);
if ($temp[0] == "*") {
$temp2 = explode("@", $email);
if (trim(strtolower($temp2[1])) == trim(strtolower($temp[1])))
$allow = false;
} else {
if (trim(strtolower($email)) == trim(strtolower($banned)))
$allow = false;
}
}
}
if (!$allow) {
print_error("Stai usando un <b>indirizzo email escluso.</b>");
}
}


function check_referer($provenienza) {
if (count($provenienza)) {
$found = false;
$temp = explode("/",getenv("HTTP_REFERER"));
$referer = $temp[2];
for ($x=0; $x < count($provenienza); $x++) {
if (eregi ($provenienza[$x], $referer)) {
$found = true;
}
}
if (!getenv("HTTP_REFERER"))
$found = false;
if (!$found){
print_error("Provieni da un <b>dominio non autorizzato.</b>");
error_log("[FormMail.php] Illegal Referer. (".getenv("HTTP_REFERER").")", 0);
}
return $found;
} else {
return true; //
}
}
if ($provenienza)
check_referer($provenienza);

if ($esclusioni)
check_banlist($esclusioni, $email);


function parse_form($array) {
// build reserved keyword array
$reserved_keys[] = "required";
$reserved_keys[] = "redirect";
$reserved_keys[] = "email";
$reserved_keys[] = "require";
$reserved_keys[] = "contenitore";
$reserved_keys[] = "titolo";
$reserved_keys[] = "bgcolor";
$reserved_keys[] = "text_color";
$reserved_keys[] = "link_color";
$reserved_keys[] = "vlink_color";
$reserved_keys[] = "alink_color";
$reserved_keys[] = "title";
$reserved_keys[] = "missing_fields_redirect";
$reserved_keys[] = "invia_Dati";
if (count($array)) {
while (list($key, $val) = each($array)) {

$reserved_violation = 0;
for ($ri=0; $ri<count($reserved_keys); $ri++) {
if ($key == $reserved_keys[$ri]) {
$reserved_violation = 1;
}
}

if ($reserved_violation != 1) {
if (is_array($val)) {
for ($z=0;$z<count($val);$z++) {
$content .= "$key: $val[$z]\n";
}
} else {
$content .= "$key: $val\n";
}
}
}
}
return $content;
}


function mail_it($content, $titolo, $email, $contenitore) {
mail($contenitore, $titolo, $content, "From: $contenitore\r\nReply-To: $contenitore\r\nX-Mailer: DT_formmail");
}


function build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet) {
if ($style_sheet)
echo "<LINK rel=STYLESHEET href=\"$style_sheet\" Type=\"text/css\">\n";
if ($title)
echo "<title>$title</title>\n";
if (!$bgcolor)
$bgcolor = "#94B6C6";
if (!$text_color)
$text_color = "#80000";
if (!$link_color)
$link_color = "#0000FF";
if (!$vlink_color)
$vlink_color = "#FF0000";
if (!$alink_color)
$alink_color = "#000088";
if ($background)
$background = "background=\"$background\"";
echo "<body bgcolor=\"$bgcolor\" text=\"$text_color\" link=\"$link_color\" vlink=\"$vlink_color\" alink=\"$alink_color\" $background>\n\n";
}

$contenitore_finale = split(',',$contenitore);
for ($i=0;$i<count($contenitore_finale);$i++) {
$contenitore_to_test = trim($contenitore_finale[$i]);
if (!eregi("^[_\\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\\.)+[a-z]{2,3}$", $contenitore_to_test)) {
print_error("<b>Occorre un indirizzo email valido per continuare ($contenitore_to_test) </b>");
}
}


if ($required)
$require = $required;

if ($require) {

$require = ereg_replace( " +", "", $require);
$required = split(",",$require);
for ($i=0;$i<count($required);$i++) {
$string = trim($required[$i]);

if((!(${$string})) || (!(${$string}))) {

if ($missing_fields_redirect) {
header ("Location: $missing_fields_redirect");
exit;
}
$require;
$missing_field_list .= "<b>Non trovato: $required[$i]</b><br>\n";
}
}

if ($missing_field_list)
print_error($missing_field_list,"missing");
}


if (($email) || ($EMAIL)) {
$email = trim($email);
if ($EMAIL)
$email = trim($EMAIL);
if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $email)) {
print_error("il suo <b>indirizzo email</b> non è valido");
}
$EMAIL = $email;
}






$content = parse_form($_POST, $sort);


if ($invia_Dati) {
$invia_Dati = ereg_replace( " +", "", $invia_Dati);
$splitta_Dati = split(",",$invia_Dati);
$content .= "\n------ variabili utente ------\n";
for ($i=0;$i<count($splitta_Dati);$i++) {
$string = trim($splitta_Dati[$i]);
if ($splitta_Dati[$i] == "REMOTE_HOST")
$content .= "REMOTE HOST: ".$REMOTE_HOST."\n";
else if ($splitta_Dati[$i] == "REMOTE_USER")
$content .= "REMOTE USER: ". $REMOTE_USER."\n";
else if ($splitta_Dati[$i] == "REMOTE_ADDR")
$content .= "REMOTE ADDR: ". $REMOTE_ADDR."\n";
else if ($splitta_Dati[$i] == "HTTP_USER_AGENT")
$content .= "BROWSER: ". $HTTP_USER_AGENT."\n";
}

}

if (!$titolo)
$titolo = "Modulo dal sito";

mail_it(stripslashes($content), stripslashes($titolo), $email, $contenitore);


if ($redirect) {
header ("Location: $redirect");
exit;
} else {
print "<body bgcolor='#94B6C6'>

<p align='center'><font face='Arial' size='2' color='#800000'>Grazie per averci
contattato.</font></p><p align='center'><font face='Arial' size='2' color='#800000'>Riceverete
risposta all'indirizzo email da voi indicato $e-mail<br><br>...Ritorno automatico alla Home page in corso....</font></p><meta http-equiv='refresh' content='$delay; url=$url'>

<p align='center'>&nbsp;</p>

</body>
";
echo "<br><br>\n";
exit;
}

// <---------- fine ----------> //
 
ciao
quando scrivi del codice usa per il codice la quart'ultima icona della formattazione del post "Inserisci..." clicchi e ti chede cosa, scegli codice <> , ti appare una finestra in cui ibserire il codicge e scegli quale generigo, HTML se solo html o PHP e inserisci. esempio per html
HTML:
<html>
<!-- ..... -->
</html>
 
non ho capito
Borgo ti ha suggerito di inserire il codice negli appositi tag per renderlo meglio comprensibile a chi lo legge,
per cortesia, che fai agli altri utenti del forum, metti in atto il suo suggerimento nei prossimi messaggi,

prova a modificare così il tuo codice e fai sapere se funziona,
PHP:
 //FINE PARAMETRI DA SETTARE OBBLIGATORIAMENTE
/****************************************************************************************/

// lettura dell'indirizzo IP
$ip = getenv("REMOTE_ADDR");

$_POST['ip'] = $ip;

considera che ip è un dato spesso "inconsistente", se solo pensi all'assegnazione dinamica degli ip, ti rendi conto che lo stesso ip identifica terminali completamente diversi, magari leggi qui,
https://www.virendrachandak.com/techtalk/getting-real-client-ip-address-in-php-2/
 
  • Like
Reactions: utente
ho provato , si ora l'indirizzo ip viene correttamente indicato nella email :) grazie mille :))
Si , sono a conoscenza che l'indirizzo ip puo essere facilmente camuffato con programmi o applicativi.
Mi chiedo se , in questo modulo formail , l'indirizzo email indicato nella pagina php, possa essere rilevato da un programma rileva email spammer, perche in passato ho avuto dei problemi di spam, ma questo accaduto con un modulo diverso . grazie ancora per il problema risolto :) (y)
 
Ci sono due problemi per fare ciò che vuoi fare tu, uno legale, l'IP utente è un dato soggetto alla legge sulla privacy?
Secondo alcuni no, secondo altri ni, il sito del Garante della privacy non è molto chiaro al riguardo.
Quello che posso dirti è che comunque una tecnica di "IP address spoofing" è molto illegale ;) oltre che estremamente aleatoria nei risultati ( lasciamo alla TV le tecniche di telefilm come CSI:Cyber e rimaniamo coi piedi ben piantati per terra ) .
L'altro tecnico.
$_SERVER['REMOTE_ADDR'] non rileva l'IP dell'utente ma del server a cui esso è collegato, in questo caso quello del tuo hoster :)
Vedi la pagina relativa sul sito del PHP: http://de2.php.net/manual/en/reserved.variables.server.php
che riporta tra l'altro:
'SERVER_ADDR'
The IP address of the server under which the current script is executing.
Cioè letteralmente "L'indirizzo IP del server sotto il quale il corrente script è in esecuzione", quindi non ti serve(r) :D

Che puoi fare? Quello che fanno tutti in questo caso, cioè richiedere direttamente a chi ti scrive i propri dati, sensibilizzando l'utenza che in caso di dati mendaci ( scrivo forbicito lo so :D ) verranno attuate le doverose procedure del caso ( madòòò la denunzia ).
Se scrivi questo ( senza le mie aggiunte ridicole ovvio ) riceverai molte meno email di quante ne ricevi ora, ma le persone saranno motivate e non dei quaquaraquà, ovviamente con una bella pagina che definisce chi è il titolare del trattamento della privacy per il sito, obbligatoria per legge tra l'altro su ogni sito.
 
  • Like
Reactions: utente
@MarcoGrazia
il valore restituito da "$ip = getenv('REMOTE_ADDR');" è corretto, con qualche limite
forse per la fretta stai leggendo cose diverse nel manuale
eseguendo lo script sul mio server (remoto), mi viene restituito il mio indirizzo ip pubblico (di casa)

come può intendersi un ip dinamico soggetto a privacy quando identifica nel tempo soggetti diversi ?
poi è conservato nei cookies ......e abbiamo aggirato ... il problema
 
  • Like
Reactions: utente
Dove gira il tuo script? Intendo su quale server, pubblico o il pc da cuistavi provando lo script?
Le informazioni che ho riportate sono prese dal sito del PHP non le ho interpretate :)
La questione privacy non è mia personale ma oggetto di dibatttito, vedi:
Leggi bene questo perché potrebbe essere il tuo caso, ovvero quando un indirizzo IP ( dinamico o meno non importa perché comunque è riconducibile a chi lo usa al momento; a meno che non si è su PC condiviso, come me in questo caso ) se associato ad altri dati che ne identificano la persona è comunque riconducibile ad un dato personale. ( e-mail e dati correlati )
In particolare il Garante della Privacy dice che:
TIPI DI DATI TRATTATI

Dati di navigazione
I sistemi informatici e le procedure software preposte al funzionamento di questo sito web acquisiscono, nel corso del loro normale esercizio, alcuni dati personali la cui trasmissione è implicita nell'uso dei protocolli di comunicazione di Internet.

Si tratta di informazioni che non sono raccolte per essere associate a interessati identificati, ma che per loro stessa natura potrebbero, attraverso elaborazioni ed associazioni con dati detenuti da terzi, permettere di identificare gli utenti.

In questa categoria di dati rientrano gli indirizzi IP o i nomi a dominio dei computer utilizzati dagli utenti che si connettono al sito, gli indirizzi in notazione URI (Uniform Resource Identifier) delle risorse richieste, l'orario della richiesta, il metodo utilizzato nel sottoporre la richiesta al server, la dimensione del file ottenuto in risposta, il codice numerico indicante lo stato della risposta data dal server (buon fine, errore, ecc.) ed altri parametri relativi al sistema operativo e all'ambiente informatico dell'utente.

Questi dati vengono utilizzati al solo fine di ricavare informazioni statistiche anonime sull'uso del sito e per controllarne il corretto funzionamento e vengono cancellati immediatamente dopo l'elaborazione. I dati potrebbero essere utilizzati per l'accertamento di responsabilità in caso di ipotetici reati informatici ai danni del sito: salva questa eventualità, allo stato i dati sui contatti web non persistono per più di sette giorni.
http://www.iltuolegale.it/indirizzo-ip-e-privacy/

comunque per tornare in topic, ti consiglio di verificare anche: http://www.oberhauser.it/programmazione/indirizzo-ip-reale-del-client-php/
 
  • Like
Reactions: utente
1)
il fine dell'indirizzo IP era quello di identificare l'utente che compila il modulo form.
Pur sapendo che L' IP puo essere aggirato, con semplici tecniche.
Il fine per cui vorrei è quello di avere la certezza e prova univoca, che un form sia stato compilato da una persona specifica ed non da un altra qualunque, oppure è consigliabile nel form acquisire anche l'indirizzo MAC ADRESS, indirizzo macchina/pc ( anche questo puo essere cambiato) unitamente all'indirizzo IP.
( se qualcuno puo suggerire , come eventualmente anquisire anche questo nel form, indirizzo MAC ..)
In passato mi è capitato , con il solo rilevamento indirizzo IP , scoprire un avvocato, che aveva compilato un form , indicando dati fraudolenti, e tramite l'indirizzo ip di una sua email , sono riuscito a capire che si trattava della stessa persona, non ho voluto denunciarlo, ma lo chiamato telefonicamente e l'ho avvisato di cio che aveva commesso, perseguibile per legge, ho volontariamente lasciato perdere pur avendo telefonato all'interessato.
Supponiamo un esempio che una persona, assume un impegno, tramite un contratto tramite form, è possibile avere la certezza che il modulo sia stata compilato da una persona specifica e non un altra qualunque, affinche un domani questo il modulo complilato non possa essere negato.
Per il discorso privacy, penso che sia facilmente risolvibile, con l'inserimento ed accettazione del trattamento dei dati, che oltre per l'indirizzo ip deve essere indicato per la raccolata dati .

2)
non intendevo IP address spoofing
mi sono espresso male, volevo dire che in passato mi e capitato di installare il form formail 1.92 ( Matt's Script ) che funzionava con cgin. L'installazione di questo formail , causava di ricevere email spam in quanto il mio indirizzo email veniva intercettato da programmi spam, successivamente ho eliminato questo form e non ho ricevuto email spam.
Mi chiedevo se form in php dell'esempio, il mio indirizzo email indicato del modulo php e protetto da questo programmi che intercettono email in rete.

3)
sto leggendo i link segnalati con le vostre note .
saluti e grazie del contributo
 
Ultima modifica:

Discussioni simili