Blog : PHP

Modulo Danea Easy Fatt con Prestashop: dimensioni immagini

Modulo Danea Easy Fatt con Prestashop: dimensioni immagini

Utilizzando il modulo di integrazione tra Danea EasyFatt e Prestashop, sviluppato da 2beweb2, può rivelarsi necessario ottenere le  immagini ingrandite all’interno della scheda prodotto di dimensioni maggiori rispetto a quanto previsto dal modulo. Lo stesso infatti, di default, consente una dimensione massima di 900×900 px compensando eventuali margini aggiuntivi con il bianco.

E’ possibile ovviare a questo limite modificando la porzione di codice posta all’interno del file: uploadimages.php

Tra le prime righe, è necessario modificare le seguenti variabili che regolano la dimensione massima delle immagini:

$max_orig_x = 900;
$max_orig_y = 900;

inserendo al posto di 900 il valore desiderato.

Questa modifica è stata segnalata ai gentilissimi sviluppatori di 2beweb2 che mi hanno informato che aumenteranno il limite nelle versioni successive del modulo.

Hai bisogno di una consulenza o assistenza?
Apri un ticket di richiesta, ti risponderò in brevissimo tempo! Chiedere non costa nulla 😉
Quando Google Analytics non funziona in prestashop

Quando Google Analytics non funziona in prestashop

Per ottenere un buon monitoraggio dei risultati sulla nota piattaforma prestashop è fondamentale utilizzare il servizio di Google Analytics. Come è noto, dopo aver creato un profilo utente è necessario incorporare un codice Javascript inserendolo all’interno del sito realizzato in Prestashop.

Per rendere la vita semplice, esiste un modulo installabile da back end trovabile inserendo “Google Analytics” o “Ganalytics” dove come parametro di configurazione è necessario inserire solo l’id fornito da Google a esempio:  UA-0000000-3

Purtroppo però spesso questa procedura non si dimostra funzionante soprattutto con le ultime versioni di prestashop o dei temi.

E’ necessario quindi editare a mano il file header.tpl ed inserire il codice javascript.

Anche questa soluzione può rivelarsi non sufficiente in  quanto il framework Smarty con il quale sono realizzati molti temi non riesce ad interpretare alcuni caratteri contenuti nel codice. Per ottemperare a questa situazione è necessario iniettare il codice all’interno degli snippet {literal} e {/literal} diventando quindi

 

{literal}
<script>
 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-0000000-3', 'auto');
 ga('send', 'pageview');
</script>
{/literal}
Hai bisogno di una consulenza o assistenza?
Apri un ticket di richiesta, ti risponderò in brevissimo tempo! Chiedere non costa nulla 😉
Abilitare ZipArchive in PHP su Hosting Condiviso Aruba

Abilitare ZipArchive in PHP su Hosting Condiviso Aruba

Se stiamo realizzando, modificando o utilizzando una web application basata su PHP, potrà tornarci utile o obbligatorio abilitare l’estensione ZipArchive su Hosting Condiviso Aruba.

ZipArchive è l’estensione che consente ad uno script PHP di generare o estrarre archivi ZIP.

 

Abilitare ZipArchive su Aruba

Aruba di default non abilita ZipArchive per le soluzioni Hosting Condivisi per ovvie ragioni di sicurezza. E’ possibile però abilitare questa funzione in modo permanente o per il solo tempo necessario per eseguire un’operazione. Ho quindi preparato un video esplicativo.

 

Hai bisogno di una consulenza o assistenza?
Apri un ticket di richiesta, ti risponderò in brevissimo tempo! Chiedere non costa nulla 😉
Facebook needs the CURL PHP extension

Facebook needs the CURL PHP extension

Utilizzando le API di Facebook così come altre applicazioni, può accadere di imbatterci in questo messaggio di errore:

Facebook needs the CURL PHP extension

Il problema nasce dal fatto che per molte delle sue API, Facebook ha necessità di comunicare con il nostro server utilizzando le cURL. In soldoni, queste danno la possibilità di trasferire dati attraverso la sintassi delle Url.

