Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [mailing list php] help con più liste

    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

  2. #2
    up per cortesia... è importante...

  3. #3

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.