Newsgroup: it.comp.www.php
Titolo: script php con blocco in base ad IP, per formulario

Dovrei per far andare la newsletter sul server del provider che ospita
il mio sito e che usa il programma EZMLM, devo usare uno script php, ma
quello che forniscono loro non ha il blocco in base all'IP e quindi la
Form-mail generata dallo script può essere spammata, con la
conseguenza che già (come mi è capitato) solo per errore c'è rischio
che chi si iscrive riceva 20 ettere di conferma dell'iscrizione, se poi
succede che qualcuno lo fà apposta il sito diventa un sito di uno
spammer. Insomma per evitare questo problema vi chiedo nformazione circ
aun qualche script php che abbia il blocco in base all'IP sull'invio
delle richieste al programma, ne esistoo (la mia form-mail in perl, ad
es. ce l'ha!) ?
grazie

 es. ce l'ha!) ?
[NON SONO SICURO]
Da quello che mi ricordo ezmlm non invia piu' di una richiesta di conferma
[/NON SONO SICURO]
Puoi segnarti in un file di testo l'ip del richiedente e non accettare 
piu' di due richieste da quell'ip... e' quello che ti serve?
Tanto alla fine lo script non fa altro che mandare una mail a 
un/
subscribe...@miodominio.it
quindi non dovrebbe esserti complicato scrivere uno script a hoc...
~omar

Si è esattamente ciò che mi serve. Sai indicarmi dove trovare uno
script del genere. Ho iniziato stasera studiare il php, ma lo script mi
servirebbe subito.  :-)
Anzi ti allego lo script del server su cui ho il mio sito, credoche sia
libero (lo offrono in una pagina del loro sito) perchè non ho capito
se bisogna modificare questo script o farne un altro.
 ciao e grazie
<?php
//'''''''''' inserire il nome del dominio
$DOMAIN='
xxxxxx.com
';
//'''''''''' inserire il nome della lista o delle liste
$LISTS[]='lista1';
$LISTS[]='altra_lista';
//''''''''fine configurazione
$response_template='
<br>
<center>
<div align="center">
<table border="0" cellspacing="1" cellpadding="2" width="570">
<tr>
<td align="center">
%%ACTION%% %%LIST%%@%%DOMAIN%%
</td>
</tr>
<tr>
<td class="response">
Riceverai una mail a breve su &quot;%%ADDRESS%%&quot;. Quello che devi
fare è usare la funzione "Rispondi" del tuo client di posta
ed inviare tale risposta: non è necessario scrivere nulla.
</td>
</tr>
</table>
</div>
</center>
';
?>
<html>
<head>
<title>Iscrizione a mailing-list in php</title>
<style>
body {
background-color:#ffcb8c;
color:white;
}
td { background-color:#ffcb8c; color:red;
font-weight:bold;font-family:verdana;}
td.response { background-color:#ffca000; color:red; font-weight:normal;
font-family:verdana; }
</style>
</head>
</body>
<center><div align="center">
<table border="0" cellspacing="0" cellpadding="0" width="570">
<form method="post">
<tr>
<td align="center">Indirizzo email</td>
<td align="center">Nome Lista / Azione</td>
<td align="left">&nbsp;</td>
</tr>
<tr>
<td align="center"><input type="text" value="<?php echo $_GET['a']; ?>"
name="addy" size="30"></td>
<td align="center"><select name="list"><?php
if ( is_array($LISTS)) {
foreach ( $LISTS as $val ) {
echo '<option value="'.$val.'">'.$val.'@'.$DOMAIN.chr(10);
}
}
?></select><select name="action"><option
value="subscribe">Iscriviti<option value="unsubscribe">Rimuovi
iscrizione</select></td>
<td align="left"><input type="submit" value="GO!"></td>
</tr>
</form>
</table>
</center></div>
<?php
switch ( $_POST['action'] ) {
case 'subscribe':
if ( !empty($_POST['addy']) ) {
if ( mail($list.'-subscribe-'.str_replace('@', '=',
$_POST['addy']).'@'.$DOMAIN ,'', '') ) {
show_tpl($response_template, 'ISCRITTO A: ', $list, $DOMAIN,
$_POST['addy']);
}
}
break;
case 'unsubscribe':
if ( !empty($_POST['addy']) ) {
if ( mail($list.'-unsubscribe-'.str_replace('@', '=',
$_POST['addy']).'@'.$DOMAIN ,'', '') ) {
show_tpl($response_template, 'RIMOSSO DA: ', $list, $DOMAIN,
$_POST['addy']);
}
}
break;
}
function show_tpl($tpl, $action, $list, $domain, $address) {
$tpl=str_replace('%%ACTION%%', $action, $tpl);
$tpl=str_replace('%%LIST%%', $list, $tpl);
$tpl=str_replace('%%DOMAIN%%', $domain, $tpl);
$tpl=str_replace('%%ADDRESS%%', $address, $tpl);
echo $tpl;
}
?>
</body>
</html>