Tag Archives: Php

Mostrare gli errori PHP anche quando i server sono settati diversamente

Pubblicato da

Mostrare gli errori PHP anche quando i server sono settati diversamente

Non c’è niente di più frustrante che avere una pagina bianca quando si sta testando un’applicazione oppure si è apportato qualche modifica a un CMS.
Molti dei server di produzione sono settati (in php.ini) per non mostrare gli errori o i warning che dovrebbero apparire.

Tutti i programmatori PHP sanno, però, che basta aggiungere all’inizio della pagina il codice

error_reporting(E_ALL);
ini_set(‘display_errors’, ‘1’);

per mostrare tutte le segnalazioni.
E se stiamo lavorando con Drupal o WordPress?
Basta inserire lo stesso codice ma in posti ben precisi

Drupal: /sites/default/settings.php
WordPress: /wp-config.php

Errore PHP: Cannot modify header information – headers already sent

Pubblicato da

Errore PHP: Cannot modify header information – headers already sent

E’ stato scritto tantissimo su questo comune errore PHP ma, in giro, ho notato che non c’è quasi mai una trattazione completa.

In primis diciamo che è un problema che sorge quando si usano funzioni di sessione del tipo session_start(), oppure funzioni di modifica delle intestazioni come header(), oppure ancora quando settiamo i cookie con setcookie().
Le cause:

  • Abbiamo usato una delle sopra citate funzioni dopo il tag <html> o comunque dopo aver impostato un output
  • Una linea bianca prima del tag di apertura <?php , anche un semplice spazio bianco, rappresenta un output
  • Nel file è incluso un BOM. Una piccola sequenza di byte che viene posizionata all’inizio di un flusso di dati di puro testo per indicarne il tipo di codifica Unicode

Soluzioni:

  • Le funzioni sopra citate vanno messe in testa al file PHP. Prima di qualsiasi altro codice.
  • Cancellare qualsiasi spazio bianco prima del tag di apertura. Potrebbe non essere uno spazio vuoto ma venire codificato dall’interprete PHP
  • Salvare il file con codifica UTF-8 senza BOM. Un buon editor come Notepad++ permette di farlo con semplicità.
  • Settare in php.ini il valore output_buffering=4096 (usarlo solo se necessario in quanto si rallenta il processo di output)
  • Iniziare lo script PHP con la funzione ob_start() (alternativo alla soluzione precedente) che attiva l’output_buffering senza stabilirne la grandezza

Link: funzioni di controllo del output in PHP

Comparazione framework

Pubblicato da

Comparazione framework

La necessità di “non inventare la ruota” ogni volta che si mette mano ad un progetto ha dato impulso alla nascita e allo sviluppo dei framework.
Esistono framework per quasi tutti i linguaggi e settori della programmazione.
Quelli più famosi ed utilizzati riguardano PHP, Ruby, Javascript e CSS (di meno quelli per Python e Java).

Per comparare i framework e scegliere quello che meglio risponde alle esigenze dello sviluppatore possiamo dare un’occhiata a Bestwebframeworks.
In una sola schermata è possibile comparare le caratteristiche più importanti dei vari framework.
Cliccando sui nomi si accede ad una scheda con maggiori dettagli.

Tramite form è poi possibile segnalare ai gestori del sito nuovi framework da comparare.

Link: Bestwebframeworks

Creare PDF da pagina web e RSS

Pubblicato da

Creare PDF da pagina web e RSS

Un progetto interessante in PHP5 per convertire all’istante pagine web in file in formato PDF.
Si potrebbe dire che per fare lo stesso basta stampare in PDF con la stampante virtuale.
Tutta via questo script fa di più formattando e convertendo anche i contenuti del feed RSS direttamente in un file, lo sappiamo, facilmente trasportabile e leggibile anche off-line.

In aggiunta, si possono creare bookmarklet come pulsanti per la creazione al volo di PDF indipendentemente dalla pagina web che stiamo visitando.
Ad esempio questo è il link per convertire l’RSS di questo blog in PDF (c’è qualche problema con i feed creati al volo come con WordPress).

Link: RSS to PDF Newspaper

Il miglior file manager in PHP

Pubblicato da

Il miglior file manager in PHP

Può capitare di non poter utilizzare il proprio client FTP o una shell di comando per operare su file e cartelle di un server Apache.
Normalmente, però, l’utente www-data ha diritti simili a quelli amministratore e, soprattutto, riesce a effettuare operazioni su file e cartelle come: cambio dei permessi, rinomina, spostamento, cancellazione ecc.

In questi casi si può installare un manager di file in PHP in modo che si possa agire sui file tramite l’utente www-data.
Ho provato diversi manager in PHP dotati di interfacce e  fuzionalità più o meno avanzate.
Quello che mi ha convinto di più è però PHPFileNavigator arrivato alla versione 2.

Veramente completo e semplice da installare, è dotato di un’interfaccia intuitiva con navigazione ad albero che imita l’organizzazione del server.
Le opzioni per ogni file sono veramente tante e ricoprono ogni possibile esigenza di un amministratore di server web.
E’ possibile anche effettuare upload e modificare online il file stesso tramite un text editor.
Ottimo.

Link:  PHPFileNavigator

Aggiungere funzionalità a Google Maps con Geocubes

Pubblicato da

