Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. tavrotto
    3. Post
    T

    tavrotto

    @tavrotto

    • Profilo
    • Chi segue 0
    • Da chi è seguito 0
    • Discussioni 2
    • Post 8
    • Migliore 0
    • Gruppi 0
    Iscrizione Ultimo Accesso
    0
    Reputazione
    8
    Post
    0
    Visite al profilo
    0
    Da chi è seguito
    0
    Chi segue
    User Newbie

    Post creati da tavrotto

    • RE: Invio e-mail tramite Swift e Internal Server Error

      OK, PROVO A POSTARE IL CODICE
      Chiedo umilmente scusa a tutti per lo spaghetti code qui sotto...
      Purtroppo la mancanza di tempo, le continue modifiche e test e la compressione del tutto per raggrupparlo in un unico file da incollare qui sul forum, hanno contribuito a peggiorare notevolmente lo script... grazie

      <?php
      require 'testa.php';

      ##########################################

      /* 
      *   Classe che prende indirizzi e-mail da un database MySQL, 
      *   li suddivide in blocchi (20 di default) e invia una e-mail personalizzata 
      *   ad ognuno di questi destinatari. 
      */
      
      $met = '900'; 
      $fdd = '20'; 
      $anteprima = stripslashes($_POST['anteprima_seria']); 
      

      // includo le librerie necessarie alla connnessione al database
      require_once "lib/Swift.php";
      require_once "lib/Swift/Connection/SMTP.php";
      include "mdb-database/config.inc.php";

      $swift =& new Swift(new Swift_Connection_SMTP("smtp.aruba.it", 25)); 
      

      // estendo il max_execution_time a TOT minuti per ogni invio in blocco
      ini_set('max_execution_time', $met);
      ini_set('display_errors', 'Off');

      // id newsletter
      $id_nl = htmlspecialchars($_POST['id']);

      // OGGETTO DELLA NEWSLETTER                 
      
          $path = 'h t t p : / / w w w . m i o s i t o . i t /'; 
      
      // TESTO DELLA NEWSLETTER 
          $testo = ''; 
          $testo .= '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv=Content-Type content="text/html; charset=UTF-8" /><title>Newsletter</title>'; 
          $testo .= '<META http-equiv="Content-Type" content="text/html; charset=UTF-8">'; 
          $testo .= '<link rel="stylesheet" type="text/css" href="'.$path.'style.css" />'; 
          $testo .= '</head><body>'; 
              // CONTENT 
          $testo .= $_POST['anteprima_seria']; 
          $testo .= '</body></html>'; 
      
      // IMPOSTO LA NEWSLETTER COME "INVIATA" 
          $sql_nl_inviata = 'UPDATE archivio SET inviata="1", data_invio="'.date("Y-m-d").'" WHERE id="'.$id_nl.'"'; 
          @mysql_query($sql_nl_inviata, $conn); 
      
      // PREPARO ED ESEGUO L'INVIO 
      
      // calcolo il numero di blocchi da considerare 
          $sql_count_indirizzi = 'SELECT COUNT(*) FROM newsletter'; 
          $res_count = mysql_query($sql_count_indirizzi, $conn) 
                                  or die(mysql_error()); 
      
      // controllo se il numero di indirizzi è maggiore del numero di 
      // indirizzi per blocco 
      
          $numero_iscritti_tmp = mysql_fetch_row($res_count); 
          $numero_iscritti = $numero_iscritti_tmp[0]; 
      
          if($numero_iscritti>$fdd){ 
              // divido il numero di iscritti totali per il numero di blocchi desiderato 
              $n_blocchi = ($numero_iscritti/$fdd); 
      
              // arrotondo il risultato ad un intero 
              if(is_float($n_blocchi)) 
                  $n_blocchi = (int)$n_blocchi+1; 
              else 
                  $n_blocchi = (int)$n_blocchi; 
          } 
          else 
              $n_blocchi = 1; 
      
          // per ogni blocco effettuo una query chiedendo un preciso range 
          // di indirizzi 
          for($i = 0; $i < $n_blocchi; $i++){ 
      
              // controllo se il blocco è il primo (parte da 0) o uno dei 
              // successivi 
              if(($i+1) <= $n_blocchi){ 
                  // selezioni il range di record da mostrare 
                  $da = ($fdd * $i); 
           
                  $limit = ' LIMIT '.$da.', '.$fdd; 
              } 
              else 
                  $limit = ' LIMIT 0, '.$fdd; 
      
              // eseguo la query che restituisce il blocco di indirizzi interessato 
                  $sql_blocco_indirizzi = 'SELECT email FROM newsletter '.$limit; 
                  $res_blocco = mysql_query($sql_blocco_indirizzi, $conn) 
                                          or die(header('Location: '.$_SERVER['PHP_SELF'])); 
      
                  $numero = mysql_num_rows($res_blocco); 
      
                  while($numero>0){ 
      
                      echo '<span style="display: none"> </span>'; 
                      --$numero; 
      
                      $val = mysql_fetch_row($res_blocco); 
                      $message =& new Swift_Message($_POST['oggetto'], $testo, "text/html"); 
                      if (!($swift->send($message, trim($val[0]), "[email protected]"))){ 
                          echo "Si è verificato un errore durante l'invio dell'indirizzo ".$val[0]; 
                          exit(); 
                      } 
                      else 
                          echo $val[0].' fatto!<br />'; 
                  } 
          } 
      
      //$swift->disconnect(); 
      //header('Location: esito.php?confirm=newsletter'); 
      

      ##########################################

      ob_end_clean(); 
      ob_flush(); 
      flush(); 
      
      echo '<meta http-equiv="refresh" content="0;URL=esito.php?confirm=newsletter">'; 
      
      echo '<div>'; 
      
      echo '<table class="list" style="font-size: small">'; 
          echo '<tr><td colspan="2">'; 
              echo '<div class="conferma" style="font-size: small" id="esito">L\'invio è stato effettuato con successo!</div>'; 
              echo '<br />'; 
              $op= 'gestisci_email.php'; 
          echo '<div>'; 
          echo '<a href="'.$op.'">&laquo; TORNA ALLA LISTA DELLE E-MAIL</a>'; 
          echo '</div>'; 
      echo '</td></tr>'; 
      echo '</table>'; 
      echo '</div>'; 
      
      // includo la coda 
      require 'coda.php'; 
      

      ?>

      postato in Coding
      T
      tavrotto
    • RE: Invio e-mail tramite Swift e Internal Server Error

      Ok, penso che stavolta siamo proprio vicini alla soluzione!! 😉
      Ho provato semplicemente a stampare, ad ogni ciclio un qualsiasi output (nel mio caso uno spazio vuoto) e l'errore non c'è più..

      Usando semplicemente le due funzioni consigliate sembra quasi non le esegua ma, stampando un qualsiasi output a schermo non restituisce più l'errore (ma limita la mia possibilità di redirect...)

      A questo punto mi chiedo... cosa può essere?
      Grazie mille!! 🙂

      postato in Coding
      T
      tavrotto
    • RE: Invio e-mail tramite Swift e Internal Server Error

      Bhè, per ora ho bloccato il redirect alla pagina esito.php ( usavo header('Location: esito.php'); )
      Ora devo scappare ma appena posso provo a seguire il tuo consiglio di stampare a monitor una riga ogni 10-100 email, dallo stesso script che le invia, liberando progressivamente il buffer con le due istruzioni indicate.

      Grazie

      postato in Coding
      T
      tavrotto
    • RE: Invio e-mail tramite Swift e Internal Server Error

      Ancora non riesco a risolvere l'errore...
      Ho provato a confrontare i phpinfo del locale e del server ma non mi è sembrato ci fossero variabili troppo diverse o così influenti da bloccare tutto...

      Ho aggiunto, nel ciclo0 che invia le e-mail, le chiamate a funzione per ob_flush(); e flush(); ma il server mi restituisce il solito errore:


      Internal Server Error

      The server encountered an internal error or misconfiguration and was unable to complete your request.
      Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.
      More information about this error may be available in the server error log.


      Sto veramente cedendo... sono distrutto 😞

      Dove sto sbagliando?

      Grazie

      postato in Coding
      T
      tavrotto
    • RE: Invio e-mail tramite Swift e Internal Server Error

      Ciao ceccus,
      il safe_mode è impostato ad Off sia nel Local sia nel Master..
      Il max_execution_time è di default 120 per Local e Master.
      Ho provato allora ad aggiungere ini_set('max_execution_time', '900'); prima della chiamata a phpinfo(); e il Local mi viene impostato correttamente a 900... quindi teoricamente dovrebbe funzionare...

      La cosa più fastidiosa è che l'invio funziona correttamente ma al termine di tutto mi restituisce un errore :gtsad: ouch!
      Grazie

      postato in Coding
      T
      tavrotto
    • Invio e-mail tramite Swift e Internal Server Error

      Risolto un problema ne nasce subito un altro...

      L'ambito è sempre una newsletter (come nel mio post precedente).
      Devo inivare una stessa e-mail a più di 2000 indirizzi.

      Premetto: ho già preimpostato la variabile max_execution_time a 900.

      Inizialmente ho scelto di usare la classe di PHPMailer ricevendo però alcuni errori (che non dipendono dalla comodissima classe).

      Ho provato allora ad utilizzare Swift, classe con lo stesso scopo.

      Il server su cui testo l'invio è un server aruba con SMTP: smtp.aruba.it con hosting Linux.

      Testando l'inoltro per 2000 indirizzi funziona tutto (l'inoltro e la corretta ricezione di tutti e 2000 gli indirizzi) ma ad un certo punto la pagina web, anzichè reindirizzarmi su esito.php, mi scrive chiaramente


      Internal Server Error

      The server encountered an internal error or misconfiguration and was unable to complete your request.

      Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

      More information about this error may be available in the server error log.


      PS: i log del server non funzionano :S

      postato in Coding
      T
      tavrotto
    • RE: PHP: Problema legatura caratteri (per es fi)

      Chiedo scusa se rispondo solamente ora a distanza di tempo dal consiglio.

      Infatti, sono riuscito a risolvere finalmente il problema!

      La soluzione è quella consigliata da Thedarkita cioè l'utilizzo della funzione htmlentities.

      Prima di memorizzare sul database i dati inviati tramite il POST della form ho eseguito semplicemente

      $testo = htmlentities($testo);

      Per l'anteprima del testo sul sito e per l'invio vero e proprio ho semplicemente riconvertito il tutto usando

      $testo = html_entity_decode($testo);

      e sembra funzionare proprio come volevo!! 😄

      Grazie per l'auito,
      spero questo post possa, prima o poi, tornare utile a chi, come me, si è imbattuto nelle legature dei caratteri.

      Grazie

      postato in Coding
      T
      tavrotto
    • PHP: Problema legatura caratteri (per es fi)

      Ho un semplice modulo creato in PHP per l'inserimento di testo (utilizzo tiny mce come editor).
      Mi è capitato di copiare del testo da Word ed incollarlo nella textarea e qui ho riscontrato il problema:
      Word fa uso di caratteri di legatura cioè interpreta alcuni caratteri come uno unico.

      Un esempio sono le due lettere " fi " che vengono viste come un'unica lettera del tipo
      h t t p :// it.wikipedia.org/wiki/Legatura_(tipografia)

      Ho provato anche a copiare il testo da Word, incollarlo su notepad e reincollarlo poi sull'editor sperando che il blocco note ripulisse un po' la porcheria, ma niente.. anche lui mantiene la legatura.

      Una volta inviato il modulo per salvare poi il testo su db MySQL, il carattere di legatura viene tradotto in punto interrogativo con conseguenze non piacevoli..

      Ho cercato su internet ma non ho trovato info su come risolvere questo mio problema...

      Riporto di seguito i dati di codifica di MySQL:

      mysql Ver 14.12 Distrib 5.0.22, for redhat-linux-gnu (i686) using readline 5.0

      SSL: Not in use

      Server version: 5.0.22

      Connection: Localhost via UNIX socket

      Server characterset: latin1

      Db characterset: latin1

      Client characterset: latin1

      Conn. characterset: latin1

      UNIX socket: /var/lib/mysql/mysql.sock


      Intanto ringrazio anticipatamente

      postato in Coding
      T
      tavrotto