Back to top

Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - chico_

Pagine: [1]
1
Risolto.
l'errore stava nel fatto che (pensando di semplificare) avevo lasciato la generazione dell'immagine barcode con <img src...>.
Questo comportava, lavorando in HTML, che il codice di generazione immagine veniva eseguito DOPO il codice PHP, quindi l'immagine veniva generata dopo l'invio della mail (correggimi se sbaglio.....).


Ho quindi modificato il codice dello script richiamando barcode.php come funzione e adesso le mail arrivano con il barcode correttamente incorporato , evitando l'uso del wget.


Ti ringrazio per la pazienza e per i consigli, decisamente risolutivi.


Ciao


Chico_


2
Questa è la sequenza di operazioni (uso chronoforms v4):
1) Registrazione utente tramite l'action "Joomla Users Registration". In caso di successo procedo con:

2) Creazione del barcode. Ho modificato il file barcode.php in questo modo (posto solo la parte incriminata)

Codice: [Seleziona]

        //OutputImage ($im, $format, $quality);  <-- codice originale dello script
        imagepng( $im, $nomefile); /* <-- modifica inserita per salvare il file anziché generarne l'output a video
       
}




//-----------------------------------------------------------------------------
// Output an image to the browser
//-----------------------------------------------------------------------------
function OutputImage ($im, $format, $quality)
{
       
        switch ($format)
        {
                case "JPEG":
                        ImageJPEG ($im, "", $quality);
                        break;
                case "PNG":
                        ImagePNG ($im);
                        break;
                case "GIF":
                        ImageGIF ($im);
                        break;
        }
}
Visto che dovevo solo verificarne il funzionamento, inizialmente l'ho lasciato com'era senza richiamarlo come funzione, dato che comunque l'immagine la creava. Il barcode è legato all'ID utente appena registrato che recupero con
Codice: [Seleziona]
<?php $userid $form->data['_PLUGINS_']['joomla_registration']['id']; ?>2) Memorizzazione dei dati supplementari dell'utente inseriti nel form in una tabella creata ad hoc
3) Email all'amministratore con i dati dell'utente appena registrato


4) Invio dell'email all'utente contenente i dati di registrazione, il link per l'attivazione e il barcode incorporato nella mail
questo è il codice per l'invio della mail (in questa prima fase è strutturato solo per l'invio del barcode):
Codice: [Seleziona]
<?php
$userid 
$form->data['_PLUGINS_']['joomla_registration']['id'];
$nome $form->data['name'];
$mail $form->data['email'];
$numbcode=str_pad($userid,6,'0',STR_PAD_LEFT);




$mailer JFactory::getMailer();
$config JFactory::getConfig();
$sender = array( 
    
$config->get'config.mailfrom' ),
    
$config->get'config.fromname' ) );
 
$mailer->setSender($sender);
$user JFactory::getUser();
$recipient $mail;
$mailer->addRecipient($recipient);
$body   '<h2>Our mail</h2>'
    
'<div>-'.$numbcode.'- Test message'
    
'<img src="cid:logo_id" alt="logo"/><>';
$mailer->isHTML(true);
$mailer->Encoding 'base64';
$mailer->setBody($body);
// Optionally add embedded image
$bcode="moduli/ZZSXXXXXX.PNG";
$bcode=str_replace("XXXXXX",$numbcode,$bcode);
$mailer->AddEmbeddedImage($bcode'logo_id'$bcode'base64''image/png' );
// Optional file attached
/*$allegato="moduli/".$form->data['cf_pdf_file'];
$mailer->addAttachment($allegato);*/
$send $mailer->Send();
if ( 
$send !== true ) {
    echo 
'Error sending email: ' $send->__toString();
} else {
    echo 
'Mail sent';
}


?>





5) Output del messaggio di ringraziamento


Spero sia chiaro...


Grazie


Chico

3
Ciao.
Alla fine ho trovato il metodo:
invece di generarla con html:



Codice: [Seleziona]
<?php $datobc="ZZK123456";?>

<img src="<?php echo JURI::base();?>moduli/barcode.php?barcode=<?php echo $datobc?>&width=320&height=80&format=png&nomefile=<?php echo $datobc?>" />


l'ho creata usando wget:


Codice: [Seleziona]

<?php
$datobc
="ZZK123456";
$address='"'.JURI::base().'/moduli/barcode.php?barcode='.$datobc.'&width=320&height=80&nomefile='.$datobc.'"';
system('wget -O/dev/null '.$address );
?>


in entrambi i casi l'immagine viene generata, ma solo se creata con il secondo metodo viene allegata all'email..


Chico_

