PHP cURL: una classe per controllare link interrotti, status code e nxdomain in parallelo

PHP cURL e status code
PHP cURL e status code

Questa classe nasce dall’esigenza di revisionare i numerosi bookmarks accumulati in anni di navigazione su Internet. Purtroppo uno degli inconvenienti di Internet è proprio la scarsa affidabilità sulla persistenza dei link. Succede spesso che i link collezionati anni prima non siano più attivi oppure siano stati ridirezionati su altri siti.

Questa classe utilizza le librerie cURL che nelle ultime versioni del PHP, sono state integrate nel pacchetto. Ho utilizzato in particolare la famiglia di comandi curl_multi* in modo da poter evadere richieste multiple parallelamente e velocizzare notevolmente il processo. Oltre a poter verificare le url, che vengono fornite al costruttore della classe come array, per particolari status code o per intere famiglie di status code, è possibile anche verificare che la risposta non sia un cosiddetto hit-nxdomain cioè un server che intercetta un nxdomain e propone un redirect ad una pagina di ricerca di domini dal nome simile. In pratica alcuni DNS (p.e. OpenDNS) in caso di dominio inesistente producono redirect pubblicitari attraverso i loro hit-nxdomain.

Leggi tutto

Linux: script bash per conoscere e controllare l’hardware del proprio PC

Devil Tux
Devil Tux

La conoscenza dei dati hardware del proprio computer è spesso vaga, invece alcuni di questi sono davvero importanti per diversi aspetti. La conoscenza per esempio del tipo di processore, della dimensione della memoria RAM, della capacità dell’hard-disk sono utili per sapere se un certo software potrà essere installato sulla macchina, il numero seriale della motherboard, quello dell’hard-disk e gli indirizzi MAC delle schede di rete potranno essere utili in caso di furto per un’efficace ricerca ed identificazione. Conoscere infine i dati S.M.A.R.T. aiuta a non trovarsi da un momento all’altro con un hard-disk inservibile.

Questo sito You-hacker.com è dedicato proprio alle finalità sopra descritte. E’ infatti possibile scaricare un software per Windows che esegue una veloce scansione del PC ed invia i dati raccolti al sito che li memorizza e li ripropone all’utente in forma di tabella, mantenendone traccia attraverso l’utilizzo di cookies. E’ possibile anche registrarsi, per avere la sicurezza di essere identificati utilizzando browser differenti e poter stampare su PDF la tabella dei dati personalizzati.

Leggi tutto

P4A 3 Framework: Gestione Fatture 2, un’applicazione completa

Gestione fatture 2

Ho deciso di riscrivere in larga parte il codice dell’applicazione Gestione Fatture che avevo pubblicato in questo articolo, per renderla compatibile con la nuova versione di P4A (disponibile qui) (la 3.8.4) ed anche per correggere diversi bug che sono emersi nell’utilizzo.

Pur mantenendo tutte le caratteristiche della precedente versione, l’attuale non è compatibile con quella precedente per via di alcune modifiche sostanziali che ho dovuto apportare alla struttura del database.

Oltre a poter essere utile proprio per la gestione delle fatture delle ditte individuale e dei professionisti, credo che questo codice possa essere utile anche a tutti coloro che si avvicinano al framework P4A, in quanto all’interno ci sono diversi esempi di come risolvere la maggior parte dei problemi che si incontrano sviluppando con questo framework.

Alcune delle nuove caratteristiche sono:

  • Riscritto lo schema del database (non è più compatibile con la versione precedente)
  • Possibilità di inserire il saldo o il saldo parziale riscosso della fattura emessa per il controllo dei pagamenti
  • Nuova funzionalità per monitorare le fatture saldate interamente o parzialmente (conteggio dei soldi in cassa e dell’importo da riscuotere)
  • Nuova funzionalità per il filtraggio delle fatture
  • Possibilità di emettere note di credito
  • Nuova funzionalità per fatture ricorrenti
  • Corretto il codice della classe ezPDF (i file sono allegati nella dir. Libraries) per la compatibilità con PHP 5.3.x
  • Possibilità di inserire automaticamente la descrizione di prestazioni già inserite in fatture precedenti

A chi è rivolto:

  • Soggetti senza P.IVA che rilasciano la sola ritenuta di acconto
  • Soggetti con P.IVA iscritti alla Camera di Commercio (Ditte individuali)
  • Professionisti senza Cassa previdenziale autonoma
  • Professionisti con Cassa previdenziale autonoma

Per la mancanza di una gestione del magazzino è sconsigliata ai commercianti che hanno a che fare con un magazzino merce, inventario e via dicendo.

L’applicazione viene distribuita con licenza LGPL 3, in questo link potete trovare la traduzione non ufficiale in italiano.