Se ci siamo imbattuti in questo problema, vuol dire che il nostro server non ha le cUrl istallate. In ambienti Debian sarà sufficiente accedere al nostro server e installare con:
apt-get install php5-curl

services apache2 restart

Nel caso in cui stessimo ancora utilizzando php4 basterà sostituire il nome del pacchetto con php4-curl

Hai bisogno di una consulenza o assistenza?
Apri un ticket di richiesta, ti risponderò in brevissimo tempo! Chiedere non costa nulla 😉
Analizzatore Log Mail su Server

Analizzatore Log Mail su Server

Uno degli attacchi hackers più frecquenti, riguardandi hosting o server, sono quelli in cui viene caricato all’interno di una delle cartelle del sito o della web application, un file scritto in diversi linguaggi che è in grado di inviare email spamm mentendo in serio pericolo l’usabilità del sito ma soprattutto rendendoci responsabili di eventuali azioni legali.

Molte volte capita che su un solo server siano ospitati più siti e che quindi sia molto difficile trovare il file “infetto” che genera il traffico di spamm.

Con PHP 5.3 viene introdotta un’importante novità ovvero, è possibile specificare quale file può fungere da log mail e quindi memorizzare gli estremi di ogni email mandata dal nostro server. Utilizzando questa funzione, per ogni email inviata, troveremo il corrispondente file che l’ha generata consentendoci quindi di eliminarlo e successivamente di correre ai ripari cercando di trovare la falla che ha consentito la scrittura dello stesso.

Basta quindi editare il file php.ini e specificare le variabili alle righe:
mail.add_x_header = On
mail.log = /var/log/phpmail.log

La prima riga aggiunge al log mail X-Header Addizionali dandoci informazioni sul processo e sul nome e percorso del file che ha generato la mail.

La seconda riga specifica in quale file queste informazioni debbano essere inserite.

Nel caso in esempio, sarà quindi necessario creare un file phpmail.log nel persorso /var/log/phpmail.log e renderlo scrivibile dal processo di PHP

Per ogni email che partirà dal nostro server, avremo una linea di log simile a quella sottostante:

1
mail() on [/var/www/miosito.com/httpdocs/pages/formmail.php:50]: To: info@miosito.com -- Headers: From: "John Brown Smith: " <jsb@miosito.com>

Facile capire il percorso che ha generato la mail e apporre le dovute soluzioni.

Hai bisogno di una consulenza o assistenza?
Apri un ticket di richiesta, ti risponderò in brevissimo tempo! Chiedere non costa nulla 😉
Storable Random Password

Storable Random Password

Problemi con la sicurezza delle tue applicazioni? Contattaci!

Utile per molte applicazioni e per i processi di login, gli algoritmi in grado di generare password casuale sono molto utili al fine di generare credenziali di autenticazione o verificare un processo di corrispondenza di un indirizzo mail con un account. Un occhio di riguardo è sempre rivolto alla sicurezza che le password devono mantenere per proteggere tutto ciò che sta oltre il loro utilizzo. Inutile dire quindi che la miglior password utilizzabile è quella formata dall’unione di lettere maiuscole e minuscole, numeri e caratteri speciali per una lunghezza di almeno 8 caratteri.

Trattando di software rivolti ad un pubblico di vario genere, non sempre utilizzare la password più efficiente è la risposta giusta in quanto difficilmente memorizzabile e quindi conservata in mail, fogliettini o altri dispositivi non protetti.

Per ottenere un buon connubio tra sicurezza e semplicità d’uso è necessario poter generare password casuali che presentino una facilità di lettura, quindi di memorizzazione, data dallo pseudo utilizzo di costrutti grammaticali. Unendo infatti suffissi, prefissi, vocali prese una sola volta e consonanti ripetute secondo regole grammaticali, si può ottenere una password sicuramente insensata ma facile da ricordare.