4
Sono ancora io...
sono riuscito a creare un immagine barcode (in png), vedasi il mio post "Inviare mail con barcode come immagine incorporata" da inviare ad un utente incorporandola nella mail anziche' gestendola come immagine remota.
Adesso pero' mi trovo con un altro problema:
se cerco di inviare via mail l'immagine appena creata, al destinatario arriva la mail senza l'immagine. Inizialmente pensavo fosse un errore sintattico, ma poi mi sono reso conto che mandando una mail con un immagine creata precedentemente la mail arrivava con l'immagine correttamente aggiunta.
In pratica, è come se l'immagine venisse creata dopo l'invio della mail (ma il codice di creazione è precedente a quello dell'invio mail) o come se ci tenesse troppo tempo a crearsi , e nel frattempo l'email partisse e non trovandola ancora sul server non la incorporasse. Ma quest'ultima ipotesi non mi convince (l'immagine pesa 338 bytes).


Dove sbaglio?


Grazie


Chico_


p.s.:mi viene il dubbio che sia più una questione concettuale che relativa a Joomla, in tal caso mi scuso in anticipo per l'OT  :-[

5
Mi sa che è meglio che per oggi stacchi... :-[
hai ragione, nulla di più univoco dell'ID user che va nel barcode ......
E adesso che me lo fai notare, avevo il codice sotto gli occhi in barcode.php:
l'istruzione:
Codice: [Seleziona]
OutputImage ($im, $format, $quality);andava a richiamare questa routine:

Codice: [Seleziona]

function OutputImage ($im, $format, $quality)
{
       
        switch ($format)
        {
                case "JPEG":
                        ImageJPEG ($im, "", $quality);
                        break;
                case "PNG":
                        ImagePNG ($im);
                        break;
                case "GIF":
                        ImageGIF ($im);
                        break;
        }
}


Che , guarda caso, usa proprio imagepng... l'avevo sotto gli occhi, corpo di mille capodogli.....


Avvisatemi quando aggiungete l'emoticon "pirla" che me ne aggiungo un paio in questo thread. :)


Grazie ancora e buona serata


Chico_

6

Non avevo mai effettuato un operazione di questo tipo, ma googlando ho trovato l'istruzione imagepng che ho usato semplicemente in questo modo:
Codice: [Seleziona]
imagepng( $im, "c2p.png" );inserendola all'interno di barcode.php, sostituendola alla routine di output a video (ovviamente dovro' smanettarci ancora per passare un parametro univoco per il nome del file onde evitare duplicati).


Funziona (grazie !!).


Secondo te l'uso di questa istruzione è un approccio corretto al problema?


Ciao


Chico_




7
Buongiorno.
Usando chronoforms sono riuscito a inviare via mail un barcode. Il problema è che avrei bisogno che il barcode sia incorporato nella mail, non visto come contenuto remoto.
Con il codice di docs.joomla.org (http://docs.joomla.org/Sending_email_from_extensions) ho fatto una prova con un immagine normale e la mail arriva correttamente con l'immagine incorporata:
Codice: [Seleziona]
<?php
$mailer 
JFactory::getMailer();
$config JFactory::getConfig();
$sender = array( 
    
$config->get'config.mailfrom' ),
    
$config->get'config.fromname' ) );
 
$mailer->setSender($sender);
$user JFactory::getUser();
$recipient $user->email;
$recipient="develop@chicosoft.it"
$mailer->addRecipient($recipient);
$body   '<h2>Our mail</h2>'
    
'<div>Messaggio con immagine incorporata'
    
'<img src="cid:logo_id" alt="logo"/><>';
$mailer->isHTML(true);
$mailer->Encoding 'base64';
$mailer->setBody($body);
// Optionally add embedded image
$bcode="images/clash.jpg";
$mailer->AddEmbeddedImage$bcode'logo_id'$bcode'base64''image/jpeg' );
$send $mailer->Send();
if ( 
$send !== true ) {
    echo 
'Error sending email: ' $send->__toString();
} else {
    echo 
'Mail sent';
}


?>





Quindi pensavo (ingenuo....) che modificando il contenuto della variabile $bcode e inserendo il codice per generare il barcode il tutto funzionasse. Invece no.
Questa è la variabile modificata :
Codice: [Seleziona]
$bcode="moduli/barcode.php?barcode=ZZS005614&width=320&height=80"
La mail arriva senza l'immagine inserita (ho provato anche con il percorso assoluto ma senza successo).
Se inserisco il percorso assoluto nel browser mi appare a video il barcode, quindi è solo un problema di trasmissione embedded.


Qualcuno ha qualche idea?


Grazie


Chico_

8
Sviluppo / Aggiornare i campi di un form dopo un submit
« il: 25 Ago 2014, 16:46:17 »

Grazie mille delle indicazioni, Marco.
Ho aggiustato il codice come da indicazioni, funziona perfettamente (non che ne dubitassi.... ;) )
Nel caso possa servire a qualcuno posto il codice modificato :
Codice: [Seleziona]
<?php
// No direct access
defined'_JEXEC' ) or die( 'Restricted access' );


