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

    Copiare una foto da una dir a un'altra [2]

    Avevo aperto un post simile ma mi ero spiegato male e ormai non lo legge più nessuno.

    Provo a spiegare meglio quello che devo fare...

    Lo scopo è quello di archiviare le newsletter che invio traminte un programmino fatto da me.

    Io ho il progr. con pannello di controllo per gestire l'invio di NL su ww.sito_uno.it e gestisco tutto da qui (invio, utenti, scelta template, etc..).
    Le NL che invio sono comunicazioni che la nostra azienda fa ai propri clienti e ad altri indirizzi che si registrano.
    Le NL conterranno sempre delle foto, in quanto, oltre a quelle presenti o meno nel messaggio da fornire, ci sarà sicuramente il logo aziendale e qualche sfondo.
    Tali foto, per motivi vari, le devo tenere su un altro dominio: ww.sito_mia_azienda.com.

    Vorrei...
    Su ww.sito_uno.it, dopo aver cliccato l'invio, voglio creare nella dir "/archivio" una sottodir col nome dell'email inviata (o la data o l'oggetto... è lo stesso)
    es: /2009-09-17/oggetto_email/
    dentro questa dir ci dovrà finire:
    - un file "index.html" col codice adeguato
    - uno o più file (immagini, jpg, png... è lo stesso)

    In questo modo, richiamato l'indirizzo
    ww.sito_uno.it/archivio/2009-09-17/oggetto_email
    vedo l'email completa e INDIPENDENTE dal sito aziendale (ww.sito_mia_azienda.com)

    Spero di essermi spiegato un po' meglio...
    Qualche aiuto?
    Fantasupermegafavolipermeramagicultra irresistibili
    4 10 30 100 1001 personaggi insuperabili fantaincredibili ultraimpossibili iperterribili irresistibili!!!

    "... a quell'età ... bastava un dito per fare la pace ..."
    fotine

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    mmh... prima di addentrarsi in soluzioni con codici devo puntualizzare una cosa... in generale si tratterebbe di un problema abbastanza difficile, perchè devi analizzare l'intero HTML spedito alla ricerca di file esterni, scaricarli (se possibile) e salvarli in locale... in pratica per il tuo caso dovresti magari indicare quali file "esterni" andrebbero salvati in sito_uno, si tratta solo di immagini inserite in tag IMG? provengono sempre da sito_mia_azienda? questi file "esterni" sono sempre gli stessi? la NL usa un css (penso di sì) e in quale sito sta?

    Bisogna capire quali sono i file "esterni": se si tratta "solo" di alcune immagini si può fare qualcosa "in fretta"... ma non è così banale perchè bisogna cambiare tutti i riferimenti nell'HTML.

    Prova a rispondere ai punti di sopra se riesci...

  3. #3
    Originariamente inviato da eiyen
    si tratta solo di immagini inserite in tag IMG?
    Sono SOLO immagini (jpg e/o png).
    Uso solo tag <img> in quanto per le NL non mi fido dei background.


    Originariamente inviato da eiyen
    provengono sempre da sito_mia_azienda?
    Si


    Originariamente inviato da eiyen
    questi file "esterni" sono sempre gli stessi?
    No.
    Il logo aziendale, mi ero sbagliato, sta nel sito_uno insieme alla gestione dell NL. Ne ho alcuni tipi. In pratica ogni template sta dentro un dir (il cui nome è un numero) con questi file:
    - anteprima.png (l'anteprima di quel template)
    - logo.png
    - footer.png (questo a seconda del template può non esserci perchè non lo uso)
    - anteprima.html (tutto il codice del template... con riferimenti tipo "Gentile " che poi il php elabora e scrive ogni singola Email col valore preso dal Db sputando un "Gentile Mario Rossi")


    Originariamente inviato da eiyen
    la NL usa un css (penso di sì) e in quale sito sta?
    Usa un css, ma è scritto nello stesso html della NL. Le uniche cose "fuori" sono le img.
    Fantasupermegafavolipermeramagicultra irresistibili
    4 10 30 100 1001 personaggi insuperabili fantaincredibili ultraimpossibili iperterribili irresistibili!!!

    "... a quell'età ... bastava un dito per fare la pace ..."
    fotine

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    posso scriverti qualcosa, ma ho poco tempo... vediamo...

    supponiamo che $html_nl contenga il codice HTML della NL di nome $name_nl che viene spedito per mail... potresti fare (si potrebbero usare più praticamente le espressioni regolari, ma per accelerare si può in questo caso anche farne a meno):

    Codice PHP:
    $html_nl = ..........;
    $name_nl 'esempio.html';

    // DATI PRINCIPALI:
    $prefisso 'http://www.sito_mia_azienda.xxx/yyy'// prefisso immagini esterne
    $localfold 'externalimages/'// cartella locale da utilizzare

    // ELABORAZIONE HTML:
    $extfiles = array(); // elenco file esterni (immagini);
    $p1 0;
    while (
    $p1=strpos($html_nl$prefisso$p1)) {
      
    $p2 strpos($html_nl'"'$p1);
      
    $ref substr($html_nl$p1$p2-$p1);
      
    $extfiles[] = $ref;
      
    $p1 $p2;
    };
    $html_nl str_replace($prefisso$localfold$html_nl); // modifica i riferimenti

    // IMPORTAZIONE DATI:
    $extfiles array_unique($extfiles);
    foreach (
    $extfiles as $extfile) {
      
    $img file_get_contents($extfile); // importa l'immagine esterna
      
    file_put_contents($localfold.basename($extfile), $img); // la salva localmente
    };

    // SALVATAGGIO NL:
    file_put_contents($name_nl$html_nl); 

    ...funziona, l'ho provato... tieni conto che fa delle assunzioni (p.es. la cartella di destinazione "externalimages/" deve già esistere, le immagini non sono in sottocartelle... etc....

  5. #5
    Originariamente inviato da eiyen
    ...funziona, l'ho provato... tieni conto che fa delle assunzioni (p.es. la cartella di destinazione "externalimages/" deve già esistere, le immagini non sono in sottocartelle... etc....
    Mi restituisce questo:
    codice:
    Fatal error: Call to undefined function: file_put_contents() in /usr/home/sito_uno/test/index.php on line 52
    Dove alla linea 52 c'è:
    Codice PHP:
    foreach ($extfiles as $extfile) {
      
    $img file_get_contents($extfile); // importa l'immagine esterna
    >>>> file_put_contents($localfold.basename($extfile), $img); // la salva localmente
    }; 
    Questi ">>>> " li ho messi io qui per indicare la linea 52...
    Fantasupermegafavolipermeramagicultra irresistibili
    4 10 30 100 1001 personaggi insuperabili fantaincredibili ultraimpossibili iperterribili irresistibili!!!

    "... a quell'età ... bastava un dito per fare la pace ..."
    fotine

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    ...probabilmente stai usando una versione del PHP precedente la r.5... sarebbe meglio aggiornarla! Comunque puoi risolvere inserendo il seguente codice (preso dal sito ufficiale) all'inizio dello script:

    Codice PHP:
    if (!function_exists('file_put_contents')) {
        function 
    file_put_contents($filename$data) {
            
    $f = @fopen($filename'w');
            if (!
    $f) {
                return 
    false;
            } else {
                
    $bytes fwrite($f$data);
                
    fclose($f);
                return 
    $bytes;
            }
        }

    che implementa la funzione nel caso non esista

  7. #7
    Originariamente inviato da eiyen
    ...probabilmente stai usando una versione del PHP precedente la r.5... sarebbe meglio aggiornarla!
    Grandeeee!! Era proprio quello..
    Infatti uso php 4.3.x

    (sono prossimo a cambiare completamente server, sono troppe le cose che "non uso" per colpa della vecchia versione)
    Fantasupermegafavolipermeramagicultra irresistibili
    4 10 30 100 1001 personaggi insuperabili fantaincredibili ultraimpossibili iperterribili irresistibili!!!

    "... a quell'età ... bastava un dito per fare la pace ..."
    fotine

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Bene!

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.