Tutorial avanzati su tematiche web su nettuts.com

Ottimo sito dove poter trovare interessanti tutorial avanazati su programmazione web.
Sito web: http://nettuts.com/
Come realizzare un gestore di licenze con php
// make sure fopen is not disabled
if( !( ini_get(allow_url_fopen) ) ) exit(’Configuration Error: allow_url_fopen must be turned on for this script to work’);
//if kill file does not exist you will get an error (client can see url of kill file) so turn off errors
error_reporting(0);
//get kill file
$lines = file(’http://www.example.com/killer/clientname.txt’);
//if the word kill is in the text file then exit script and show license message
foreach ($lines as $line_num => $line) {
$license = htmlspecialchars($line);
if ((strcmp($license,"kill") == 0 )) {
exit ("<font color=red size=large><b>There is a problem with this php script’s license please contact support at www.mydomain.com</b></font>");
}
}
//turn error messages back on
error_reporting(E_ALL);
//this section used to check to see if this script is run in a particular domain
//get the domain name
preg_match("/^(http:\/\/)?([^\/]+)/i", $_SERVER[’SERVER_NAME’], $matches);
$host = $matches[2];
// get last two segments of host name
preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches);
//echo "domain name is: {$matches[0]}\n";
$valid_domain = ‘clientdomain.com’;
$domain_name = $matches[0];
if ( $domain_name !== $valid_domain) {
exit("<font color=red><b>The Script License for this script is valid for use on " . $valid_domain . " only </b></font>");
}
Immagini con watermark con php
Ecco come applicare un testo di watermark a una immagine con php
Leggi l’articolo: http://smashingcoding.com/2007/12/14/un-watermak-png-propre-en-php/
Tecniche di cache con php

Ottimi tutorial su come gestire la cache con php
Sito web: http://smashingcoding.com/2007/10/23/les-techniques-de-cache-en-php/
Leopard - Apache, PHP, MySQL tutti su Mac OS X allegramente
Vediamo come installare e configurare:
- Apache.
- PHP.
- MySQL.
- PHPMyAdmin.
Premetto che Leopard è già dotato di Apache 2.2 e del PHP. Ma per esigenze personali ho compilato il PHP dai sorgenti distribuiti da PHP.net. E questo mi ha costretto anche a compilare Apache, in quanto quello compreso in Leopard è a 64bit mentre la libphp5.so compilata dai sorgenti è a 32bit ed impedisce al web server persino di avviarsi.
Fasi Preliminari
E’ necessario installare i tool di sviluppo che trovate direttamente nel DVD di installazione di Leopard. Inseritelo nel lettore del vostro Mac, aspettate che parta lo splashscreen.
Cliccate su Optional Install per installare i tool XCode mediante il pacchetto XcodeTools.mpkg.
In questo modo saremo in grado di compilare tutti i sorgenti necessari senza particolari problemi. Avremo installato, fra l’altro, il compilatore gcc che ci servirà sia per Apache che per PHP.
Apache
Niente di più semplice. Leopard è già pronto con Apache 2.2. Dovete solo attivare la condivisione web nelle preferenze di sistema.

