Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: modifica newsletter

  1. #1

    modifica newsletter

    Ciao ragazzi io sono molto ma molto inesperto nel campo asp ma stò tentanto di fare una newsletter con l'aiuto di Crescenzo (sul formun flash generale). detto questo ho qualche problema con il codice asp che vorrei modificare (creato da lukeonweb).
    Prima di tutto la pagina per iscrizione e cancellazione l'ho ricreata in flash con l'inserimento di due pulsanti (1 cancellazione e 1 iscrizione) quindi bisogna che l'asp ora prenda le informazioni da flash e non più da dreamweaver. Seconda cosa vorrei (per non incombere in problemi) che al momento dell'iscrizione sul mio db venisse inserito anche l'ip del contraente; Nel momento in cui un'utente decide di cancellarsi dalla newsletter vorrei che sul mio db rimanesse lo stesso come disabilitato quindi non cancellato. e come ultima cosa vorrei che al momento dell'iscrizione l'utente ricevesse una mail all'indirizzo da lui specificato per dare la conferma all'inserimento nel mio db.
    Lo so che vi chiedo tanto (crescenzo ha una pazienza unica, non so come faccia a sopportarmi quindi lo ringrazio apertamente anche qua!) ma se qualcuno armato di grande pazienza potesse qiutarmi a risolvere questi problemi ne sarei davvero grato.
    Posto di seguito il codice asp della mia pagina...

    <%@LANGUAGE = JScript%>
    <%
    /*
    Autore: Luca Ruggiero - http://www.lukeonweb.net
    Fonte: freeAsp.it - http://freeasp.html.it
    */

    // Istanzio una variabile che mi permette di verificare l'inserimento
    var errore = 0;

    // Recupero l'indirizzo email segnalato e l'azione dell'utente,
    // ovvero l'intenzione di iscriversi o di cancellarsi
    var email = new String(Request.Form("email"));
    var azione = new String(Request.Form("azione"));

    // Espressione regolare per un indirizzo email
    var Controlla = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;

    // Apro la connessione al database
    var Cn = new ActiveXObject("ADODB.Connection");
    var Sc = "driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("database.mdb");
    Cn.Open(Sc);

    // Verifico se l'indirizzo email è già presente
    var Ridondanza = Cn.Execute("SELECT * FROM utenti WHERE email LIKE '" + email + "'");

    // Caso in cui l'utente decide di registrarsi
    if (azione == "S") {
    // Imposto le condizioni per la verifica
    if (!Controlla.test(email)) {
    errore = 1;
    }
    if (!Ridondanza.EOF) {
    errore = 2;
    }

    // Organizzo l'output per i mesaggi di errore
    if (errore == 1) {
    Response.Write("Inserisci un indirizzo email corretto");
    Cn.Close();
    Response.End;
    }
    if (errore == 2) {
    Response.Write("Sei già iscritto alla Mailing list");
    Cn.Close();
    Response.End;
    }

    // Apro il recordset ed effettuo l'inserimento
    var Rs = new ActiveXObject("ADODB.Recordset");

    Rs.Open("utenti",Cn,3,3);
    Rs.AddNew();
    Rs("email") = email;
    Rs.Update();
    Rs.Close();

    Response.Write("Iscrizione avvenuta con successo");
    }

    // Caso in cui l'utente già registrato decide di cancellarsi
    if (azione == "N") {
    // Imposto i casi di errore in fase di cancellazione
    if (Ridondanza.EOF) {
    errore = 3;
    }

    // Organizzo l'output per i mesaggi di errore
    if (errore == 3) {
    Response.Write("Indirizzo email inesistente: impossibile effettuare la cancellazione");
    Cn.Close();
    Response.End;
    }

    var Cancella = Cn.Execute("DELETE * FROM utenti WHERE email LIKE '" + email + "'");

    Response.Write("Cancellazione avvenuta con successo");
    }

    Cn.Close();
    %>
    ...l'uomo libero amerà sempre il mare...

  2. #2
    up?
    ...l'uomo libero amerà sempre il mare...

  3. #3
    up
    ...l'uomo libero amerà sempre il mare...

  4. #4
    Una parte dei tuoi molteplici scopi si può risolvere aggiungendo alla tabella utenti i campi IP_utente (campo testo) e utente_attivo (campo si/no).

    Quando effettui una iscrizione, anzichè il solo

    Rs("email") = email;
    potrai così inserire

    codice:
    Rs("IP_utente") = request.servervariables("REMOTE_ADDR")
    Rs("utente_attivo") = 1
    in modo che rimanga memorizzato l'IP dell'utente collegato e che venga "flaggato" il campo utente_attivo.

    Gli invii della newsletter, a questo punto, non dovrai farli a tutti gli utenti, ma solo a quelli con il campo "utente_attivo" che vale 1 (o true, o yes, a seconda del database che usi e del suo settaggio).

    Se l'utente chiede di essere rimosso dalla mailing list, potrai semplicemente eseguire la query

    codice:
    sql = "UPDATE utenti set utente_attivo = 0 WHERE email = ' " & cancellato & " ' "
    dove cancellato è la variabile in cui avrai memorizzato l'email dell'utente che chiede di essere rimosso dalla mailing list.

    In tal modo questo utente non la riceverà più, ma i suoi dati rimarranno nel tuo database, cosa che peraltro, se non ricordo male, NON E' CONFORME ALLA LEGGE SULLA PRIVACY (!), ma su questo punto verifica tu stesso.

    Quanto alla conferma via email dell'avvenuta iscrizione, dopo avere inserito un indirizzo email nella mailing list invierai allo stesso indirizzo, utilizzando uno degli oggetti per l'invio automatico di email, solitamente CDONTS oppure CDOSYS a seconda di quale dei due è supportato dal server su cui si trova il sito, un messaggio del tipo "Iscrizione avvenuta con successo. Grazie per avere aderito alla nostra mailing list".

    Esempi di codice per l'invio automatico dei messaggi con questi due oggetti ne trovi a volontà sia facendo una ricerca nel forum, sia qui, sul bel sito di weppos, nella sezione dedicata agli script ASP.

    Buon divertimento.

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  5. #5
    mmm se ho capito bene basta che aggiungo sul db (fatto in access) sue colonne (una campi IP_utente e una utente_attivo) e il resto dovrebbe essere così:

    <%@LANGUAGE = JScript%>
    <%
    /*
    Autore: Luca Ruggiero - http://www.lukeonweb.net
    Fonte: freeAsp.it - http://freeasp.html.it
    */

    // Istanzio una variabile che mi permette di verificare l'inserimento
    var errore = 0;

    // Recupero l'indirizzo email segnalato e l'azione dell'utente,
    // ovvero l'intenzione di iscriversi o di cancellarsi
    var email = new String(Request.Form("email"));
    var azione = new String(Request.Form("azione"));

    // Espressione regolare per un indirizzo email
    var Controlla = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;

    // Apro la connessione al database
    var Cn = new ActiveXObject("ADODB.Connection");
    var Sc = "driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("database.mdb");
    Cn.Open(Sc);

    // Verifico se l'indirizzo email è già presente
    var Ridondanza = Cn.Execute("SELECT * FROM utenti WHERE email LIKE '" + email + "'");

    // Caso in cui l'utente decide di registrarsi
    if (azione == "S") {
    // Imposto le condizioni per la verifica
    if (!Controlla.test(email)) {
    errore = 1;
    }
    if (!Ridondanza.EOF) {
    errore = 2;
    }

    // Organizzo l'output per i mesaggi di errore
    if (errore == 1) {
    Response.Write("Inserisci un indirizzo email corretto");
    Cn.Close();
    Response.End;
    }
    if (errore == 2) {
    Response.Write("Sei già iscritto alla Mailing list");
    Cn.Close();
    Response.End;
    }

    // Apro il recordset ed effettuo l'inserimento
    var Rs = new ActiveXObject("ADODB.Recordset");

    Rs.Open("utenti",Cn,3,3);
    Rs.AddNew();
    Rs("email") = email;
    Rs("IP_utente") = request.servervariables("REMOTE_ADDR")
    Rs("utente_attivo") = 1
    Rs.Update();
    Rs.Close();

    Response.Write("Iscrizione avvenuta con successo");
    }

    // Caso in cui l'utente già registrato decide di cancellarsi
    if (azione == "N") {
    // Imposto i casi di errore in fase di cancellazione
    if (Ridondanza.EOF) {
    errore = 3;
    }

    // Organizzo l'output per i mesaggi di errore
    if (errore == 3) {
    Response.Write("Indirizzo email inesistente: impossibile effettuare la cancellazione");
    Cn.Close();
    Response.End;
    }

    sql = "UPDATE utenti set utente_attivo = 0 WHERE email = ' " & cancellato & " ' "

    Response.Write("Cancellazione avvenuta con successo");
    }

    Cn.Close();
    %>


    Metto anche il link del file che ho scaricato
    ...l'uomo libero amerà sempre il mare...

  6. #6
    A un primo sguardo:

    - devi valorizzare la variabile "cancellato" inserendovi l'indirizzo email dell'utente che richiede la cancellazione

    - dovrai modificare il file che invia le mail facendo in modo che non le invii a tutti gli utenti inseriti nel database, ma solo a quelli con il campo utente_attivo valorizzato a true

    C'è ancora da lavorarci..................
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  7. #7
    ehm ehm è proprio che non lo so fare questo...
    e poi invece di avere la pagina dell'iscrizone e cancellazione in dreamweaver l'ho costruita in flah quindi non deve più rispondere ad un campo con sopra "cancellati" e "iscritivi" ma a due campi ben distinti uno per l'iscrizione e uno per la cancellazione...(lo so non ne so proprio niente di asp e poco di html)
    Grazie per l'aiuto che mi dai teorema!!
    ...l'uomo libero amerà sempre il mare...

  8. #8
    Per il primo punto, anzichè usare un'altra variabile, usa direttamente "email" che hai già valorizzato con

    var email = new String(Request.Form("email"));
    quindi la query diventerà
    sql = "UPDATE utenti set utente_attivo = 0 WHERE email = ' " + email + " ' "
    Ma la query non basta, bisogna eseguirla........sostutuisci la stessa con
    codice:
    Cn.execute("UPDATE utenti set utente_attivo = 0 WHERE email = ' " + email + " ' ");
    e, siccome non avevo visto che lavori in JScript e non in VBScript, c'è un'altro errore di sintassi da correggere: manca il punto e virgola alla fine delle istruzioni aggiunte nell'inserimento utente.

    Per il resto ho capito poco: comunque esisterà una pagina che invia la newsletter a tutti gli indirizzi presenti nel database: è su quella che devi lavorare, per inviare le mail solo agli utenti con il campo utente_attivo impostato a true anzichè a tutti.

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  9. #9
    Quindi se non sbaglio diventa così:

    <%@LANGUAGE = JScript%>
    <%
    /*
    Autore: Luca Ruggiero - http://www.lukeonweb.net
    Fonte: freeAsp.it - http://freeasp.html.it
    */

    // Istanzio una variabile che mi permette di verificare l'inserimento
    var errore = 0;

    // Recupero l'indirizzo email segnalato e l'azione dell'utente,
    // ovvero l'intenzione di iscriversi o di cancellarsi
    var email = new String(Request.Form("email"));
    var azione = new String(Request.Form("azione"));

    // Espressione regolare per un indirizzo email
    var Controlla = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;

    // Apro la connessione al database
    var Cn = new ActiveXObject("ADODB.Connection");
    var Sc = "driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("database.mdb");
    Cn.Open(Sc);

    // Verifico se l'indirizzo email è già presente
    var Ridondanza = Cn.Execute("SELECT * FROM utenti WHERE email LIKE '" + email + "'");

    // Caso in cui l'utente decide di registrarsi
    if (azione == "S") {
    // Imposto le condizioni per la verifica
    if (!Controlla.test(email)) {
    errore = 1;
    }
    if (!Ridondanza.EOF) {
    errore = 2;
    }

    // Organizzo l'output per i mesaggi di errore
    if (errore == 1) {
    Response.Write("Inserisci un indirizzo email corretto");
    Cn.Close();
    Response.End;
    }
    if (errore == 2) {
    Response.Write("Sei già iscritto alla Mailing list");
    Cn.Close();
    Response.End;
    }

    // Apro il recordset ed effettuo l'inserimento
    var Rs = new ActiveXObject("ADODB.Recordset");

    Rs.Open("utenti",Cn,3,3);
    Rs.AddNew();
    Rs("email") = email;
    Rs("IP_utente") = request.servervariables("REMOTE_ADDR");
    Rs("utente_attivo") = 1;
    Rs.Update();
    Rs.Close();

    Response.Write("Iscrizione avvenuta con successo");
    }

    // Caso in cui l'utente già registrato decide di cancellarsi
    if (azione == "N") {
    // Imposto i casi di errore in fase di cancellazione
    if (Ridondanza.EOF) {
    errore = 3;
    }

    // Organizzo l'output per i mesaggi di errore
    if (errore == 3) {
    Response.Write("Indirizzo email inesistente: impossibile effettuare la cancellazione");
    Cn.Close();
    Response.End;
    }

    Cn.execute("UPDATE utenti set utente_attivo = 0 WHERE email = ' " + email + " ' ");

    Response.Write("Cancellazione avvenuta con successo");
    }

    Cn.Close();
    %>



    ma io mi chiedo una cosa...così facendo adesso mi aggiunge anche l'ip utente a fianco della sua mail nel mio db?
    e poi un'altra cosa...quindi in flash il campo per l'iscrizione ora lo chiamo S e quello per la cancellazione N Giusto?
    ...l'uomo libero amerà sempre il mare...

  10. #10
    Con le cognizioni in mio possesso sono in grado di rispondere solo al primo quesito: sì, dovrebbe, in un campo apposito che abbiamo chiamato IP_utente.

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

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.