Di seguito presentiamo un breve algoritmo scritto in PHP che restituisce una password casuale facile da ricordare o come spesso chiamate le SRP Storable Random Password.

La funzione può essere personalizzata in fase di chiamata aumentando/diminuendo il numero di sillabe da utilizzare e introducendo o meno i caratteri e la quantità numerica nonché l’utilizzo dei prefissi grammaticali:

  public function gen_mem_password($syllables = 3, $use_prefix = false, $use_numbers = true,$quantity_numbers=2){
            // Define function unless it is already exists
    if (!function_exists('ae_arr'))
    {
        // This function returns random array element
        function ae_arr(&$arr)
        {
            return $arr[rand(0, sizeof($arr)-1)];
        }
    }

    // italian prefix
    $prefix = array('an',       'ana',      'ante',     'anti',     'arci',
                    'avan',     'bis',      'circom',   'cis',      'con',
                    'contra',   'contro',   'de',       'di',       'dis',
                    'eu',       'extra',    'fra',      'in',       'infra', 
                    'inter',    'intra',    'iper',     'ipo',      'luxta',    
                    'meta',     'ob',       'oltre',    'post',     'pre',      
                    'pro',      're',       'sin',      'sopra',    'sotto',    
                    'stra',     'sub',      'super',    'sur',      'tra', 
                    'trans');

    // italian suffix
    $suffix = array('accio',    'aggine',   'aggio',    'aglia',    'aio',
                    'anza',     'astro',    'ata',      'ato',      'enza',
                    'eria',     'esco',     'etto',     'ezza',     'erla', 
                    'etto',     'ezza',     'fero',     'iere',     'ino',
                    'ismo',     'ista',     'mento',    'oide',     'one', 
                    'ota',      'oto',      'otto',     'tore',     'uccio',
                    'ucolo',    'zione',    'ale',      'ario',     'ese', 
                    'evole',    'issimo',   'oso',      'oto',      'mente',
                    'archia',   'filla',    'logia',    'mania',    'teca',
                    'iatra',    'scopia'); 

    //vowel sounds 
    $vowels     = array('a', 'o', 'e', 'i', 'u', 'ou'); 

    //sound consonants 
    $consonants = array( 'r', 't', 'p', 's', 'd', 'f', 'g', 'h', 'l', 'z','c', 'v', 'b', 'n', 'm','qu');
    //numbers
    $numbers    = array('1','2','3','4','5','6','7','8','9','0');

    $password           = $use_prefix?ae_arr($prefix):'';
    $password_suffix    = ae_arr($suffix);

    for($i=0; $i<$syllables; $i++)
    {
        //random consonant
        $doubles    = array('n', 'm', 't', 's','r','c','d','p','f','g','l','z','v');
        $c          = ae_arr($consonants);
        if (in_array($c, $doubles)&&($i!=0))
            if (rand(0, 2) == 1) 
                $c .= $c;
        
        $password .= $c;

        //random vowel
        $password .= ae_arr($vowels);

        if ($i == $syllables - 1) 
            if (in_array($password_suffix[0], $vowels))
                $password .= ae_arr($consonants);

    }

    // selecting random suffix
    $password .= $password_suffix;

    if($quantity_numbers>=0 && $use_numbers)
	for($j=0; $j<$quantity_numbers; $j++)
	 	$password .= ae_arr($numbers);
	
    

    return $password;
        
    }
Hai bisogno di una consulenza o assistenza?
Apri un ticket di richiesta, ti risponderò in brevissimo tempo! Chiedere non costa nulla 😉
IPN paypal

IPN paypal

Vuoi utilizzare lo strumento IPN PayPal per la tua piattaforma? Contattaci!

Un IPN (Instant Payment Notification) è un servizio fornito da PayPal che consente di automatizzare le operazioni successive ad un acquisto senza richiedere la presenza di un utente fisico.

L’ IPN è un sistema molto sicuro che opera dietro lo scenario di una transazione da cliente e venditore effettuando un dialogo diretto tra il Server di PayPal e quello del venditore.