Fatto questo accedete via browser a http://localhost (o http://127.0.0.1). Vi si aprirà la pagina di conferma di installazione del webserver. Ma a noi non piace la DocumentRoot configurata di default, ed allora come prima cosa la cambieremo
Apriamo una finestra del terminale ed accediamo alla directory di Apache:
cd /etc/apache2
Il file di configurazione del webserver è il solito httpd.conf. Apriamolo con vim ed apportiamo le seguenti modifiche.
sudo vim httpd.conf
password:
Notato niente di strano? Ebbene si. Anche su Leopard è stato implementato il comando sudo per aprire ed accedere a file di sistema con tutti i privilegi.
Cerchiamo la riga:
DocumentRoot "/Library/WebServer/Documents"
E modifichiamola in:
DocumentRoot "/Users/VOSTROUTENTE/Sites"
E successivamente cerchiamo la riga:
<Directory "/Library/WebServer/Documents">
E modifichiamola in:
<Directory "/Users/VOSTROUTENTE/Sites">
Per VOSTROUTETE si intende il nome della directory che indentifica la root di sistema del vostro account. Nel mio caso è "davide". Ed inserendo la URI in questo modo la webroot sarà fisicamente nella directory "Siti" del vostro account. State attenti che nel finder il nome della directory che vedete è proprio "Siti", ma è solo un alias dovuto alla lingua italiana. Il nome di sistema dela directory è "Sites" e questo va scritto in ogni file di sistema che in qualche modo interessa questa direttiva.
Per rendere effettive le modifiche riavviamo il webserver:
sudo apachectl graceful
Ma abbiamo detto che il server Apache compreso nella distribuzione Apple non è compatibile con il php compilato dai sorgenti. Quindi, a configrazione ultimata e testata, ricompiliamo il web server dai sorgenti scaricati direttamente da Apache.org. Se lo fate oggi scaricherete la versione 2.2.8. Scompattate l’archivio un po’ dove vi pare, entrate nella directory e digitate il solito trittico di comandi.
sudo apachectl stop
cd httpd-2.2.8
./configure –enable-layout=Darwin –enable-mods-shared=all
make
sudo make install
sudo apachectl start
Fatto questo non ci sarà bisogno di riconfigurare il webserver per modificare la DocumentRoot. Andrà bene e verrà usato il file di configurazione precedentemente editato in /etc/apache2.
MySQL Server
Scaricate il pacchetto binario direttamente da MySQL.org. Installate il pacchetto mysql-5.0.51a-osx10.5-x86.pkg. Potete anche evitare di installare MySQLStartupItem, dato che al momento con Leopard non funziona. Ed anche il pannello di controllo aggiuntivo non va. Ma per quest’ultimo è stata rilasciata una versione funzionante, scaricabile qui.
Purtroppo non c’è ancora modo di avviare automaticamente il server all’avvio del sistema. La preferenza spuntata non funziona. Ma quantomeno risulta agevole avviarlo manualmente.
Librerie aggiuntive: libpng e libjpeg (opzionale)
Se abbiamo intenzione di usare le funzionalità date alla libreria GD del php, abbiamo la necessità di installare le librerie libpng e libjpeg. E’ possibile farlo direttamente utilizzando un archivio binario scaricabile a questo indirizzo. Per semplicità utilizzate il combo installer che in un sol colpo le installa entrambe.
Installazione PHP
Bene, siamo arrivati al clou della nostra avventura. Scaricato il pacchetto con i sorgenti, scompattiamo l’archivio ed accediamo alla directory da terminale.
cd php-5.2.5
Importante è la stringa di configurazione. Un ./configure –help può togliervi molti dubbi. In ogni caso la mia stringa è la seguente. Dopo il ./configure, i soliti comandi per compilare ed installare il pacchetto.
./configure –prefix=/usr/local/php5 –enable-calendar –with-apxs2=/usr/sbin/apxs –enable-mbstring –with-mysqli=/usr/local/mysql/bin/mysql_config –with-mysql=/usr/local/mysql/ –with-gd –enable-soap –with-zlib –with-jpeg-dir=/usr/local/bin –with-png-dir=/usr/local/bin
make
sudo make install
sudo apachectl graceful
Il comando install si occuperà anche di editare il file di configurazione di Apache per permettere il running della libreria libphp5.so. L’ultimo comando serve a far riavviare il webserver in modo da fargli caricare tutte le librerie necessarie.
Non ri rimane che testare l’installazione! Accediamo alla DocumentRoot e creiamo uno nuovo file. Chiamiamolo info.php. Con un qualsiasi editor di testo, scriviamo:
<?php phpinfo(); ?>
Salviamo e chiudiamo il file ed accediamo via browser a http://localhost/info.php.
phpMyAdmin
Anche qui è tutto molto semplice. Basta scaricare l’ultima release del web tool di amministrazione del server MySQL, scompattare l’archivio in /Users/VOSTROUTETE/Sites e magari rinominare la directory in phpmyadmin per maggior comodità.
Avendo avuto cura che il server MySQL sia avviato, accedete via browser a http://localhost/phpmyadmin/scripts/setup.php ed utilizzate l’interfaccia web per la configurazione.
Per un uso in locale, senza troppo star a pensare alla sicurezza di un pc che non sarà mai utilizzato come web server pubblico, basta selezionare:
- Server hostname: localhost;
- PHP extensions to use: mysql (o mysqli se intendete usare la libreria improve);
- Autentication type: config;
- User for config auth: root;
Via: http://www.davidonzo.com/po…c-os-x-allegramente/
PHP Universal Feed Generator
Da ajaxray un ottimo script per generare feed RSS 1.0, RSS 2.0, atom.














































