Back to top

Autore Topic: [RISOLTO] Form per generare un QR Code  (Letto 26537 volte)

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #20 il: 11 Lug 2011, 19:27:51 »
Sembra tutto OK, ignoro però il significato di lenny9.

La riga 2 del codice è una semplice dichiarazione della classe

Codice: [Seleziona]
class QRCode {

che viene letta normalmente in altri siti ed è una classe PHP di pubblico dominio sul web.

Puoi attaccare ad un post il codice inserito per un ulteriore controllo.

PS. Controlla che quel modulo che stavi usando non sia attivo da qualche parte. Può darsi che usi la stessa classe e quindi trovandola già dichiarata da l'errore.

in questo caso puoi cambiare anche il nome alla classe ed all'istanza successiva.

Così per esempio

Codice: [Seleziona]
class QRCodes {
....
....
$qrcode = new QRCodes();
« Ultima modifica: 11 Lug 2011, 19:44:39 da vales »
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline olegmartiz

  • Nuovo arrivato
  • *
  • Post: 1
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #21 il: 12 Lug 2011, 10:40:54 »
Stesso problema risolto con...

if(class_exists('QRCode') != true)
{
      class QRCode {
      ......
      }
}
....

Offline klyde

  • Appassionato
  • ***
  • Post: 424
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #22 il: 13 Lug 2011, 15:12:55 »
Ciao Vales, ho risolto eliminando il modulo precedente per la generazione del qr code, ma adesso non mi da più l'errore, ma dopo aver cliccato su "Submit" mi si riapre semplicemente la stessa pagina senza generare l'immagine.

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #23 il: 16 Lug 2011, 05:00:09 »
Non ho idea dei motivi del tuo problema. Forse hai inserito caratteri strani nel campo da codificare ? Prova con una sola parola.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #24 il: 16 Lug 2011, 05:03:42 »
Stesso problema risolto con...

if(class_exists('QRCode') != true)
{
      class QRCode {
      ......
      }
}
....

Benvenuto nella comunità italiana di Joomla alegmartiz,

si, anche quella che hai proposto è un'elegante e buona soluzione. Grazie per averla condivisa.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline klyde

  • Appassionato
  • ***
  • Post: 424
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #25 il: 16 Lug 2011, 10:52:32 »

Offline klyde

  • Appassionato
  • ***
  • Post: 424
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #26 il: 16 Lug 2011, 10:55:15 »
Stesso problema risolto con...

if(class_exists('QRCode') != true)
{
      class QRCode {
      ......
      }
}
....

ma questo codice dove andrebbe inserito?

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #27 il: 16 Lug 2011, 12:36:41 »
Nel Field name del campo del codice hai inserito "Testo" devi mettere "testo" tutto minuscolo come indicato nella guida. Era lui il problema.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline klyde

  • Appassionato
  • ***
  • Post: 424
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #28 il: 16 Lug 2011, 13:01:20 »
Grazie vales, adesso funziona, ma come avevo scritto all'inzio di questo thread il mio obiettivo è quello di poter realizzare delle Vcard come in questo sito http://zxing.appspot.com/generator/ per ottenere dei qr code come questo che allego. è possibile?



[allegato vecchio più di un anno eliminato da un amministratore]

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #29 il: 16 Lug 2011, 13:14:03 »
Se inserisci quel testo ti codificherà quello.

Se i dati sono in un database basta modificare un po' il form per prendere quei campi e codificarli.

Oppure fai un form con i campi nome, cognome, indirizzo, ecc e gli assembli tutti nel codice. Non vedo il problema.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline klyde

  • Appassionato
  • ***
  • Post: 424
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #30 il: 16 Lug 2011, 13:33:27 »
Quindi se creo un form con i campi di testo nome, indirizzo, telefono ect. , dici che automaticamente sarà riconosciuto come una vCard ? Io credevo che doveva avere un'impostazione particolare. Ok ora ci provo e ti faccio sapere. Grazie mille per il tuo aiuto!!!

Offline klyde