Installazione:

  • Installare il framework p4a 3.8.4 (requisito obbligatorio)
  • Scompattare l’archivio “gestionefatture2.zip” all’interno della directory “p4a/applications”
  •   Generare un database con il nome: “gestionefatture2” ed importare il dump SQL:  “gestionefatture2.sql” che si trova all’interno della directory “_private”
  • Modificare il file “index.php” sostituendo nella riga di codice:

define(“P4A_DSN”, ‘mysql://yourdbuser:yourdbpassword@localhost/gestionefatture2’);

yourdbuser = l’utente MySQL con il quale accedere al vostro database

yourdbpassword = la password del suddetto utente.

Infine per accedere all’applicazione i parametri di login sono:

Username = admin

Password = admin

E’ importante mantenere nella directory “/libraries” i file di libreria di ezPdf che sono contenuti nel pacchetto, perché ho dovuto correggere alcune linee di codice (purtroppo ezPdf è stata abbandonata dal suo autore…) per renderla compatibile con PHP 5.3.x.

La applicazione richiede che sia installato il PHP 5.3.x + MySQL 5.1.x o superiore.

DOWNLOAD: Gestione Fatture 2

Sono graditi commenti, suggerimenti e correzioni!

 

 

 

PHP: un socket TCP per acquisire dati dal GPS Tracker GPS-102 compatibile OpenGTS (terza parte)

php daemon
php daemon

In quest’ultimo articolo descrivo come si lancia in background lo script PHP su un server con sistema operativo Linux Ubuntu o Debian. Come vi sarete accorti lo script descritto nella seconda parte contiene nella prima riga il seguente codice:

#!/usr/bin/env php

in gergo questa sintassi si chiama Shebang e viene utilizzata per lanciare dalla shell l’interprete dello script che sta per essere eseguito. In questo caso il PHP. Sarà dunque necessario verificare che PHP5-CLI (command line interpreter) sia installato.

Leggi tutto

PHP: un socket TCP per acquisire dati dal GPS Tracker GPS-102 compatibile OpenGTS (seconda parte)

Socket PHP
Socket PHP

Nella prima parte di questo articolo ho illustrato come creare le tabelle del DB dove registrare i dati provenienti dal tracker GPS, le principali funzionalità dello script e la possibilità di “agganciare” questo socket direttamente al software Open Source: OpenGTS.

Quest’ultima caratteristica, la ritengo particolarmente interessante in quanto permette di evitare di scriversi tutta la parte che riguarda la visualizzazione dei punti inviati dal tracker, sulle mappe.

Settaggi del socket
ChiaveValori possibiliDescrizione
VERBOSEtrue|falseSe impostato a true fornisce un output dettagliato degli errori
MOVING_THRESHOLD.05Soglia minima in Km per la registrazione del dato [.05 = 50 metri]
OPENGTStrue|falseSe impostato a true invia query per le tabelle OpenGTS
IP_ADDRxxx.xxx.xxx.xxxIndirizzo IP in ascolto [0 = tutti gli indirizzi]
TCP_PORT0..65535La porta TCP da utilizzare
DBHOSTlocalhostIndirizzo del DB MySQL
DBUSERdbuserutente del DB MySQL
DBPASSdbpasswordpassword dell’utente del DB MySQL
DBNAMEgpsdnome del DB MySQL
POLL_TIME20|30|60|300|600Tempo di polling del tracker in secondi
SPEED_CONV1.609344|1.852Conversione da Miglia (terrestri|marine) a Km
DFLT_MSG‘tracker’Messaggio di default del tracker
SOCK_RCV_TIMEOUT120Timeout in secondi per il socket in ricezione

Ed ecco il codice PHP del loop del socket (L’intero script è disponibile qui):

Leggi tutto

PHP: un socket TCP per acquisire dati dal GPS Tracker GPS-102 compatibile OpenGTS (prima parte)

Tracker GPS 102
Tracker GPS 102

Alcuni mesi fa mi è stato regalato questo questo tracker GPS per studiare come registrare su un database MySQL i dati che vengono trasmessi. L’apparecchio si chiama GPS-102 viene prodotto dalla Cobanch ed è disponibile anche in Italia ad un costo inferiore a 100€ su questo sito: www.nonsoloprevenzione.it

Poiché le informazioni della documetazione allegata sono, come spesso accade, piuttosto scarse, mi sono messo alla ricerca nel Web delle specifiche tecniche e del datagramma per la comunicazione dei dati forniti dal tracker (coordinate, velocità, ecc). Fortunatamente ho trovato questo foglio di calcolo, che si riferisce ai modelli TK102, TK103 ma il protocollo risulta identico e fornisce dunque le informazioni necessarie allo sviluppo del software.

Leggi tutto