Ciao a tutti, sono nuovo del forum e anche del php (il mio livello di conoscenza del linguaggio è sotto zero, siate clementi)

sto cercando di adattare un form per l'iscrizione a una serie di mailing list in modo che venga incorporato nelle pagine del mio cms (drupal-linux).

temo che nel form originale ci sia qualche errore di codice ( è il form per l'iscrizione alle mailing list della più famosa azienda di hosting italiano)..

vi allego il loro codice originale:

Codice PHP:
<?php
//aprile2008- modifica per host linux
$imposta ini_set("sendmail_from""postmaster@tuodominio.com");
    if (!
$imposta) { print "Non posso impostare sendmail_from!
\n"
; }
//fine modifica aprile 2008
//'''''''''' inserire il nome del dominio
$DOMAIN='miodominio.com';
//'''''''''' inserire il nome della lista o delle liste
$LISTS[]='mailinglistuno';
$LISTS[]='altra_mailinglist';
//''''''''fine configurazione

$response_template='


  <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"></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 ,'iscrizione''iscrizione') ) {
                
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 ,'annulla iscrizione''annulla') ) {
                
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>

e successivamente il mio, che ho modificato dopo ore e ore di prove...
il mio ri-adattamento sembra funzionare solo in presenza di un'unica mailing list:

se inserisco 2 o più mailing list, mi viene seleziona sempre l'ultimo indirizzo.. dovrebbe essere una stupidaggine per chi lo capisce.. ma purtroppo non ho nessuno a cui chiedere.

Codice PHP:
//NOTE: nella mia modifica ho tolto la sintassi html(body, title, ecc) dato che dovevo inglobarlo in una pagina di un CMS
//ho inoltre verificato che la funzione "sendmail_from" funziona SOLAMENTE per php su win ( :-S che gente!!! ) 
//quindi ho rimosso anche quelle righe. Successivamente mi sono accorto che nel loro codice non veniva passato il nome
//della mailing list alla funzione che doveva spedire le mail e (provando a tentoni) ho sostituito la variabile $list 
//alla loro $val ... ora la mail di iscrizione/rimozione viene correttamente ricevuta ma SOLO riguardante l'ULTIMA lista

<?php

$DOMAIN
='miodominio.com';    //nome del dominio
$LISTS[]='listauno';       // le varie mailing list
$LISTS[]='listadue';
$LISTS[]='listatre';

$response_template='


  <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>
'
;

?>

  <style>
   td { background-color:#ffca05; color:black; font-weight:bold;font-family:verdana;}
   td.response { background-color:#ff8800; color:black; font-weight:normal; font-family:verdana; }
   
  </style>


 <div align="center">
  <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"></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 $list ) {
            echo 
'<option value="'.$list.'">'.$list.'@'.$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="invia"></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 ,'iscrizione''iscrizione') ) {
                
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 ,'annulla iscrizione''annulla') ) {
                
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;
    }
?>
Ringrazio di cuore per ogni suggerimento