  • Appassionato
  • ***
  • Post: 424
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #31 il: 16 Lug 2011, 19:23:13 »
Ho provato ad inserire nel form così com'è dati quali Nome, cognome, cell, ect., ma ovviamente il cellulare non riconosce il codice come vCard, ma semplicemente come del testo. Ho provato a creare dei campi con Nome Indirizzo, telefono ect, ma cosi il form non funziona più, evidentemente va modificato anche il codice php. Secondo me comunque il codice deve dare delle informazioni al cellulare dicendogli che si tratta di una vCard e non di semplice testo.

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #32 il: 17 Lug 2011, 10:32:45 »
Se inserisci i campi di testo il QRcode restituisce campi di testo.
Se inserisci l'indirizzo di una Vcard ottieni il link ad essa che poi il cellulare trasforma in link da visitare.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline klyde

  • Appassionato
  • ***
  • Post: 424
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #33 il: 17 Lug 2011, 11:25:10 »
Ma io non voglio inserire un indirizzo ad un vCard , ma voglio crarla, ossia voglio creare un qr code che restituisca un biglietto da visita elettronico che il cellulare lo riconosca come tale. Hai provato a leggere l'immagine che ho allegato qualche post prima? Vedrai che il cellulare va in automatico in modalità di aggiunta di un nuovo contatto.

Offline klyde

  • Appassionato
  • ***
  • Post: 424
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #34 il: 17 Lug 2011, 12:03:39 »
Ok, ci siamo, facendo mille prove e ricerche ho capito che per essere riconosciuto come una vCard il codice deve avere le seguenti caratteristiche:

BEGIN:VCARD
VERSION:2.1
N: Nome e cognome
ADR: indirizzo del contatto
TEL: numero telefonico
URL: indirizzo internet
EMAIL: indirizzo email
END:VCARD

Cosi composto il codice restituisce una vCard , ora peró bisogna adattare il form. Come si fa?

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #35 il: 17 Lug 2011, 16:00:30 »
Penso potresti provare a modificare più o meno in questo modo la parte finale del codice del form.

Codice: [Seleziona]
$codice=JRequest::getVar('nome','','post');
if ($codice<>"") {

$codice="BEGIN:VCARD\n";
$codice.="VERSION:2.1\n";
$codice.="N: ".JRequest::get('nome','','post')." ".JRequest::get('cognome','','post')."\n";
$codice.="ADR: ".JRequest::get('indirizzo','','post')."\n";
$codice.="TEL: ".JRequest::get('telefono','','post')."\n";
$codice.="URL: ".JRequest::get('web','','post')."\n";
$codice.="EMAIL: ".JRequest::get('mail','','post')."\n";
$codice.="END:VCARD\n";

$qrcode = new QRCode();
$qrcode->setData($codice);
$qrcode->setOutputEncoding(QRCode::$_ENCODING_UTF8);
$qrcode->setOutPutFormat(QRCode::$_OUTPUT_FORMAT_PNG);
//$content = $qrcode->getContentsForPost();
$content = $qrcode->getUrlQuery();
echo $codice."<br/>";
echo '<img src="'.$content.'">';

}

I nomi dei campi da usare dovrebbero essere quelle delle Jrequest oppure modifichi di conseguenza.

Ho messo il controllo sul campo nome, quando è nullo non mostra il codice. Ma puoi adottare un altro criterio.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline klyde

  • Appassionato
  • ***
  • Post: 424
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #36 il: 17 Lug 2011, 17:33:05 »
Ho modificato il codice come mi hai consigliato, ma l'immagine che ottengo mi da una vCard con tutte le voci compilate con la parola "Array". Come mai?

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #37 il: 17 Lug 2011, 18:08:34 »
posta il codice del form.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline klyde

  • Appassionato
  • ***
  • Post: 424
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #38 il: 17 Lug 2011, 18:38:16 »
Il codice modificato è questo:

Codice: [Seleziona]
<?php
class QRCode {
 
  public static 
$_ENCODING_UTF8 "UTF-8";
  public static 
$_ENCODING_Shift_JIS "Shift_JIS";
  public static 
$_ENCODING_ISO_8859_1 "ISO-8859-1";
 
  public static 
$_OUTPUT_FORMAT_PNG "png";
  public static 
$_OUTPUT_FORMAT_GIF "gif";
 