Nel codice sopra riportato, immaginiamo un tipico pulsante ‘Acquista’ che il cliente preme per effettuare il pagamento di un ordine. Ogni Tag rappresenta un’istruzione da fornire al server di PayPal per effettuare l’operazione come la mail di riferimento dell’account del venditore, l’oggetto acquistato, l’importo, la valuta ecc. Aspetto fondamentale è l’istruzione che specifica l’indirizzo dove risiede l’IPN (http://sitovenditore.xx/ipn.php) che servirà a PayPal per effettuare le operazioni tecniche di dialogo con il nostro sistema.


Nel codice soprastante, abbiamo ipotizzato una funzione che verrà invocata nel caso di una transazione eseguita correttamente ovvero il decremento di un numero di crediti dal conto di un utente.

Sintatticamente, l’IPN riceve una chiamata dal Server di PayPal con diversi parametri passati attraverso l’array POST. Detto questo, l’IPN apre un socket in ascolto con PayPal e successivamente invia la stessa richiesta ricevuta in modo che lo stesso possa verificarne la corretezza e rispondere quindi con i messaggi ‘VERIFIED’ o ‘INVALID’.

Vuoi utilizzare lo strumento IPN PayPal per la tua piattaforma? Contattaci!

Hai bisogno di una consulenza o assistenza?
Apri un ticket di richiesta, ti risponderò in brevissimo tempo! Chiedere non costa nulla 😉

Includere HTML in HTML

In un nostro recente lavoro ci è stato richiesto il collegamento ad una porzione di html da un sito esterno. Solitamente questo tipo di estensione viene effettuata utilizzando la tecnologia fornita dagli Iframe che, sostanzialmente, concede sul nostro sito l’apertura di una finestra (delle dimensioni volute) che si affaccia sul sito esterno. Il problema di questa tecnica è la gestione html del sito incluso.

Quando non siamo i proprietari del sito esterno diventa difficile, se non impossibile, gestire le funzioni del codice. Nel nostro caso specifico dovevamo includere il codice HTML da un sito, cercando di carpirne una serie di news, e ri-pubblicarle sul nostro sito.

Utilizzando gli Iframe abbiamo ottenuto un buon risultato ma, cliccando sui collegamenti ipertestuali, questi si aprivano all’interno della stessa finestra Iframe, rendendo impossibile la consultazione. L’unica soluzione possibile è stata la cattura dell’intero codice HTML utilizzato e, effettuando parsing riga dopo riga, siamo riusciti non solo a catturare la porzione di codice interessata, ma anche a modificarla introducendo, ad esempio, il target _blank agli url delle notizie, per evitare la dispersione dei nostri utenti.

Ad esempio, se volessimo includere la porzione di codice presente sul sito www . sitodaincludere . yyy:


In tal caso dobbiamo includere una lista di elementi che possiedono immagini e collegamenti ipertestuali, riferiti con path relativo, quindi non utilizzabili dal nostro sito. Vediamo ora il codice PHP utilizzato per scaricare la pagina, parserizzare e stampare a video la porzione di codice che ci interessa, sostituendo le parti da settare in base al nostro sito:

',$r)){
	$bool=true;
        $codice=$codice.$r
  }
 
  //Fin tanto che la variabile di controllo è vera
  if($bool){
        //Sostituiamo nella riga corrente, i path relativi con quelli assoluti
        $r=eregi_replace("/images/arrow_red.png", "http://www.sitodaincludere.yyy/images/arrow_red.png", $r);
        $r=eregi_replace("',$r)){
           $codice=$codice.$r;
           //Settiamo a false la variabile di controllo
	   $bool=false;
	}		
    }

}

//Stampiamo a video il risultato ottenuto
echo $codice;

?>

Includendo questo script PHP nel punto preciso della nostra pagina otterremo:


Buona programmazione a tutti!

Hai bisogno di una consulenza o assistenza?
Apri un ticket di richiesta, ti risponderò in brevissimo tempo! Chiedere non costa nulla 😉