// START recupero dati
$jInput JFactory::getApplication()->input;
$values $jInput->get('values'0'INT');
// END recupero dati


if ($values!=""){
//START Eventuale eliminazione record ********************
$db JFactory::getDbo(); 
$query $db->getQuery(true); 
$query->delete($db->quoteName('#__test')) 
->
where(array($db->quoteName('id') . '='.$values)); 
$db->setQuery($query); 
$result $db->execute(); 
} else {
//
}
//END Eventuale eliminazione record ********************
?>



<!-- START costruzione form ************************************ -->
<form name="names" id="names" action="<?php echo JURI::current(); ?>" method="post" >
<?php
//START Carico dati ********************************************
$db =& JFactory::getDBO();
$query "SELECT id FROM `#__test` order by id";
$db->setQuery($query);
$nomes $db->loadColumn();
echo
'<div style="width:230px;float:left;">Selezionare item da eliminare<>';
echo 
'<select name="values">';
foreach(
$nomes as $value){
echo 
'<option value="'.$value.'">'.$value.'</option>'."\n";
}
echo 
'</select>[br /]';
//END Carico dati ********************************************
?>

<p><input id="submit" name="submit" type="submit" value="Submit " /></p>
</form>
<!-- END costruzione form ************************************ -->


Grazie ancora


Chico_

9
Sviluppo / Re:Aggiornare i campi di un form dopo un submit
« il: 25 Ago 2014, 14:21:11 »
Grazie mille.
In merito alla tua giusta osservazione in merito alla sicurezza dell $_POST, a tuo avviso è corretto sostituire il codice  con cui passo i dati con:
Codice: [Seleziona]
$values =JRequest::getInt('values');


?


Chico

10
Buongiorno.
Ho il seguente problema:
ho creato una pagina in cui l'amministratore puo' selezionare un record da una tabella del database (tramite combobox) per poi eliminarlo alla pressione di un tasto "submit". Il record viene correttamente eliminato dal database, ma il record eliminato rimane comunque nella combobox a meno che non si faccia il refresh della pagina.
Ecco il codice che ho usato:
Codice: [Seleziona]
<?php


// No direct access
defined'_JEXEC' ) or die( 'Restricted access' );


//recupero dati
$values $_POST['values'];
//--costruisco il form ***********
?>

<form name="names" id="names" action="<?php echo JURI::current(); ?>" method="post" >
<?php
//START Carico dati ********************************************
$db =& JFactory::getDBO();
$query "SELECT id FROM `#__test` order by id";
$db->setQuery($query);
$nomes $db->loadColumn();


echo
'<div style="width:230px;float:left;">Selezionare item da eliminare<>';
echo 
'<select name="values">';
foreach(
$nomes as $value){
echo 
'<option value="'.$value.'">'.$value.'</option>'."\n";
}
echo 
'</select>[br /]';
//END Carico dati ********************************************
?>

<p><input id="submit" name="submit" type="submit" value="Submit " /></p>
</form>
<?php
if ($values!=""){
//START Elimina record ********************
$db JFactory::getDbo(); 
 
$query $db->getQuery(true); 
 
$query->delete($db->quoteName('#__test')) 
       ->
where(array($db->quoteName('id') . '='.$values)); 
 
$db->setQuery($query); 
 
$result $db->execute(); 
} else {
//
}
//END Elimina record ********************
?>




Ho provato anche a togliere l'action dal form, ma il problema rimane.


(PHP 5.5.11, Joomla 3.3.3, il codice è inserito in un articolo con il plugin  Sourcerer)


Qualche idea?


Grazie


Chico_

11
Joomla! 1.6/1.7/2.5 / Joomla 1.7 - Voce menu predefinita
« il: 08 Apr 2012, 18:34:51 »
Buongiorno a tutti.
In una pagina di un sito creato con la versione 1.7, ho inserito una pagina "Prodotti" con un menu personalizzato.
Ipotizziamo che sia composto da tre voci:
Prodotto 1 (articolo : Item1)
Prodotto 2 (articolo : Item2) 
Prodotto 3 (articolo : Item3)
La pagina "Prodotti" è accessibile da un Top Menu.


All'apertura del sito mi trovo nell'Home Page, e nel Top Menu mi trovo con le voci "Home", "Azienda", "Prodotti", ecc.
Il link di "Prodotti" è il primo articolo della lista ("Item1) .


Il problema è il seguente : impostare la prima voce di menu come selezionata (attribuirgli insomma le classi current e active) all'apertura della pagina "Prodotti", in modo che la prima voce di menu sia evidenziata.

(Non ho ancora la possibilità di inserire un link al sito in quanto al momento ci sto lavorando solo off-line).

Spero di essere stato chiaro.


Grazie per l'attenzione (...e buona Pasqua)


Chico_

Pagine: [1]


Web Design Bolzano Kreatif