  private 
$baseUrl "http://chart.apis.google.com/chart";
  private 
$width=300;
  private 
$height=300;
  private 
$map = array();
 
  function 
__construct() {
    
$this->map['cht']="qr";
    
$this->map['chs']=$this->width."x".$this->height;
    
$this->map['chof'] = QRCode::$_OUTPUT_FORMAT_PNG;
  }
 
  public function 
setOutputEncoding($type) { $this->map['choe'] = $type; }
  public function 
setOutputFormat($type) { $this->map['chof'] = $type; }
  public function 
getOuputFormat() { return $this->map['chof']; }
  public function 
setData($data) { $this->map['chl'] = urlencode($data);}
  public function 
setImageSize($width$height) { $this->map['chs'] =
  
$width."x".$height; }
  public function 
setMargin($margin) { $this->map['chld'] = $margin; }
  public function 
getMap() { return $this->map; }
 
  public function 
setErrorCorrectionLevel($errorCorrectionLevel) {
        
$this->map['chld'] = $errorCorrectionLevel;
  }
 
  public function 
getUrlQuery() {
    return 
$this->baseUrl."?".$this->getQuery();
  }
 
  public function 
getQuery() {
    
$query "";
    
$keys array_keys($this->map);
    
$i 0;
    
$length count($this->map);
    foreach(
$keys as $key) {
      
$query .= $key."=".$this->map[$key];
      
$i++;
      if(
$i<$length$query.="&";
    }
    return 
$query;
  }
 
  public function 
getContentsForGet() {
    return 
file_get_contents($this->baseUrl."?".$this->getQuery());
  }
 
  public function 
getContentsForPost() {
    
$ch curl_init();
    
curl_setopt($chCURLOPT_URL$this->baseUrl);
    
curl_setopt($chCURLOPT_HTTPHEADER, array("accept: image/png"));
    
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
    
curl_setopt($chCURLOPT_CONNECTTIMEOUT30);
    
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
    
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
    
curl_setopt($chCURLOPT_POSTtrue);
    
curl_setopt($chCURLOPT_POSTFIELDS,$this->getQuery());
    
$output curl_exec($ch);
    
$info curl_getinfo($ch);
    
curl_close($ch);
    if(
$info['http_code'] == 200) {
      return 
$output;
    }
    return 
$info['http_code'];
  }
}
 
$codice=JRequest::getVar('nome','','post');
if (
$codice<>"") {

$codice="BEGIN:VCARD\n";
$codice.="VERSION:2.1\n";
$codice.="N: ".JRequest::get('nome','','post')." ".JRequest::get('cognome','','post')."\n";
$codice.="ADR: ".JRequest::get('indirizzo','','post')."\n";
$codice.="TEL: ".JRequest::get('telefono','','post')."\n";
$codice.="URL: ".JRequest::get('web','','post')."\n";
$codice.="EMAIL: ".JRequest::get('mail','','post')."\n";
$codice.="END:VCARD\n";

$qrcode = new QRCode();
$qrcode->setData($codice);
$qrcode->setOutputEncoding(QRCode::$_ENCODING_UTF8);
$qrcode->setOutPutFormat(QRCode::$_OUTPUT_FORMAT_PNG);
//$content = $qrcode->getContentsForPost();
$content $qrcode->getUrlQuery();
echo 
$codice."[br /]";
echo 
'<img src="'.$content.'">';

}
?>

... un'altra cosa, produce il codice, sopra all'immagine c'è tutto il testo che è stato inserito e per cui è stata creata l'immagine, ma assieme ai vari dati inseriti dall'utente compare anche "BEGIN:VCARD" e "EDN:VCARD", è possibile evitare che questa parte di testo non venga riportata?

Il form modificato puoi vederlo in funzione qui: http://www.cellularihitech.it/option,com_chronoforms/Itemid,100161.html
« Ultima modifica: 17 Lug 2011, 18:44:37 da klyde »

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Form per generare un QR Code
« Risposta #39 il: 17 Lug 2011, 18:57:33 »
Volevo vedere il codice dei campi. Il mio funziona.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

 



Web Design Bolzano Kreatif