Le mappe di Google sono una grande risorsa per gli sviluppatori. Sono utilizzate per i più svariati motivi: dai siti di agenzie immobiliari a quelli di segnalazione ristoranti.
La personalizzazione tramite API (Application Programming Interface) permette di aggiungere nuovi modi di utilizzo. I marker, ad esempio, permettono di individuare geograficamente punti di interesse (o geo-punti), fornendo anche informazioni aggiuntive.
Ma se questi iniziano a diventare numerosi? Il rischio è quello di creare confusione e di non fornire più un servizio utile.
Geocubes permette di risolvere questo problema suddividendo le macroaree in quadrati che indicano il numero di geo-punti inclusi.

Tramite javascript Geocubes sovrappone un layer sulla mappa di Google modificando visivamente le informazioni sui marker

Aggiungere funzionalità a Google Maps con Geocubes

Il layer di Geocubes e la mappa di Google si caricano in parallelo evitando lentezze di sorta. L’unica condizione è quella di mantenere le coordinate sui punti di interesse sui server di Geocubes.
A disposizione degli sviluppatori ci sono le API dell’applicazione e una libreria PHP che permette di inserire, modificare e eliminare i geo-punti.
Fino al 28 febbraio 2009 tutto è completamente gratuito. Poi la gratuità rimarrà fino a 10.000 geo- punti.

Link: Geocubes

I temi WordPress e la decodifica di eval gzinflate base64_decode

Pubblicato da

Sto utilizzando spesso WordPress come base di partenza per alcuni lavori “semplici”. La grafica la attingo dall’enorme serbatoio di temi gratuiti che è possibile trovare su web.
Nei temi è frequente trovare il file functions.php che aggiunge funzioni al normale set di WP.
I creatori (o anche i semplici modificatori) di temi inseriscono queste funzioni per gestire da remoto i backlink che compaiono, ad esempio, nel footer e che possono essere usati anche per pubblicità, SEO ecc.
Alcuni di questi link sono assolutamente leciti, quando riportano gli autori del tema ma spesso ci si ritrova a sponsorizzare siti pornografici o che contengono codice maligno.
E’ importante quindi dare un’occhiata al codice e nel caso modificarlo.
Nel file functions.php il codice è, però, camuffato per mezzo di una funzione. Ossia ci troviamo di fronte a qualcosa del genere

eval(gzinflate(base64_decode(‘DdFHrqNYAEDRrfSsqsQA/AgGlXpAMCYaTHrApEXOObP6/ju4Oj
fbo/Z3cVd93kZr9juOlowi/kuzZEiz37+EVJHm6RO
….

Vediamo come fare per renderla in chiaro

Creiamo un file decodifica.php

<?php
echo “1. Leggo codificato.txt\n”;
$fp1 = fopen (“codificato.txt”, “r”);
$contents = fread ($fp1, filesize (“codificato.txt”));
fclose($fp1);
echo “2. Decodifico\n”;
while (preg_match(“/eval\(gzinflate/”,$contents)) {
$contents=preg_replace(“/<\?|\?>/”, “”, $contents); eval(preg_replace(“/eval/”, “\$contents=”, $contents)); } echo “3. Scrivo su decodificato.txt\n”; $fp2 = fopen(“decodificato.txt”,”w”); fwrite($fp2, trim($contents)); fclose($fp2);
?>

e due file di testo
codificato.txt – dove copiamo il contenuto da decodificare
decodificato.txt – file di testo vuoto con permessi settati a 666

Mettiamo tutti e tre i file nella root del nostro server.

Nel browser richiamiamo http://www.miodominio.it/decodifica.php
e poi http://www.miodominio.it/decodificato.txt per leggere la funzione in chiaro.

Link: scarica esempio

CGI Error con PHP4 e IIS

Pubblicato da

Una veloce tip su un errore che capita di frequente quando si utilizza PHP su IIS. L’errore è il seguente

CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers

Questo errore può manifestarsi non sistematicamente nell’utilizzo di PHP su IIS, ma anche solo quando si cerca di settare un file come “php.ini“. Una soluzione, che a me ha funzionato, è quella di avviare PHP come ISAPI.
Nel pannello Plesk si trova questa opzione nella sezione “Setup”

Introduzione al servizio Cron su Plesk

Pubblicato da

Cos’è il Cron

E’ un servizio delle macchine UNIX che serve per programmare nel tempo un comando. Con Cron definiamo il servizio, con Crontab il suo file di configurazione . Ad esempio, attraverso un Crontab, si può decidere di schedulare (dall’inglese ‘to schedule’ ) il richiamo di uno script PHP o Perl perchè quest’ultimo effettui un’operazione in dato momento o sistematicamente ogni periodo di tempo impostato.

Il settaggio di un crontab è facilitato se disponiamo per la gestione del nostro server di un pannello di controllo Plesk.

Leggi tutto

iPaper, il sostituto di PDF?

Pubblicato da

iPaper di Scribd è un nuovo formato di documento espressamente realizzato per internet.
Funziona come un video di YouTube e quindi può essere integrato come applicazione Flash in ogni pagina web.
PDF, Word, PowerPoint e tanti altri formati possono essere visualizzati come iPaper.
Qual è il vantaggio? Il 99,9% dei browser supporta Flash ma non tutti hanno Acrobat per la visualizzazione del PDF o Microsoft PowerPoint o altri componenti della suite Office.
In poche parole si ha la sicurezza di veicolare un contenuto visibile dalla maggioranza dei navigatori del web.
Un altro vantaggio è quello che si può guadagnare attraverso un sistema di annunci gestito direttamente da Scribd.

La funzionalità e la semplicità del sito di iPaper sono un plus per questa web application.

Seguendo il link potete vedere una prova.
Leggi tutto