Php Visualizzare anteprima immagini Php Upload di file
Php Trasferire un file tramite ftp Php tabelle con righe a colori alternati
Php Scrivere del testo in una immagine con le librerie grafiche gd Php Scrivere su un file .csv
Php Circuito rotazione banner Php Ridurre le dimensioni delle immagini con le librerie grafiche gd
Php ricerca parole nei file Php Proteggere le pagine da utenti non autenticati
Php Proteggere i moduli con la chiave di sicurezza Php Ottimizzare tutte le tabelle
Php I moduli Php login con http
Php Leggere e scrivere il contenuto di un file Php Leggere i dati da un database access
Php Leggere valori da un file .csv Php Leggere le email con php parte 1
Php Leggere le email con php parte 2 (verifica presenza allegati) Php Leggere le email con php parte 3 (leggere il contenuto)
Php Leggere le email con php parte 4 (cancellare email) Php Leggere e scivere il contenuto di un cookies.
Php Leggere i dati da un file xml Php Inviare una email in formato html
Php Inviare una email in formato html Php Inviare informazioni da javascript a php
Php Un grafico a barre con php e le librerie grafiche gd Php Creiamo una galleria dinamica di immagini
Php Scrivere in un file word il contenuto di un file Php Creare file autoconfigurante per leggere la posta con outlook express
Php Creare file autoconfigurante per la connessione a internet Php Eliminare eventuali tag html da un testo
Php Disegnare con le librerie grafiche gd Php Criptare le password con l'algoritmo MD5
Php Creare un file pdf con php Php Creare un sistema di commenti agli articoli in php/mysql
Php Creare uno scrolling orizzontale di news scritte in un file di testo Php Creare un file xml al volo
Php creare un foglio excel Php Un contatore di accessi con file di testo
Php conoscere utenti online Php Un calendario in php
Php Spezzare la visualizzazione di records in più pagine PHP: Autenticazione HTTP usando PHP
Spostare database Mysql da una macchina ad un'altra

 

 

 

Php Visualizzare anteprima immagini
In questo articolo tratteremo come creare un visualizzare le anteprime di immagini con php e javascript. Il codice javascript che mostra l'immagine è il seguente
<script>
function showImg(percorso){
mostraimmagine.innerHTML="<img border=0 src="+percorso+">";
}
function vai(x){
showImg(x);
}
</script>
mentre la parte php che legge i file presneti nella cartella "$cartella" è qui sotto.
<div id="mostraimmagine"></div><br> <select size=10 onChange="vai(this.options[this.selectedIndex].value)">
<?
$cartella="immagini/";
if ($handle = opendir($cartella)) {
while (false !== ($file = readdir($handle))) {
if(($file!='.') && ($file!='..')){
echo"<option value=\"$cartella$file\">$file</OPTION>";
}
}
echo"</select>";
closedir($handle);
}
?>
</select>

Php Upload di file
Obiettivo
In questo articolo tratteremo come fare l'upload dei nostri files sul server.
Il form
Quando spostiamo i file dal nostro computer al nostro server si dice che stiamo facendo un upload di file. Con php e' molto semplice spostare i file ovvero copiare i file da locale a remoto. Come prima cosa vediamo come si deve impostare il form con la scelta del file da copiare sul server.
Un esempio di form potrebbe essere:
<?
echo"<form enctype=\"multipart/form-data\" action=\"upload.php\" method=\"post\">";
echo"<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"1000000\">";
echo"file: <input name=\"userfile\" type=\"file\"> ";
echo"<input type=\"submit\" value=\"upload\">";
echo"</form>";
?>
"enctype=\"multipart/form-data\""
indica che il tipo di dato che stiamo trasferendo dal form e' di tipo file.
<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"1000000\">
e' un campo nascosto in cui mettiamo la dimensione massima che il file da uplodare puo' avere.
<input name=\"userfile\" type=\"file\">
e' il campo in cui verra' messo il percorso completo del file del tuo computer.
Copiare i file in php
In php, un file e' copiato da una directory ad un altra dalla funzione
copy ("file_locale_da_copiare","file_remoto_da_copiare");
La pagina upload.php
Fatto questo vediamo adesso come creare la pagina upload.php che si occupera' di traferire il file.
<?php
$directory="images/"; //directory dove andranno i nostri files
$picture = "userfile"."_name";
$picture1 = $$picture;
$picture2 = "userfile";
$picture3 = $$picture2;
$tipo = $_FILES['userfile']['type'];
$nome = $_FILES['userfile']['name'];
if($picture3 != "none")
{
$filesizebtyes = filesize($picture3);
$ok = 1;
if($filesizebtyes < 10)
{
$error .= "Errore file piu piccolo di 10 byte<BR>";
$ok = 2;
}
if(file_exists("$directory/$picture1") OR $ok == 2)
{
$error .="File gia esistente<BR>";
}
else
{
copy ($picture3, "$directory/$picture1");
$immagine=$picture1;
$error .="Il file <b>$nome</b> di tipo <b>$tipo</b> è stato traferito";
}
if(!$error) {
$error .= "Nessun file scelto";
}
echo $error;
}
?>
Limitare alcuni files
Possiamo limitare l'upload di file solo per alcuni tipi. Dall'esempio precedente
$tipo = $_FILES['userfile']['type'];
ritorna il tipo di file. Sapendo che:
un file file jpeg = "image/pjpeg"
un file di testo = "text/plain"
Potrei limitare l'upload di questi tipi di file mettendo:
if($tipo!="image/pjpeg" || $tipo!="text/plain"){}

Php Trasferire un file tramite ftp
Obiettivo
In questo articolo tratteremo come trasferire un file tramite ftp
Articolo
Trasferire i dati con ftp e' come fare l'upload di file, ma mentre con l'upload i file sono passati tramite il protocollo http, qui sono passati tramite il protocollo ftp.
Come prima cosa dobbiamo settare server,user e password per accesso allo spazio ftp. Supponedo che il nostro spazio sia www.pippo.it
$ftp_server = "ftp.pippo.it";
$ftp_user_name = "";
$ftp_user_pass = "";
Poi identifichiamo il nome del file che vogliamo passare e il nome che questo file dovra' assumere sul server
$local_file = 'file.zip';
$destination_file = 'file.zip';
Ci connettiamo al server tramite
$conn_id = ftp_connect($ftp_server);
che ritorna 1 in caso di successo altrimenti 0. Ci colleghiamo al server
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
che ritorna 1 in caso di successo altrimenti 0. Tasferiamo il file in modalita' "FTP_ASCII"
if (ftp_put($conn_id, $destination_file, $local_file, FTP_ASCII)) {
e poi chiudiamo la connessione
ftp_close($conn_id);
Codice
<?php
$ftp_server = "ftp.pippo.it";
$ftp_user_name = "";
$ftp_user_pass = "";
$local_file = 'file.zip';
$destination_file = 'file.zip';
// cerca di connettersi
$conn_id = ftp_connect($ftp_server);
// Check open
if ((!$conn_id)) {
echo "Ftp-connect failed!"; die;
} else {
echo "Connected.";
}
// cerca di collegarsi
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// Check colleg
if ((!$login_result)) {
echo "Ftp-colleg failed!"; die;
} else {
echo "Connected.";
}
// trasferisce il file
if (ftp_put($conn_id, $destination_file, $local_file, FTP_ASCII)) {
echo "$local_file trasferito\n";
} else {
echo "errore durante il trasferimento di $local_file\n";
}
// chiude la connessione
ftp_close($conn_id);
?>
Php tabelle con righe a colori alternati 
Obiettivo
In questo articolo tratteremo come creare con php una tabella che mostri delle righe con colori alternati.
Articolo
Quello che ci servira' in questo caso e' il modulo che è un operatore che e' indicato con il simbolo '%'. Ci sono diverse proprieta' per il modulo ma a noi non interessa, a noi interessa sapere quando un numero e' dispari e quando e' pari. Cio' e' possibile tramite il modulo infatti:
1%1 ritorna 0
2%1 ritorna 1
Un numero dispari % 1 da 0
Un numero pari % 1 da 1
Codice
<?
$i=1;
connessione_al_db();
$dati=mysql_query("select * from news");
while($array=mysql_fetch_array($dati))
{
if($i%2==1)$color="#ffffff"; //primo colore
else $color="#cccccc"; //secondo colore
echo"<tr bgcolor=$color><td>$array[notizia]</td></tr>";
$i++;
}
?>
Php Scrivere del testo in una immagine con le librerie grafiche gd
In questo articolo tratteremo come scrivere del testo in una immagine con le librerie grafiche gd. Piu precisamente scriveremo del testo generato in modo random da una funzione che vedremo sotto. La cosa che vogliamo fare è tipo il meccanismo del codice di sicurezza che tante volte abbiamo visto. La funzione che scrive il testo in una immagine è la seguente
imagettftext(identificare_img,dim_font,rotazione,x_inziale,y_iniziale,identificare_colore,ident_font,testo);
Nella pagina in cui vogliamo vedere l'immagine mettiamo:
<?php
print "<img border='1' src='prova.php'>";
?>
La pagina prova.php che genera l'immagine è la seguente:
<?php
// Set the content-type
header("Content-type: image/png");
// Create the image
$im = imagecreate(80, 30);
// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
// The text to draw
$text = random();
// Replace path by your own font path
$font = 'arial.ttf';
// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
// Using imagepng()
imagepng($im);
imagedestroy($im);
?> <?
function random(){
$numeri=array("a","b","c","d","e","f","g","h","i","1","2","3","4","5","l","m","n","o","p",
"q","r","s","t","u","v","z","w","x","k","j","y","6","7","8","9","0");
$pass="";
for($i=0;$i<=8;$i++){
$indice=rand(0,35);
$pass=$pass.$numeri[$indice];
}
$pas=crypt($pass);
$pas=substr($pass,0,5);
return $pas;
}
?>
oppure possiamo usare un'altra funzione
imagestring(identificare_img,dim_font,x_inziale,y_iniziale,testo,identificare_colore);
Php Scrivere su un file .csv
In questo articolo tratteremo come scrivere su un file csv grazie a php.
File .csv
Un file CSV è in realtà un file di testo formattato secondo certe regole, ma compatibile con i principali programmi per la trattazione di fogli elettronici come Excel. Le regole sono molto semplici: ogni riga contiene i dati che sono separati tra loro dal carattere ","
Articolo
Tutto il lavoro lo svolge una funzione chiamata fputcsv che e' definita sotto, questa funzione ha il compito di scrivere in un file (.csv) una riga contenente i dati.
function fputcsv ($fp, $array, $deliminator=",") {}
La funzione fputcsv prende come parametri un puntatore a file $fp e un array che contiene i dati da scrivere.
Tutto quello che dobbiamo fare e' costruire un array di valori contente i valori che vogliamo scrivere e darlo in pasto alla nostra funzione.
Nel nostro esempio, vogliamo scrivere una tabella del genere
-------------------------------------------------------------------
| marca | modello | codice | prezzo |categoria | sottocategoria
-------------------------------------------------------------------
| sony | trinitron | 111111 | 12 |televisori | cristalli liquidi
-------------------------------------------------------------------
<?php
$fp=fopen("prova.csv","w"); //apre il file
$primo=array("marca","modello","codice","prezzo","categoria","sottocategoria"); //dichiara array
$secondo=array("sony","trinitron","111111","12","televisori","cristalli liquidi"); //dichiara array
...
fputcsv($fp,$primo); //scrive dati sul file
fputcsv($fp,$secondo); //scrive dati sul file
fclose($fp);//chiude file
//scrivi
function fputcsv ($fp, $array, $deliminator=",") {
$line = "";
foreach($array as $val)
{
$val = str_replace("\r\n", "\n", $val);
if(ereg("[$deliminator\"\n\r]", $val))
{
$val = '"'.str_replace('"', '""', $val).'"';
}
$line .= $val.$deliminator;
}
$line = substr($line, 0, (strlen($deliminator) * -1));
$line .= "\n";
return fputs($fp, $line);
}
?>
Php Circuito rotazione banner 
Obiettivo
In questo articolo tratteremo come creare un circuito di rotazione banner per il nostro sito.
La tabella dei banner
La tebella "banner" del nostro database è composta da 4 campi:
"immagine" indica il percorso dell'immagine
"alt" indica il ocntenuto del tag alt
"link" indica il link quando ci clicchiamo sopra
CREATE TABLE `banner` (
`id` int(3) NOT NULL auto_increment,
`immagine` varchar(70) default NULL,
`alt` varchar(70) default NULL,
`link` varchar(70) default NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) TYPE=MyISAM;
Popoliamo la tabella
aggiungiamo delle righe di esempio:
INSERT INTO banner(id,immagine,alt,link) VALUES ('1','immagini/banner_sito.jpg','cliccami', 'http://www.sastgroup.com');
INSERT INTO banner(id,immagine,alt,link VALUES ('2','immagini/miobanner.gif','cliccami', 'http://www.pippo.it');
La pagina che visualizza i dati
Questa pagina prendera' i valori in modo random dal database. Il codice sql per prendere i valori random e':
select * from banner order by rand() limit 1
il codice che mostra i banner random è il seguente:
<?
mysql_connect("localhost","user","password")or die("non riesco a connettermi");
mysql_select_db("database")or die("non riesco selezionare il database");
$dati=mysql_query("select * from banner order by rand() limit 1");
$numero_righe=mysql_num_rows($dati);
while($array=mysql_fetch_array($dati)){
echo"<ahref=\"$array[link]\"><img border=0 alt=\"$array[alt]\" src=\"$array[immagine]\"></a>";
}
?>
Php Ridurre le dimensioni delle immagini con le librerie grafiche gd
In questo articolo tratteremo come eidurre le dimensioni delle immagini con le librerie grafiche gd. Partiremo da una immagine .jpg e la faremo diventare .png riducendone sia la dimensione (altezza,larghezza) che il peso (kbyte). La nostra nuova immagine avra' dimensioni 200x200.
L'immagine sorgente:
$imgsrc="big.jpg";
Le dimensioni dell'immagine da ridurre:
//dim
$dimensione=getimagesize($imgsrc);
$w=$dimensione[0];
$h=$dimensione[1];
La funzione che riduce l'immagine:
imagecopyresized($image,$nuovoid,0,0,0,0,$w/2,$h/2,ImageSX($nuovoid),ImageSY($nuovoid));
//imagesx() returns the width of the image identified by image.
//imagesy() returns the height of the image identified by image.
Infine tutto il codice
<?
header("Content-type: image/png");
//immagine sorgente
$imgsrc="big.jpg";
//nuovo id
$nuovoid=imagecreatefromjpeg($imgsrc);
//imagecreatefromjpeg() returns an image identifier representing the image obtained from the given filename.
//acquisisce identificatore immagine
$image=imagecreate(200,200);
//dimensioni
$dimensione=getimagesize($imgsrc);
$w=$dimensione[0];
$h=$dimensione[1];
imagecopyresized($image,$nuovoid,0,0,0,0,$w/2,$h/2,ImageSX($nuovoid),ImageSY($nuovoid));
//imagesx() returns the width of the image identified by image.
//imagesy() returns the height of the image identified by image.
//disegna immagine
imagepng($image);
//libera memoria
imagedestroy($image);
//libera memoria
imagedestroy($nuovoid);
?> 
Php ricerca parole nei file
In questo articolo tratteremo come creare un motore di ricerca di parole nelle pagine del nostro sito. Il tutto consiste in due file: form.html e ricerca.php che contiene il motore di ricerca.
I files e directory devono trovarsi nella stessa cartella dei files di ricerca.
la pagina "form.html" e' cosi composta
<form name="ricerca" method="post" action="ricerca.php">
<input type="text" name="word" size="30">
<input type="submit" value="GO">
</form>
mentre "ricerca.php"
<?php
$word=$_POST['word'];
echo"<center>risultati della ricerca per:<b>$word</b><br><br>";
echo"<center><table width=600><tr><td>";
//ciclo principale
if ($handle = opendir('.'))
{
while (false !== ($file = readdir($handle)))
{
if ( $file!= "." && $file != "..")
{
if(is_file($file))
{
ricerca($file,$word);
}
if(is_dir($file)){
leggi($file,$word);
}
}
}
closedir($handle);
}
//funzione che legge dalla directory i file
function leggi($fi,$word)
{
if ($handle = opendir($fi))
{
while (false !== ($file = readdir($handle)))
{
if ( $file!= "." && $file != "..")
{
if(is_file($fi."/".$file))
{
ricerca($fi."/".$file,$word);
}
if(is_dir($fi."/".$file)){
leggi($fi."/".$file,$word);
}
}
}
closedir($handle);
}
}
//funzione che cerca nel file
function ricerca($link,$word)
{
$pieces = explode(".", $link); //prende l'estensione
if($pieces[1]=="htm" || $pieces[1]=="html" || $pieces[1]=="txt") //se corrisponde con 'html' 'htm' 'txt' esegue la ricerca
{
$url=$link; //pagina in cui fare la ricerca
$parola_da_cercare=addslashes(stripslashes($word)); //parola da cercare
$primo=array();
$a=0;
$content=array("cont");
$b=filesize("$link");
$fp=fopen("$link",'r')or die("impossible aprire il file");
while(!feof($fp))
{
$chunk=fgetc($fp);
$content[]=$chunk;
$a++;
}
$word="";
echo htmlspecialchars($nome);
for($i=1;$i<=$a;$i++)
{
$word=$word.$content[$i];
}
$word = strip_tags($word); /* Try to remove all HTML-tags: */
fclose($fp);
array_push($primo,$word); //inserisce la descrizione nell'array
$n=0;
foreach ($primo as $temp)
{
if (ereg($parola_da_cercare, $temp, $reg)) //cerca la parola da cercare nel campo del database
{
$n++; //indice per tenere conto dei risultati
$temp=ereg_replace($parola_da_cercare,"<span style=\"background-color: #FFFF00\">".$parola_da_cercare."</span>",$temp); //mette in grassetto la parola da ricercare tra i risultati
print $temp."<br>";
echo"<b><a href=\"$link\">vedi</a></b><br>";
echo"<i>$link</i><br><br>";
}
}
}
}
echo"</td></tr></table>";
?>
Php Proteggere le pagine da utenti non autenticati
Obiettivo
In questo articolo tratteremo come proteggere una pagina, consentendo l'accesso solo a persone che sono autenticate e che hanno i permessi per accedere.
Il database
Per far cio',ci serviremo di un database che contiene i dati degli utenti:
CREATE TABLE `utenti` (
`id` int(10) unsigned NOT NULL auto_increment,
`username` varchar(30) NOT NULL default '',
`password` varchar(32) NOT NULL default '',
`livello` varchar(100) NOT NULL default ''
PRIMARY KEY (`id`),
) TYPE=MyISAM;
Dove il campo livello indica il grado di permesso alla pagina che sara' 1 se può accedere alla pagina mentre 0 altrimenti.
La pagina del login
La pagina che contiene il form dove inserire user e pass per il login
<?php
echo"<form action=\"login.php\" method=\"post\">";
echo"User <input type=\"text\" id=\"field\" name=\"us\"><br>";
echo"Pass <input type=\"password\" id=\"field\" name=\"pass\"><br>";
echo"<input type=\"submit\" id=\"button\" value=\"entra\">";
echo"<input type=\"reset\" id=\"button\" value=\"reset\">";
echo"</form> ";
?>
Il file login.php
La pagina login.php che si occuperà di loggare gli utenti sarà:
<?php
session_start();
$tmputente=$us;
$tmppass=$pass;
session_register("tmputente");
session_register("tmppass");
echo"ok";
?>
Le pagine protette
Una volta che un utente ha fatto il login, possiamo leggere il suo livello e se esso e' uguale a 0 non consetirgli l'accesso a una data pagina. Una pagina di esempio potrebbe essere
<?php
session_start();
//livello 0 : no acceesso
//livello 1 : acceesso
$user=$_SESSION['tmputente']; //var di sessione
$pass=$_SESSION['tmppass'];
$livello=ritornalivello("$user","$pass");
if($livello>1){
//codice HTML della pagina
}
else{
echo "non sei autorizzato";
}
//ritorna livello da id
function ritornalivello($user,$pass){
mysql_connect("","","")or die("non riesco a connettermi");
mysql_select_db("db")or die("non riesco selezionare il database");
$liv=0;
$dati=mysql_query("select livello from utenti where username='$user' and password ='$pass'");
while($array=mysql_fetch_array($dati)){
$livello=$array[livello];
$liv=1; //ha trovato una riga
}
if($liv!=0) return $livello;
else return 0;
}
?>
Php Proteggere i moduli con la chiave di sicurezza
Obiettivo
In questo articolo tratteremo come proteggere i moduli con la chiave di sicurezza
Articolo
Spesso puo' capitare che qualche programma o sito esterno possano inserire dei dati nel nostro database tramite un nostro modulo sfruttando l'invio di dati post. La pagina che processa i dati del modulo, come fa a distinguere in quale sito si trova il modulo che sta inviando i dati. Potremmo mettere in questa pagina qualche controllo sull'indirizzo ip della pagina che effettua l'invio oppure possiamo creare una immagine che mostra mostra dei numeri che possono vedere solo coloro che rempiono i campi nel nostro modulo e non pagine esterne. La cosiddetta chiave di sicurezza. Per implementare questo meccanismo, il nostro server deve supportare le librerie grafiche gd. La funzione che scrive un testo in un'immagine e' la funzione
imagestring(identificare_img,dim_font,x_inziale,y_iniziale,testo,identificare_colore);
Nella pagina in cui vogliamo vedere l'immagine mettiamo:
<?php
$numgen=random(); print "<img border='1' src='prova.php?numero=$numgen'>";
function random(){
$numeri=array("a","b","c","d","e","f","g","h","i","1","2","3","4","5","l","m","n","o","p",
"q","r","s","t","u","v","z","w","x","k","j","y","6","7","8","9","0");
$pass="";
for($i=0;$i<=8;$i++){
$indice=rand(0,35);
$pass=$pass.$numeri[$indice];
}
$pas=crypt($pass);
$pas=substr($pass,0,5);
return $pas;
} ?>
La pagina prova.php che genera l'immagine è la seguente:
<?php
// Set the content-type
header("Content-type: image/png");
// Create the image
$im = imagecreate(80, 30);
$text=$_GET['numero'];
// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
// The text to draw
$text = random();
// Replace path by your own font path
imagestring($im, 10, 0, 10, $text,$black );
// Using imagepng()
imagepng($im);
imagedestroy($im);
?> 
<?
?>
nella pagina in cui mettiamo l'immagine, metteremo tutti campi del form, supponiamo di voler mettere il campo "note". Il nostro form sara' composto allora da due campi, in uno mettiamo il numero visto nell'immagine mentre nell'altro le note.
<form action="leggi.php?numero=$numgen" method="post">
<input type="text" name="numeroinserito">
<input type="text" name="note">
</form>
la pagina che leggera i dati "leggi.php" controllera' se il campo "numeroinserito" e' uguale alla variabile GET "numero".
<?
if($_GET['numero']==$_POST['numeroinserito']) {
//procedi
}
?> 
Php Ottimizzare tutte le tabelle
In questo articolo tratteremo come ottimizzare tutte le tabelle d un database Una tabella si ottimizza con comando sql:
'OPTIMIZE TABLE nome_tabella';
Per ottimizzare tutte le tsbella di un database in un sol colpo, occorre sapere il nome di esse
SHOW TABLE STATUS FROM nome_database
la riga 0 e' il nome della tabella
<?php
$dbname="definitivo";
$user="root";
$password="";
$host="localhost";
mysql_connect($host,$user,$password)or die("non riesco a connettermi");
mysql_select_db($dbname)or die("non riesco selezionare il database");
$local_query = "SHOW TABLE STATUS FROM ".$dbname.";";
$result = mysql_query($local_query);
if (mysql_num_rows($result)) {
while ($row = mysql_fetch_array($result)) {
$local_query = 'OPTIMIZE TABLE '.$row[0];
echo "OPTIMIZE TABLE : ".$row[0]."<br>";
mysql_query($local_query);
}
}
?> 
Php I moduli
Obiettivo
In questo articolo vedremo come si gestiscono i moduli in php.
I moduli
La funzione principale di un modulo è di acquisire l'input dell'utente per poi inviarlo a una pagina che gestirà i dati inseriti. Queste informazioni posso essere inviate a una pagina tramite GET e POST.
Get e Post
I dati inviati tramite il metodo get, sono dei dati inviati tramite la querystring cioe' i dati ad esempio di:
gestisci.php?nome=pippo&cognome=rossi
in questo caso, sono stati inviati due valori nome="pippo" e cognome="rossi". Questi valori possono essere letti tramite
$_GET['nome']
$_GET['cognome']
infatti se volessimo memorizzare in due variabili questi valori
$minome=$_GET['nome'];
$miocognome=$_GET['cognome'];
Diverso il ragionamento per l'invio di dati con il metodo post, vediamo un piccolo esempio.
Esempio
Un semplice modulo potrebbe essere:
<form method="post" action="salva.php">
<input type="text" name="indirizzo">
<input type="submit" value="invia">
</form> 
dove "method" specifica il metodo con cui inviare i dati che come ho detto sopra può essere GET o POST e
"action" indica la pagina a cui inviare i dati.
Come facciamo a ricevere le informazioni dalla pagina che contiene il form? E' molto semplice:
Consideriamo il form definito sopra, per vedere il contenuto di quello che abbiamo inserito basta scrivere:
<?php
echo $_POST["indirizzo"];
?>
cioè il nome che diamo al componente del form è il nome della variabile che viene passata.
Php login con http
In questo articolo tratteremo come creare una autenticazione tramite http in php. Occorre solo modificare $login e $password a proprio piacimento.
<?php
$LOGIN = "demo";
$PASSWORD = "demo";
function error ($error_message) {
echo $error_message."<BR>";
exit;
}
if ( (!isset($PHP_AUTH_USER)) || ! (($PHP_AUTH_USER == $LOGIN) && ( $PHP_AUTH_PW == "$PASSWORD" )) ) {
header("WWW-Authenticate: Basic entrer=\"Form2txt admin\"");
header("HTTP/1.0 401 Unauthorized");
error("Errore accesso");
}
?>
<HTML>
<BODY>
parte protetta ...
</BODY>
</HTML>
Php Leggere e scrivere il contenuto di un file
Obiettivo
In questo articolo tratteremo come leggere e scrivere in un file testuale di qualsiasi estensione.
Aprire e chiudere un file
Come prima cosa da fare, prima di poter leggere o scrivere il contenuto del file, questo deve essere aperto, dopodiche' possiamo fare cio' che vogliamo. Dopo dobbiamo chiudere il file. Per aprite un file usiamo la funzione
puntatore_al_file=fopen("nome del file", "modalita");
che ritorna 1 se tutto e' andato bene altrimenti 0. Questa funzione ha due parametri:
Il primo e' il nome del file
Il secondo e' la modalita' con cui questo file deve essere aperto. Essa puo' essere:
"r" lettura (read)
"w" scrittura (write)
"rw" lettura/scrittura (read/write)
A seconda di quello che dobbiamo fare. Il file viene poi chiuso con la funzione
fclose (puntatore_al_file);
Ad esempio supponiamo di voler aprire e chiudere un file per leggerne il contenuto
$news=fopen("file.txt","r"); 
fclose ($news);
Leggere i dati
In php, il contenuto di un file, puo' essere letto in tre modi:
Tutto in una volta
Riga per riga
Carattere per carattere
Noi vedremo come questo sia possibile per tutti e tre i casi.
Leggere il file in una volta
Per leggere il file tutto in un sol colpo dobbiamo usare la funzione
$contents = fread($handle, filesize($filename));
che ritorna il contenuto del file e prende come parametri il puntatore del file aperto e la dimensione del file che ci viene data dalla funzione
filesize("nome_del_file");
<?php
$filename = "file.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
echo "$contents";
fclose($handle);
?>
Leggere il file riga per riga
Per leggere il file riga per riga dobbiamo usare la funzione
$buffer = fgets($news, 4096);
che legge riga per riga il file. Ogni riga viene pero' passata come parametro da un ciclo while che cicla riga riga per riga il file fino a quando non incontra il carattere di fine file "EOF".
while (!feof($news)) {
$buffer = fgets($news, 4096);
}
<?php
$news=fopen("file.txt","r");  //apre il file
while (!feof($news)) {
$buffer = fgets($news, 4096);
echo "$buffer"; //riga letta
}
fclose ($news); #chiude il file
?>
Leggere il carattere per carattere
Per leggere il file carattere per carattere dobbiamo usare la funzione
fgetc();
che ritorna il carattere letto
<?php
$fp = fopen('file.txt', 'r');
while (false !== ($char = fgetc($fp))) {
echo "$char\n";
}
?>
Scrivere sul file
L'operazione di scrittura e' piu' facile di quella di lettura. Occore usare la funzione
fwrite(}
che scrive i dati sul file
<?php
$filename = 'file.txt';
$contenuto = "Prova di contenuto nel file\n";
$handle=fopen($filename,"w"); //apre il file fwrite($handle, $contenuto)
fclose($handle);
}
?> 
Php Leggere i dati da un database access
Obiettivo
In questo articolo tratteremo come leggere i dati da un database access
Articolo
Il modo in cui ci connetteremo al database access e' creando un oggetto COM
Esempio
<?php
//Connect Database
$dbfile='database.mdb';
$conn = new COM("ADODB.Connection") or die("Non riesco a connettermi");
$conn->Open(DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".$dbfile; );
$rs = $conn->Execute("Select * From tabella");
$tmp_result=$rs->Fields("count");
$result[$count]=$tmp_result->value;
echo "$count ==> $result[$count] <br>"; $rs->Close();
?>
Php Leggere valori da un file .csv
Obiettivo
In questo articolo tratteremo come leggere i dati da un file .csv e stampare i dati in una tabella html.
File .csv
Un file CSV è in realtà un file di testo formattato secondo certe regole, ma compatibile con i principali programmi per la trattazione di fogli elettronici come Excel. Le regole sono molto semplici: ogni riga contiene i dati che sono separati tra loro dal carattere ";"
Codice
Supponiamo che il file si chiami dati.csv e che sia composto da 4 colonne. Quello che dobbiamo fare e' semplicemente leggere ogni riga del file e poi suddividere le varie colonne, spezzando ogni colonna con il metodo
split(';', $riga)
che ritorna un array con tutti valori separati da ";".
ad esempio se avessimo:
$riga="pippo;pluto;paperino";
e facessimo
$valori=split(';', $riga)
avremmo un array con i valori {pippo,pluto,paperino}
<?php
print "<table border=1 width=90% >";
$fd= fopen ("dati.csv", "r");
$x=0;
while (!feof ($fd))
{
$riga=fgets($fd, 4096);
if($riga!="")
{
$arr=split(';', $riga);
print "<tr>";
print "<td>".$arr[0]."</td>";
print "<td>".$arr[1]."</td>";
print "<td>".$arr[2]."</td>";
print "<td>".$arr[3]."</td>";
print "</tr>";
$x++;
}
}
print "</table>";
fclose($fd);
?>
Php Leggere le email con php parte 1
In questo articolo tratteremo come leggere le email con php e il protocollo pop3. Le operazioni da compiere sono molto semplici. Innanzitutto occorre aprire una connessione
col server di posta tramite la funzione imap_open
int imap_open(string mailbox,string username,string password,int flasg);
che restituisce true se ha avuto successo e false altrimenti.
Il primo parametro è una stringa che indica il nome del server,il protocollo da usare per la connessione
e la porta di riferimento.
Nel nostro caso supponiamo di voler leggere le email con tiscali, la stringa potrebbe essere cosi:
$serverposta="pop.tiscali.it";
$userposta="pippo";
$passwordposta="clarabella";
if($inbox=@imap_open("{".$serverposta."/pop3:110}INBOX", $userposta, $passwordposta))
{ 
... operazioni da fare
}
per l'ultimo parametro a noi interessa come flag: 
OP_READONLY apre solo in lettura.
CL_EXPUNGE espelle le email automaticamente prima della chiusura della connessione. 
Per chiudere la connessione: 
imap_close($inbox);
per cui, per connetterci e disconnetterci dal server di posta: 
$serverposta="pop.tiscali.it";
$userposta="pippo";
$passwordposta="clarabella";
if($inbox=@imap_open("{".$serverposta."/pop3:110}INBOX", $userposta, $passwordposta)){ 
... operazioni da fare
}
imap_close($inbox);
Adesso vediamo come sia possibile vedere le email:
//Ricaviamo il numero dei messaggi
$totale_messaggi=imap_num_msg($inbox);
echo"<table>";
echo"<tr><td>Mittente</td><td>Oggetto</td><td>data</td><td>Dimensione kb</td></tr>";
//vediamo i messaggi
for($i=$totale_messaggi; $i>0; $i--)
{
$intestazioni=imap_header($inbox, $i);
$struttura=imap_fetchstructure($inbox, $i);
$mittente= nl2br($intestazioni->fromaddress); 
$intestazioni->subject=eregi_replace("=\?iso-8859-1*\?[Qq]\?", "", $intestazioni->subject); 
$oggetto=$intestazioni->subject;
$data=gmstrftime("%b %d %Y", strtotime($intestazioni->date));
$dimensione=ceil(($struttura->bytes/1024)); 
echo"<tr><td>$Mittente</td><td>$oggetto</td><td>$data</td><td>$dimensione</td></tr>";
}
echo"</table>";
Per cui alla fine:
Leggiemail.php
<?
set_time_limit(120); //di default è 30 , questo setta limit off a 120 secondi 
$serverposta="pop.tiscali.it";
$userposta="pippo";
$passwordposta="clarabella";
if($inbox=@imap_open("{".$serverposta."/pop3:110}INBOX", $userposta, $passwordposta)){ 
//Ricaviamo il numero dei messaggi
$totale_messaggi=imap_num_msg($inbox);
echo"<table>";
echo"<tr><td>Mittente</td><td>Oggetto</td><td>data</td><td>Dimensione</td></tr>";
//vediamo i messaggi
for($i=$totale_messaggi; $i>0; $i--)
{
$intestazioni=imap_header($inbox, $i);
$struttura=imap_fetchstructure($inbox, $i);
$mittente= nl2br($intestazioni->fromaddress); 
$intestazioni->subject=eregi_replace("=\?iso-8859-1*\?[Qq]\?", "", $intestazioni->subject); 
$oggetto=$intestazioni->subject;
$data=gmstrftime("%b %d %Y", strtotime($intestazioni->date));
$dimensione=ceil(($struttura->bytes/1024)); 
echo"<tr><td>$mittente</td><td>$oggetto</td><td>$data</td><td>$dimensione</td></tr>";
}
echo"</table>";
}imap_close($inbox);?>
Php Leggere le email con php parte 2 (verifica presenza allegati)
In questo articolo tratteremo come leggere le email con php e il protocollo pop3.
In questa seconda parte tratteremo come verificare la presenza di allegati.
Ci viene in aiuto una funzione:
<?
function checkAttachments($estMsg){
if(($estMsg->type!=0) && ($estMsg->type!=1))
{
return(true); // Text and multipart parts will not be shown as attachments
}
else{
if($estMsg->parts) // If there's no attachments, parts inside will be checked
{
$partMsg=$estMsg->parts;
$i=0;
// Parts will be checked while no attachments found or not all of them checked
while(!(checkAttachments($partMsg[$i])) && ($i<sizeof($estMsg->parts)))
{
$i++;
}
if($i==sizeof($estMsg->parts)){
return(false);
}
else{
return(true);
}
}
else{
return(false); // If no parts and text or multipart type, no attachments
}
}
}
?>
La quale ci dice se è presente o meno un allegato.Aggiungiamo questa nuova funzione a quelle precedenti.
Per cui alla fine: 
Leggiemail2.php 
<?
set_time_limit(120); //di default è 30 , questo setta limit off a 120 secondi 
$serverposta="pop.tiscali.it";
$userposta="pippo";
$passwordposta="clarabella";
if($inbox=@imap_open("{".$serverposta."/pop3:110}INBOX", $userposta, $passwordposta)){ 
//Ricaviamo il numero dei messaggi
$totale_messaggi=imap_num_msg($inbox);
 echo"<table>";
echo"<tr><td>All</td><td>Mittente</td><td>Oggetto</td><td>data</td><td>Dimensione</td></tr>";
//vediamo i messaggi
for($i=$totale_messaggi; $i>0; $i--)
{
$intestazioni=imap_header($inbox, $i);
$struttura=imap_fetchstructure($inbox, $i);
if(checkAttachments($struttura)){$all=1;}
else{$all=0;} 
$mittente= nl2br($intestazioni->fromaddress); 
$intestazioni->subject=eregi_replace("=\?iso-8859-1*\?[Qq]\?", "", $intestazioni->subject); 
$oggetto=$intestazioni->subject;
$data=gmstrftime("%b %d %Y", strtotime($intestazioni->date));
$dimensione=ceil(($struttura->bytes/1024)); 
echo"<tr><td>$all</td><td>$mittente</td><td>$oggetto</td><td>$data</td><td>$dimensione</td></tr>";
}
echo"</table>";
}
imap_close($inbox);
?>
Php Leggere le email con php parte 3 (leggere il contenuto)
In questo articolo tratteremo come leggere le email con php e il protocollo pop3.Nella seconda parte abbiamo trattato come verificare la presenza di allegati, ora tratteremo come leggereil contenuto dell'email.Creiamo la pagina che leggerà l'email.
leggimessaggio.php
<?
set_time_limit(120); //di default è 30 , questo setta limit off a 120 secondi
$serverposta="pop.tiscali.it";
$userposta="pippo";
$passwordposta="clarabella";
if($inbox=@imap_open("{".$serverposta."/pop3:110}INBOX", $userposta, $passwordposta)){
$intestazioni=imap_header($inbox, $id);
$struttura=imap_fetchstructure($inbox, $id);
echo"Da: <b>".htmlentities($intestazioni->fromaddress)."</b><br>";
echo"Per: <b>".htmlentities($intestazioni->toaddress)."</b><br>";
echo"CC: <b>".htmlentities($intestazioni->ccaddress)."</b><br>";
$intestazioni->subject=eregi_replace("=\?iso-8859-1*\?[Qq]\?", "", $intestazioni->subject);
echo"Oggetto:".quoted_printable_decode($intestazioni->subject)."</b><br>";
$data=gmstrftime("%b %d %Y", strtotime($intestazioni->date));echo"$data<br>";
echo"Dimensione:".ceil($struttura->bytes/1024)."</b><br>";
echo"Testo del messaggio:<br>"; $testo_mex=quoted_printable_decode(imap_fetchbody($inbox, $id, 1));
$testo_mex="<pre>".$testo_mex."</pre>";echo $testo_mex;imap_close($inbox);
?>
Per cui alla fine: 
leggiemail3.php 
<?
set_time_limit(120); //di default è 30 , questo setta limit off a 120 secondi 
$serverposta="pop.tiscali.it";
$userposta="pippo";
$passwordposta="clarabella";
if($inbox=@imap_open("{".$serverposta."/pop3:110}INBOX", $userposta, $passwordposta)){ 
//Ricaviamo il numero dei messaggi
$totale_messaggi=imap_num_msg($inbox); 
echo"<table>";
echo"<tr><td>All</td><td>Mittente</td><td>Oggetto</td><td>data</td><td>Dimensione</td><td>vedi</td></tr>";
//vediamo i messaggi
for($i=$totale_messaggi; $i>0; $i--)
{
$intestazioni=imap_header($inbox, $i);
$struttura=imap_fetchstructure($inbox, $i);
if(checkAttachments($struttura)){$all=1;}
else{$all=0;} 
$mittente= nl2br($intestazioni->fromaddress); 
$intestazioni->subject=eregi_replace("=\?iso-8859-1*\?[Qq]\?", "", $intestazioni->subject); 
$oggetto=$intestazioni->subject;
$data=gmstrftime("%b %d %Y", strtotime($intestazioni->date));
$dimensione=ceil(($struttura->bytes/1024)); 
echo"<tr><td>$all</td><td>$mittente</td><td>$oggetto</td><td>$data</td><td>$dimensione</td><td><a href=leggimessaggio.php?id=$i></a></td></tr>";
}
echo"</table>";
}
imap_close($inbox);
?>
Php Leggere le email con php parte 4 (cancellare email)
In questo articolo tratteremo come leggere le email con php e il protocollo pop3.
Nella seconda parte abbiamo trattato come verificare la presenza di allegati, nella terza come leggere
il contenuto dell'email ora come cancellare l'email.
Creiamo la pagina che cancellaerà l'email.
cancellamessaggio.php
<?php
set_time_limit(120); //di default è 30 , questo setta limit off a 120 secondi  $serverposta="pop.tiscali.it";
$userposta="pippo";
$passwordposta="clarabella";
echo"Messaggio cancellato!";
$inbox=@imap_open("{".$serverposta."/pop3:110}INBOX", $userposta, $passwordposta,CL_EXPUNGE);
imap_delete($inbox,$id);
imap_expunge($inbox);
//$check = imap_mailboxmsginfo($inbox);
imap_close($inbox);
?>
Per cui alla fine: 
leggiemail4.php
<?
set_time_limit(120); //di default è 30 , questo setta limit off a 120 secondi 
$serverposta="pop.tiscali.it";
$userposta="pippo";
$passwordposta="clarabella";
if($inbox=@imap_open("{".$serverposta."/pop3:110}INBOX", $userposta, $passwordposta)){ 
//Ricaviamo il numero dei messaggi
$totale_messaggi=imap_num_msg($inbox); 
echo"<table>";
echo"<tr><td>All</td><td>Mittente</td><td>Oggetto</td><td>data</td><td>Dimensione</td><td>vedi</td><td>cancella</td></tr>";
//vediamo i messaggi
for($i=$totale_messaggi; $i>0; $i--)
{
$intestazioni=imap_header($inbox, $i);
$struttura=imap_fetchstructure($inbox, $i);
if(checkAttachments($struttura)){$all=1;}
else{$all=0;} 
$mittente= nl2br($intestazioni->fromaddress); 
$intestazioni->subject=eregi_replace("=\?iso-8859-1*\?[Qq]\?", "", $intestazioni->subject); 
$oggetto=$intestazioni->subject;
$data=gmstrftime("%b %d %Y", strtotime($intestazioni->date));
$dimensione=ceil(($struttura->bytes/1024)); 
echo"<tr><td>$all</td><td>$mittente</td><td>$oggetto</td><td>$data</td><td>$dimensione</td><td><a href=leggimessaggio.php?id=$i></a></td><td><a href=cancellamessaggio.php?id=$i></a></td></tr>";
}
echo"</table>";
}
imap_close($inbox);
?>
Php Leggere e scivere il contenuto di un cookies.
Obiettivo
In questo articolo tratteremo come gestire i cookies con php.
I cookies
I cookies che in inglese significano "biscotti" sono un meccanismo per memorizzare i dati. Essi possono essere usati per ricordare il valore di variabili nel nostro computer. Una variabile che potrebbe essere per esempio l'ultima visita in un sito.
Articolo
In php, i cookies possono essere impostati tramite la funzione setcookie().La funzione è cosi definita:
int setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
questa definisce un cookie da spedire. I cookie devono essere spediti prima di qualsiasi altra intestazione quindi prima di qualsiasi tags html altrimenti avremo un errore del tipo:
Warning: Cannot add header information - headers already sent by (output started at f:\programmi\easyphp\www\nuovaversione\amico.php:5) in f:\programmi\easyphp\www\nuovaversione\amico.php on line 9
I cookie non vengono registrati subito, ma diventano disponibili soltanto dalla pagina successiva a quella che li ha generati o dopo averla ricaricata.
Tutti gli argomenti della funzione eccetto name sono opzionali.
L'argomento expire è un normale intero Unix Timestamp ottenibile grazie alle funzioni time() o mktime() di php. 
Ad esempio:
setcookie ("VariabileCookie", "prova");
setcookie ("VariabileCookie", $value,time()+3600); /* aspira in 1 ora */
setcookie ("VariabileCookie", $value,time()+3600, "/~percorso/", ".sastgroup.com", 1); 
Per cancellare i cookies spediti occorre ridefinire gli stessi cookies ma impostando la data in modo che sia antecedente a quella attuale,
facendo attenzione a specificare gli stessi parametri con cui sono stati creati. Ad esempio una data antecedente potrebbe essere: "time() - 3600".
setcookie ("VariabileCookie");
setcookie ("VariabileCookie", "", time() - 3600);
setcookie ("VariabileCookie", "", time() - 3600, "/~percorso/", ".sastgroup.com", 1); 
La variabile registrata nel cookies può essere vista in due modi: 
echo $_COOKIE['VariabileCookie'];
echo $HTTP_COOKIE_VARS["VariabileCookie"]; 
Invece di registrare delle singole variabili, possiamo registrare anche array di cookies. Il modo è molto semplice, basta usare 
la notazione degli array al posto del nome del cookie. Questo equivale alla spedizione di tanti cookie quanti sono gli elementi dell'array.
setcookie ("cookie[three]", "valoretre");
setcookie ("cookie[two]", "valoredue");
setcookie ("cookie[one]", "valoreuno");
if (isset ($cookie)) {
while (list ($name, $value) = each ($cookie)) {
echo "$name -> $value<br>";
}
} 
Php Leggere i dati da un file xml
Obiettivo
In questo articolo tratteremo caricare i dati da un file xml con php.
Il file xml
Innanzitutto occorre creare il file xml che chiameremo ad esmepio "dati.xml". Il nostro file sara' cosi' composto:
<xml version="1.0" encoding="utf-8"?>
<elenco>
<prodotto>
<marca>una marca</marca>
<modello>un modello</modello>
<codice>un codice</codice>
</prodotto>
<prodotto>
<marca>una marca</marca>
<modello>un modello</modello>
<codice>un codice</codice>
</prodotto>
</elenco>
Leggere il file xml
La lettura del file e' un'operazione standard, occorre solo modificare i campi che ci interessano infatti ho colorato i parametri che devono essere collegati e cambiati. I valori letti, sono messi in un array che e' possibile vedere nell'esempio.
<?php
$filename="dati.xml";
if( ! ($fp = fopen( "$filename" , "r" )) )die("Couldn't open xml file!");
$person_counter = 0;
$person_data = array();
$xml_current_tag_state = '';
function startElementHandler( $parser, $element_name, $element_attribs )
{
global $person_counter;
global $person_data;
global $xml_current_tag_state;
$xml_current_tag_state = $element_name;
}
function endElementHandler( $parser, $element_name )
{
global $person_counter;
global $person_data;
global $xml_current_tag_state;
$xml_current_tag_state = '';
if( $element_name == "PRODOTTO" ) 
{
$person_counter++;
}
}
function characterDataHandler( $parser , $data )
{
global $person_counter;
global $person_data;
global $xml_current_tag_state;
if( $xml_current_tag_state == '' )
return;
if( $xml_current_tag_state == "MARCA" ) {
$person_data[$person_counter]["marca"] = $data;
}
if( $xml_current_tag_state == "MODELLO" ) {
$person_data[$person_counter]["modello"] = $data;
}
if( $xml_current_tag_state == "CODICE" ) {
$person_data[$person_counter]["codice"] = $data;
}
}
if( !($xml_parser = xml_parser_create()) )
die("Couldn't create XML parser!");

xml_set_element_handler($xml_parser, "startElementHandler", "endElementHandler");
xml_set_character_data_handler($xml_parser, "characterDataHandler");
while( $data = fread($fp, 4096) )
{
if( !xml_parse($xml_parser, $data, feof($fp)) )
{
break; // get out of while loop if we're done with the file
}
}
xml_parser_free($xml_parser);
?>
<?php
for( $i=0 ; $i < $person_counter ; ++$i )
{
//$font_color = $person_data[$i]["alignment"] == "good" ? "#0000ff" : "#ff0000";
echo $i . "<BR>\n";
echo "marca: " . $person_data[$i]["marca"] . "<BR>\n";
echo "modello: " . $person_data[$i]["modello"] . "<BR>\n";
echo "codice: " . $person_data[$i]["codice"] . "<BR>\n";
//echo "nuovo_tag_xml: " . $person_data[$i]["nuovo_tag_xml"] . "<BR>\n"; //se vuoi aggiungere nuovo campo
echo "<BR>\n";
}
?> 
Php Inviare una email in formato html
Obiettivo
In questo articolo tratteremo come inviare una email in php.
Inviare una email
Per inviare una email in php occorre utilizzare la funzione
mail("mail_destinatario", "oggetto", "messaggio");
Per inviarla in formato html, dobbiamo preparare le intestazioni di tipo html
$intestazioni = "MIME-Version: 1.0\r\n";
$intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
$intestazioni .= "To: Sandro <sandrostracuzzi@hotmail.com>\r\n";
$intestazioni .= "From: Il_tuo_nome <il_tuo_indirizzo@example.com>\r\n";
dove
To: Sandro <sandrostracuzzi@hotmail.com>
indica il destinatario , mentre
From: Il_tuo_nome <il_tuo_indirizzo@example.com>
il mittente.
Codice
<?php
$destinatario = "Sandro <sandrostracuzzi@hotmail.com>";
$oggetto = "nuova email per te";
$messaggio = '
<html>
<head>
<title>Sono il titolo della email</title>
</head>
<body>
Sono il testo dell'email
</body>
</html>
';
$intestazioni = "MIME-Version: 1.0\r\n";
$intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
$intestazioni .= "To: Sandro <sandrostracuzzi@hotmail.com>\r\n"; 
$intestazioni .= "From: Il_tuo_nome <il_tuo_indirizzo@example.com>\r\n";
//dove To: indica il destinatario e From: il mittente
mail($destinatario, $oggetto, $messaggio, $intestazioni);
?>  
Php Input text con autocompletamento
In questo articolo tratteremo come creare una input text con autocompletamento che legge le parole da una tabella mysql. Un esempio di questo esempio in esecuzione è alla pagina www.sastgroup.com/ricerca.php. Il file javascript autosuggest.js è stato creato da Joe Kepley ed è in allegato. La tabella sql è:
CREATE TABLE `parole` (
  `id` int(11) NOT NULL auto_increment,
  `parola` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;
Inseriamo qualche parola:
INSERT INTO `parole` VALUES (1, 'java db');
INSERT INTO `parole` VALUES (2, 'motore di ricerca');
INSERT INTO `parole` VALUES (3, 'checkbox');
INSERT INTO `parole` VALUES (4, 'stile');
INSERT INTO `parole` VALUES (5, 'posizione');
Il codice della pagina in cui è in esecuzione l'autocompletamento è:
<HTML>
<HEAD>
<TITLE></TITLE> <style type="text/css">
.suggestion_list{background: white;border: 1px solid;padding: 4px;}
.suggestion_list ul{padding: 0;margin: 0;list-style-type: none;}
.suggestion_list a{text-decoration: none;color: navy;}
.suggestion_list .selected{background: navy;color: white;}
.suggestion_list .selected a{color: white;}
#autosuggest{display: none;z-index:99;width:287px;TEXT-ALIGN: left}
</style> <script language="Javascript" src="autosuggest.js"></script>
</HEAD>
<BODY> <div id="autosuggest"><ul></ul></div>
<FORM id=search action="resultcerca.php" method="post"> <INPUT type=text id="word" maxLength=100 size=44 name="word"></P> <script language="Javascript">
<?
echo"var parole = new Array(";
mysql_connect("localhost","miouser","miopassword")or die("non riesco a connettermi");
mysql_select_db("miodatabase")or die("non riesco selezionare il database");
$dati=mysql_query("select distinct parola from parole");
while($array=mysql_fetch_array($dati)){
echo"\"$array[parola]\",";
}
echo"\"\");";
?>
 </script>
 <script language="Javascript">
 new AutoSuggest(document.getElementById('word'),parole);
 </script> <P><INPUT class=button type=submit value=cerca></P> </FORM> </BODY>
</HTML> 
Php Inviare informazioni da javascript a php
Obiettivo
In questo articolo tratteremo come inviare informazioni da javascript a php
Articolo
Costruiremo una funzione javascript che restituira' lunghezza e larghezza dello schermo e passeremo queste informazioni a una pagina php chiamata "script.php".
<script>
function dati(){
var lun = window.screen.width
var lar = window.screen.height
u = new String();
u ="?lunghezza="+lun+"&larghezza="+lar;
return u;
}
</script>
<script>
document.write("<img src='script.php"+dati()+"' width='1' height='1' border='0'>");
</script>
alla pagina script.php è come se arrivassero ad esempio queste informazioni:
script.php?lunghezza=800&larghezza=600
e quindi questa pagina gestira' questi dati come meglio crede 
Php Un grafico a barre con php e le librerie grafiche gd
In questo articolo tratteremo come realizzare un grafico a barre con php e le librerie grafiche gd.
graficobarre.php
<form action="graficobarre.php" method="GET">
<table border=0>
<tr>
<td>valori</td>
<td>testo</td>
</tr>
<<tr>
<td>
<input type="text" name="uno">
</td>
<td>
<input type="text" name="due">
</td>
</tr>
<tr>
<td>es: 1,4,5</td>
<td>es: caio,pippo,marco </td>
</tr>
<tr><td colspan=2>
<input type="submit" value="Genera">
</td></tr>
</table>
</form>
<br>
<img src="disegnabarre.php?uno=<?echo $_GET['uno'];?>&due=<?echo $_GET['due'];?>">
disegnabarre.php
<?
header("Content-type: image/png");
$valori = array("0");
$valori_testo = array("nessuno");
$pezziuno = explode(",",$uno);
$pezzidue = explode(",",$due);
for($i=0;$i<count($pezziuno);$i++) {
array_push($valori,$pezziuno[$i]);
}
for($i=0;$i<count($pezzidue);$i++) {
array_push($valori_testo,$pezzidue[$i]);
}
$dimW=count($valori)*30;
$barraW=15;
$dimH=max($valori)+100;
$font = 'georgia.ttf';
//crea l'iimagine
$image=imagecreate($dimW,$dimH);
//crea i colori
//$sfondo=imagecolorallocate($image,232,228,211);
$bianco=imagecolorallocate($image,255,255,255);
$grigiodx=imagecolorallocate($image,136,140,144);
$grigiosx=imagecolorallocate($image,201,206,211);
$grigioscuro=imagecolorallocate($image,171,176,181);
$nero=imagecolorallocate($image,0,0,0);
$blu=imagecolorallocate($image,0,0,255);
$rosso=imagecolorallocate($image,255,0,0);
//disegna linea ascissa,ordinata
imageline($image,30,0,30,$dimH-41,$nero);
imageline($image,30,$dimH-41,$dimW,$dimH-41,$nero);
//Add the text a sx
for($i=0;$i<$dimH;$i=$i+20) {
if($i>20){
imagettftext($image, 10, 0, 3, $dimH-$i, $nero, $font, $i-40);
imageline($image,31,$dimH-$i,$dimW,$dimH-$i,$grigiosx); //disegna linea orizzontale
}
}
// Add the text in basso
for($i=1;$i<count($valori);$i++) {
imagettftext($image, 10, 0, $i*20+20, $dimH-20, $nero, $font, $i); //+20 per allinemamento
}
//disegna rettangoli
for($i=1;$i<count($valori);$i++) {
//disegna rettangolo pieno
imagefilledrectangle($image,$i*20+20,$dimH-$valori[$i]-40,$i*20+20+$barraW,$dimH-42,$grigioscuro);
/*effetto3d*/
imageline($image,$i*20+20+1,$dimH-$valori[$i]+1-40,$i*20+20+1,$dimH-42,$grigiodx); //up->bot
}
//disegna testo nei rettangoli
for($i=1;$i<count($valori);$i++) {
imagettftext($image, 12, 60, $i*20+20+7,$dimH-$valori[$i]+1-45, $nero, $font, $valori_testo[$i]);
}
//sastgroup.com
//imagettftext($image, 10, 0, $dimW/2-10, 10, $nero, $font, "www.sastgroup.com");
imagepng($image);
imagedestroy($image);
?> 
Php Creiamo una galleria dinamica di immagini
In questo articolo tratteremo come creare una galleria dinamica di foto. Il file php leggerà tutte le foto presenti nella cartella in cui viene posto e li metterà in una tabella.Per vedere le immagini, si aprirà una popup che sarà della dim dell'img stessa. I paranetri da settare sono:
$cartella="."; // .
$totale=0; //conta le img
$counttot=0;
$perriga=5; //img per riga
$w=80; //larghezza img
$h=80; //altezza img
$wtab="70%"; //larghezza blocco tabelle
Lo script è:
<script language="JavaScript">
function PrevFoto(img){
foto1= new Image();
foto1.src=(img);
Controlla(img);
}
function Controlla(img){
if((foto1.width!=0)&&(foto1.height!=0)){
viewFoto(img);
}
else{
funzione="Controlla('"+img+"')";
intervallo=setTimeout(funzione,100);
}
}
function viewFoto(img){
largh=foto1.width+20;
altez=foto1.height+25;
stringa="width="+largh+",height="+altez;
finestra=window.open(img,"",stringa);
}
</script>
<style>
body{
font-family:verdana;
font-size:10;
}
table{
font-family:verdana;
font-size:10;
}
</style>
<?php
//1. popup img autoridim
//2. img ridimensionate con proprietà gd
//3. messe bene
$cartella="."; // .
$totale=0; //conta le img
$counttot=0;
$perriga=5; //img per riga
$w=80; //larghezza img
$h=80; //altezza img
$wtab="70%"; //larghezza blocco tabelle
//conta tutte le img
if ($handle = opendir($cartella)){
while (false !== ($file = readdir($handle)))
{
if ( $file!= "." && $file != "..")
{
if(is_file($file))
{
$pieces = explode(".", $file); //prende l'estensione
list(,,$ImageType) = getImageSize($file); // get image type
if($ImageType==1 || $ImageType==2 || $ImageType==3){
/* numeri img
GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP, IFF, JP2, JPX, JB2, JPC, XBM, or WBMP
*/
$totale++;
$counttot++;
$tutteleimg[]= $file;
}
}
}
}
closedir($handle);
}
echo"<table width=$wtab>";
while($totale>=0){
echo"<tr>";
for($j=$perriga;$j>0;$j--){
echo "<td>";
$totale--;
$a=$totale;
if(filesize($tutteleimg[$a])>0){
echo"<a href=\"JavaScript:PrevFoto('$tutteleimg[$a]');\"><img src=\"$tutteleimg[$a]\" border=\"0\" width=\"$w\" height=\"$h\" alt=\" ".filesize($tutteleimg[$a])." bytes\"></a>";
}
echo"</td>";
}
echo"</tr>";
}
echo"</table>";
echo"<br>";
echo"<b>totale img: $counttot</b>";
?>
Php Scrivere in un file word il contenuto di un file
Obiettivo
In questo articolo tratteremo come leggere il contenuto di un file di tipo testuale qualsiasi e scriverlo in un file word. 
Articolo
Quello che ci accingiamo a fare e' una cosa molto semplice: leggiamo il contenuto di un file in una variabile di nome $htmlFile e poi lo scriviamo in un file word.
L'unica cosa da fare e' settare l'header del file in modo corretto
header ("Content-type: application/msword");
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE") and !strstr($_SERVER["HTTP_UA_OS"], "Mac")) {
header ("Content-Disposition: filename=articolo.rtf"); // For IE
header ("Pragma: no-store"); // For IE
} else {
header("Content-Disposition: attachment; filename=articolo.rtf"); // For Other browsers
header ("Pragma: no-cache");
e poi utilizzare la funzione "echo" per stampare sul file i dati letti
<?php
header ("Content-type: application/msword");
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE") and !strstr($_SERVER["HTTP_UA_OS"], "Mac")) {
header ("Content-Disposition: filename=articolo.rtf"); // For IE
header ("Pragma: no-store"); // For IE
} else {
header("Content-Disposition: attachment; filename=articolo.rtf"); // For Other browsers
header ("Pragma: no-cache");
}
//puntatore al file da leggere
$handle = fopen($htmlFile, "r");
while (!feof($handle)) {
$dimsize = filesize($htmlFile); //dimensione del file
$buffer = fgets($handle, $dimsize); //legge riga per riga
echo("$buffer\n");//la stampa sul file word
}
fclose($handle);
?>  
Php Creare file autoconfigurante per leggere la posta con outlook express
In questo articolo tratteremo di come creare un file autoconfigurante per leggere la posta con outlook express.
<?php
header ("Content-type: application/text");
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE") and !strstr($_SERVER["HTTP_UA_OS"], "Mac")) {
header ("Content-Disposition: filename=configurazione.ins"); // For IE
header ("Pragma: no-store"); // For IE
} else {
header("Content-Disposition: attachment; filename=configurazione.ins"); // For Other browsers
header ("Pragma: no-cache");
} 
$popserver="pop.tiscali.it";
$smtpserver="smtp.tiscali.it";
$nameemail="NOME E COGNOME";
$indirizzoemail="ID@tiscali.it";
$poplogonname="ID";
$poplogonpassword="PASSWORD"; 
echo"[Internet_Mail]\n";
echo"POP_Server= $popserver\n";
echo"SMTP_Server= $smtpserver\n";
echo"Email_Name= $nameemail\n";
echo"Email_Address= $indirizzoemail\n";
echo"POP_Logon_Name= $poplogonname\n";
echo"POP_Logon_Password= $poplogonpassword\n"; ?>
Php Creare file autoconfigurante per la connessione a internet
In questo articolo tratteremo di come creare un file auto configurante per impostare la connessione di accesso remoto.  
<?php 
header ("Content-type: application/text");
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE") and !strstr($_SERVER["HTTP_UA_OS"], "Mac")) {
header ("Content-Disposition: filename=configurazione.ins"); // For IE
header ("Pragma: no-store"); // For IE
} else {
header("Content-Disposition: attachment; filename=configurazione.ins"); // For Other browsers
header ("Pragma: no-cache");
} 
$fornitore="tiscali.it";
$home="http://www.tiscali.it/";
$search="http://www.tiscali.it/search/";
$numerodacomporre="0942460000";
$user="";
$password=""; 
echo"[Branding]\n";
echo"Window_Title=Microsoft Internet Explorer fornito da $fornitore\n";
echo"Window_Title_CN=$fornitore\n";
echo"[URL]\n";
echo"Home_Page=$home\n";echo"Search_Page=$search\n";
echo"[Channel Add]\n";
echo"No Channels\n";
echo"[Entry]\n";
echo"Entry_Name=$fornitore\n";
echo"[Server]\n";
echo"Type=PPP\n";
echo"SW_Compress=Yes\n";
echo"PW_Encrypt=No\n";
echo"Network_Logon=No\n";
echo"SW_Encrypt=no\n";
echo"Negotiate_NetBEUI=no\n";
echo"Negotiate_IPX/SPX=no\n";
echo"Negotiate_TCP/IP=Yes\n";
echo"[TCP/IP]\n";
echo"Specify_IP_Address=No\n";
echo"Specify_Server_Address=No\n";
echo"IP_Header_Compress=Yes\n";
echo"Gateway_On_Remote=Yes\n";
echo"DNS_Address=No\n";
echo"DNS_Alt_Address=No\n";
echo"[Phone]\n";
echo"Dial_As_Is=Yes\n";
echo"Phone_Number=$numerodacomporre\n";
echo"Country_Code=39\n";
echo"Country_ID=39\n";
echo"[User]\n";
echo"Requires_Logon=Yes\n";
echo"Name=$user\n";
echo"Password=$password\n";
echo"Display_Password=Yes\n";
echo"[ConnectionSettings]\n";
echo"ApplyInsToConnection=$fornitore\n";
?> 
Php Eliminare eventuali tag html da un testo
Obiettivo
In questo articolo tratteremo come rimuovere gli evenentuali tag HTML da un testo
Articolo
La funzione che elimina da una stringa tutti i tag html e fa al caso nostro è:
strip_tag()
ad esempio:
$testo="<p>ciao</p>";
$testo=strip_tag($testo); 

Php Disegnare con le librerie grafiche gd
Obiettivo
In questo articolo tratteremo le api gd per il disegno con php.
Precisazioni
Una immagine creata con php è visualizzata da un codice tipo:
<img src="disegna.php" border="0">
dove "disegna.php" è il file php che genera l'immagine.
Header
Grazie alle librerie gd possiamo creare file di immagini di qualsiasi tipo ma, visto che il mio server supporta solo .png, lo faremo per questo tipo di immagini. Ma il ragionamento e le funzioni si estendono anche per gli altri tipi di immagini. Il file che genera la nostra immagine deve avere come riga iniziale, come header, ad esempio per i file png
<? header("Content-type: image/png"); ?>
cio' indica che si tratta di una immagine di tipo png.
Principi di disegno
Per disegnare dobbiamo acquisire un identificatore di immagine tramite la funzione
$image=imagecreate(400,300);
dove 400 e 300 sono le dimensioni della nostra immagine. Per disegnare l'immagine vera e propria e liberare la memoria usiamo
imagepng($image);
imagedestroy($image);
Mettiamo insieme il tutto e otterremo:
<?
header("Content-type: image/png");
$image=imagecreate(400,300);
imagepng($image);
imagedestroy($image);
?>
I colori
Per creare un nuovo colore,ci serve la funzione
imagecolorallocate($image,163,163,163);
che ritorna un identificatore di colore dove 163,163,163 sono gli rgb che vanno da 0 a 255 ad esempio:
$grigio=imagecolorallocate($image,163,163,163);
$bianco=imagecolorallocate($image,255,255,255);
$nero=imagecolorallocate($image,0,0,0);
Mettiamo insieme il tutto e otterremo una immagine con sfondo grigio:
<?
header("Content-type: image/png");
$image=imagecreate(400,300);
$grigio=imagecolorallocate($image,163,163,163);
imagepng($image);
imagedestroy($image);
?>
Linee e archi
Con gd e' possibile disegnare linee grazie alla funzione
imageline($image,x_iniziale,y_iniziale,x_finale,y_finale,$colore);
che ha come parametri in ordine l'identificatore dell'immagine, le coordinate x e y iniziali e x e y finali e il colore dell'immagine.
e archi grazie alla funzione
imagearc($image,int cx, int cy, int w, int h, int s, int e, int color);
disegna una ellisse centrata in "cx", "cy" . "W" e "h" specificano larghezza e altezza mentre "s" e "e" indicano i gradi di inizio rotazione e fine rotazione. Per cui ad esempio:
<?
header("Content-type: image/png");
//acquisisce identificatore immagine
$image=imagecreate(400,400);
//identificatore del colore
$bianco=imagecolorallocate($image,255,255,255);
$nero=imagecolorallocate($image,0,0,0);
//disegna linea
imageline($image,14,16,200,43,$nero);
//disegna arco
imagearc($image,50,50,100,100,0,180,$nero);
//disegna immagine
imagepng($image);
//libera memoria
imagedestroy($image);
Poligoni ripieni e non
I poligoni sono disegnati specificando un array di punti che si devono congiungere. ad esempio
$punti=array(20,30,40,50,60,70,100,200);
imagepolygon($image,$punti,count($punti)/2,$colore);
mentre per disegnare un poligono ripieno
imagefilledpolygon($image,$punti,count($punti)/2,$nero);
unendo tutto
header("Content-type: image/png");
$image=imagecreate(400,400);
$bianco=imagecolorallocate($image,255,255,255);
$nero=imagecolorallocate($image,0,0,0);
//punti
$punti=array(20,30,40,50,60,70,100,200);
//disegna poligono
imagepolygon($image,$punti,count($punti)/2,$nero);
//disegna poligono ripieno
imagefilledpolygon($image,$punti,count($punti)/2,$nero);
imagepng($image);
imagedestroy($image);
Rettangoli ripieni e non
I rettangoli sono disegnati dalla funzione
imagerectangle($image,int x1, int y1, int x2, int y2,$colore);
dove x1, y1 sono le coordinate in alto a sinistra mentre x2, y2 in basso a destra.
imagefilledrectangle($image,int x1, int y1, int x2, int y2,$colore);
per i rettangoli pieni unendo tutto
header("Content-type: image/png");
$image=imagecreate(400,400);
$bianco=imagecolorallocate($image,255,255,255);
$nero=imagecolorallocate($image,0,0,0);
//disegna rettangolo
imagerectangle($image,36,56,84,200,$nero);
//disegna rettangolo pieno
//imagefilledrectangle($image,36,56,84,200,$nero);
imagepng($image);
imagedestroy($image);

Php Criptare le password con l'algoritmo MD5 
(decriptare la password: http://www.insidepro.com/download/passwordspro.zip)
In questo articolo tratteremo come criptare le password con l'algoritmo MD5. Vedremo come esso sia possibile tramite la funzione php
md5("stringa");
dove "stringa" è la password da codificare.
Ad esempio quando effettuamo la registrazione potremmo avere un form con alcuni campi volere criptare il campo password:
<?
$utente = $_POST['utente'];
$password = $_POST['password'];
$indirizzo = $_POST['indirizzo'];
$telefono = $_POST['telefono'];
$password = md5($password);
$sql = mysql_query("insert into utenti(utente,password,indirizzo,telefono) values('$utente','$password','$indirizzo','$telefono')");
mysql_num_rows($sql);
?>
oppure quando vogliamo effettuare il login:
<?
$utente = $_POST['utente'];
$password = $_POST['password'];
$password = md5($password);
$sql = mysql_query("SELECT * FROM utenti WHERE utente='$username' and password='$password'");
mysql_num_rows($sql);
...
?>
Adesso vediamo come fare il ragionamneto analogo con la funzione di mysql
<?
$utente = $_POST['utente'];
$password = $_POST['password'];
$indirizzo = $_POST['indirizzo'];
$telefono = $_POST['telefono'];
$sql = mysql_query("insert into utenti(utente,password,indirizzo,telefono) values('$utente',MD5($password),'$indirizzo','$telefono')");
mysql_num_rows($sql);
?>
e fare il login:
<?php
$utente = $_POST['utente'];
$password = $_POST['password'];
$query = "SELECT * FROM utenti WHERE utente = $utente AND password = MD5( $password );";
?> 
Php Creare un file pdf con php
Obiettivo
In questo articolo tratteremo come realizzare un file pdf da un file txt o html.
Le api
Le api di cui faremo uso sono disponibili all' indirizzo http://www.ros.co.nz/pdf/ Sono librerie open-source quindi possiamo usarle a nostro piacimento. Il contenuto del file zip che scarichiamo è una cartella che contiene i font necessari e due file .php chiamati class.pdf.php,class.ezpdf.php. Gli altri files non servono. Per far funzionare questa libreria è necessario copiare i file nella directory in cui si trovano tutti gli altri file.
Funzionamento
Per far funzionare le api, dobbiamo includere il file
include ('class.ezpdf.php');
inizializzare la classe
$pdf =& new Cezpdf();
Leggere il contenuto del file o se si ha gia' una stringa e' la stessa cosa.
Scrivere la stringa con carattere ad esempio 8.
$pdf->ezText($contents,8);
$pdf->ezStream();
Codice
<?php
include ('class.ezpdf.php');
$link="file.txt";
$pdf =& new Cezpdf();
//imposto il font da usare
$pdf->selectFont('./fonts/Helvetica.afm');
//leggo il contenuto del file
$handle = fopen($link, "r");
$contents = fread($handle, filesize($link));
fclose($handle);
//tolgo gli eventuali tag html
$contents = strip_tags( $contents );
//scrivo il testo con dimensione del testo = 8
$pdf->ezText($contents,8);
$pdf->ezStream();
?> 
Php Creare un sistema di commenti agli articoli in php/mysql
Obiettivo
In questo articolo tratteremo come creare un sistema di commenti agli articoli:
Il database
La tabella sql sara' composta da 5 campi, il campo id e' solo per l'incremento:
"data" indica la data del commento
"id_art" indica l'id dell'articolo
"commento" e' il commento vero e proprio
"utente" e' la email di chi ha lasciato il commento
CREATE TABLE `commenti` (
`id` int(11) NOT NULL auto_increment,
`data` varchar(15) NOT NULL default '',
`id_art` varchar(12) NOT NULL default '',
`commento` longtext NOT NULL,
`utente` varchar(40) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM;
Il form
La pagina che mostra i commenti e contiene in form per inserirne uno nuovo è:
<?
$obj->connessione();
$dati=mysql_query("select * from commenti where id_art='$id' order by data desc");
while($array=mysql_fetch_array($dati)){
echo"$array[data] da";
echo"< href=mailto:$array[utente]>$array[utente]</><br>";
echo"$array[commento]<br>";
}
?>
<br>
<input type="button" vlue="link" onclick="document.theform.commento.innerHTML+='[][/]'">
<input type="button" vlue="codice" onclick="document.theform.commento.innerHTML+='[code][/code]'">
<input type="button" vlue="grassetto" onclick="document.theform.commento.innerHTML+='[b][/b]'">
<form method="post" action="savecomment.php" name="theform">
<input type="hidden" value="<?echo $id;?>" name="idart" >
Emil :<input type="text" value="" name="email"> <br>
Commento:<br><textarea rows=13 cols=60 name="commento"></textarea><br>
<input type="submit" vlue="Inserisci">
</form>
Salvare i commenti
La pagina svecomment.php che salva il commento nella tabella è:
<?
$data= date("d/m/y",time());
$new=$commento;
$new=str_replce("<?","&mp;lt;?",$new);
$new=str_replce("<?php","&mp;lt;?php",$new);
$new=str_replce("<","&mp;lt;",$new);
$new=str_replce("[]","< href=",$new);
$new=str_replce("[/]",">link</>",$new);
$new=str_replce("[code]","<p clss=codice>",$new);
$new=str_replce("[/code]","</p>",$new);
$new=str_replce("[b]","<b>",$new);
$new=str_replce("[/b]","</b>",$new);
$new = ereg_replce("\n","<br>",$new);
$dti=mysql_query("insert into commenti(data,id_art,commento,utente) vlues ('$data','$idart','$new','$email')");
?> 
Php Creare uno scrolling orizzontale di news scritte in un file di testo
In questo articolo tratteremo come creare un sistema per far scorrere le nostre news in orizzontale.
Le news vengono lette da un file di testo news.txt che potrebbe esere cosi fatto ad esempio.
Riga superiore: titolo della notizia, riga inferiore: link della notizia.
Novita nel sito 1
http://miosito.com/novita.php?id=6
Novita nel sito 2
http://miosito.com/novita.php?id=6
Occorre stare attenti all'andare a capo perchè è obbligatorio andare a capo dopo la notizia.
Nel file c'è la notizia poi si va a capo e poi il link e cosi via.
La parte di codice php che fa tutto il lavoro è qui sotto:
<?php
echo"<font face=verdana size=1>"; //setta qui font e dimensioni
echo"<MARQUEE scrollAmount=\"10\" scrollDelay=\"200\">";
$news=fopen("news.txt","r");
while (!feof($news)) {
$titolo = fgets($news, 4096);
$link = fgets($news, 4096);
if ($titolo!=$link){
echo "<a href=".$link.">".$titolo."</a>&nbsp;&nbsp;&nbsp;";
}
}
fclose ($news);

echo"</font>";
echo"</MARQUEE>";
?>
Php Creare un file xml al volo
Obiettivo
In questo articolo tratteremo come creare con php un file xml "al volo".Cioè quando clicchiamo sulla pagina spunta la finestra che ci chiede di salvare il file in formato .xml
Articolo
Occorre inpostare l'header come
header("Content-disposition: filename=index.xml");
header("Content-type: application/octetstream");
poi stampare con "echo" i tag.
Codice
index.xml è il nome del file da salvare.
header("Content-disposition: filename=index.xml");
header("Content-type: application/octetstream");
header("Pragma: no-cache");
header("Expires: 0"); 
echo"<elenco>";
echo"<nome></nome";
..
..
..
echo"</elenco>"; 

Php creare un foglio excel
Obiettivo
In questo articolo tratteremo come creare un semplice foglio excel in php.
Articolo
Il foglio excel è visto come una tabella di html , per cui la cosa che dobbiamo fare e' solo quella di creare un file con estensione .xls e stampare il codice html di una tabella. Per creare un file .xls dobbiamo settare l'header come
header
('Content-type: application/vnd.ms-excel');
Codice
<?php
header('Content-type: application/vnd.ms-excel');  
echo"<TABLE>";
echo"<TR><TD>2</TD></TR>";
echo"<TR><TD>3</TD></TR>";
echo"<TR><TD>=SUM(A1:A2)</TD></TR>";
echo"</TABLE>";
?>

Php Un contatore di accessi con file di testo
In questo articolo tratteremo come creare un contatore di accessi con un file di testo.Creiamo un file di testo conta.txt e gli diamo permessi di scrittura.Poi nella pagina che vogliamo sondare mettiamo: <?php
$file = "conta.txt";
$fp = fopen($file , "r");
$contents = fread($fp, filesize($file));
fclose($fp);
$contents++;
$fp = fopen($file , "w");
fputs($fp , "$contents");
fclose($fp);
echo $contents;
?>

Php conoscere utenti online
Obiettivo
In questo articolo tratteremo come conoscere gli utenti online con php/mysql
La tabella mysql
Le informazioni sui visitatori sono memorizzati in un database mysql. La tabella e' la seguente
CREATE TABLE useronline (
timestamp int(15) DEFAULT '0' NOT NULL,
ip varchar(40) NOT NULL,
file varchar(100) NOT NULL,
PRIMARY KEY (timestamp),
KEY ip (ip),
KEY file (file)
);
Il codice php
Quello che dobbiamo fare e' impostare il tempo (secondo) ogni quanto vogliamo contare il numero di persone online
$timeoutseconds = 300;
Il codice php che deve essere messo nella pagina in cui si vuole verificare la presenza dei visitatori è:
<?
$database = "MioDatabase";
$timeoutseconds = 300; //Valore di timeout in secondi
$timestamp=time();
$timeout=$timestamp-$timeoutseconds;
mysql_connect("localhost","mysql_user","mysql_pass");
mysql_db_query($database, "INSERT INTO useronline VALUES ('$timestamp','$REMOTE_ADDR','$PHP_SELF')");
mysql_db_query($database, "DELETE FROM useronline WHERE timestamp<$timeout");
$result=mysql_db_query($database, "SELECT DISTINCT ip FROM useronline WHERE file='$PHP_SELF'");
$utenti =mysql_num_rows($result);
mysql_close();
echo"Ci sono $utenti online";
?>

Php Un calendario in php
In questo articolo tratteremo come realizzare un semplice calendario in php.
<?php
function calendario($mese,$anno){
global $_GET;
if ($_GET['x'] == NULL){
$mese_ = $mese;
$anno_ = $anno;
}
else{
$mese_ = (int)strftime( "%m" ,(int)$_GET['x']);
$anno_ = (int)strftime( "%Y" ,(int)$_GET['x']);
$mese = $mese_;
$anno = $anno_;
}
$prev = mktime(0, 0, 0, $mese_ -1, 1, $anno_);
$next = mktime(0, 0, 0, $mese_ +1, 1, $anno_);
$human_month = array("error", "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" );
$settimana = array("Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom");
$colonne = 7;
$giorni = date("t",mktime(0, 0, 0, $mese, 1, $anno)); //giorni del mese in questione
$primo_lunedi= date("w",mktime(0, 0, 0, $mese, 1, $anno)); //Array_parte da 0
if($primo_lunedi==0){
$primo_lunedi = 7;
}
print("<table width=\"210\" colspacing=\"0\" border=\"0\">"); //table
print("<tr height=\"20\">\n\t\t<td colspan=\"".$colonne."\" align=\"center\"><a href=\"?x=".$prev."\"><<</a> <span>".$human_month[(int)$mese]." ".$anno_."</span> <a href=\"?x=".$next."\">>></a></td></tr>");
foreach($settimana as $val){
print("<td height=\"20\">".$val."</td>");
}
print("</tr>");
for($i = 1; $i<$giorni+$primo_lunedi; $i++){
if($i%$colonne+1==0){
print("<tr>");
}
if($i<$primo_lunedi){
print("<td> </td>");
}
else{
$giorno_= $i-($primo_lunedi-1);
$a = strtotime(date($anno_."-".$mese_."-".$giorno_));
$b = strtotime(date("Y-m-d"));
if($a != $b){
print("<td><a href=\"?x=".$a."\">".$giorno_."</a></td>");
}
else{
print("<td><a href=\"?x=".$a."\"><b>[".$giorno_."]</b></a></td>");
}
}
if($i%$colonne==0){
print("</tr>");
}
}
print("<tr height=\"30\"> </tr>");
print("</table>");
}
calendario(date("m"),date("Y")); ?>

Php Spezzare la visualizzazione di records in più pagine
Obiettivo
In questo articolo tratteremo come spezzare la visualizzazione di record su piu pagine
La tabella
la tabella da cui prendere i dati chiamata "utenti" e' cosi costituita:

nome | cognome
-------------------
pippo | franco
clara  | bella
tom   | select
Articolo
Quello che noi dobbiamo fare e' fare in modo di poter vedere in piu pagine tutti i record di questa tabella. Decidiamo di volerne vedere 50 per pagina. La cosa che dobbiamo sapere e' che esiste un comando sql che ci permette di vedere delle righe da un minimo a un massimo che fissiamo noi. Cioe' supponendo di voler vedere tutte le righe da 20 a 30, dovremmo fare la seguente query:
select * from utenti limit 20,30;
Capito questo ragionamento, vediamo come poterlo applicare al nostro caso. La prima cosa che dobbiamo fare e' sapere quante righe ci sono per cui dobbiamo contare tutte le righe con la funzione mysql_num_rows. Supponiamo che la pagina che visualizzi i dati sia utenti.php
<?
$numperpag=50;
$user='root';
$password='';
$host='localhost';
$database="prova";
$numperpag=50;
$minimo=$_GET['minimo'];
mysql_connect($host,$user,$password)or die("non riesco a connettermi");
mysql_select_db("$database")or die("non riesco selezionare il database");
$numresults = mysql_query("select * from utenti ");
$numrows = mysql_num_rows($numresults)or die ( "query errata"); //conta il numero totale degli utenti
if (empty($minimo))
{
$minimo = 0;
}
saputo questo ora possiamo impostare lo schema per la visualizzazione dei dati perche' dobbiamo ogni volta spostare minimo e massimo della visualizzazione mysql_connect($host,$user,$password)or die("non riesco a connettermi");
mysql_select_db("$database")or die("non riesco selezionare il database");
$dati=mysql_query("select * from utenti limit $minimo,$numperpag");
$numero_righe=mysql_num_rows($dati);
while($array=mysql_fetch_array($dati)){
echo"$array[cognome] $array[nome]<br>";
}
if ( $minimo >= 3){
$prevoffset = $minimo - $numperpag;
print "<a href=\"utenti.php?minimo=$prevoffset\">PREV</a>&nbsp;\n";
}
$pages = intval( $numrows / $numperpag);
if ( $pages < ( $numrows / $numperpag)){
$pages = ( $pages + 1);
}
for ( $i = 1; $i <= $pages; $i++){
$nuovominimo = $numperpag * ( $i-1);
if ( $nuovominimo == $minimo){
print "$i&nbsp;\n";
}else{
print "<a href=\"utenti.php?minimo=$nuovominimo\">$i</a>&nbsp;\n";
}
}
if ( ! ( ( $minimo / $numperpag) == ( $pages - 1)) && ( $pages != 1)){
$nuovominimo = $minimo + $numperpag;
print "<a href=\"utenti.php?minimo=$nuovominimo\">NEXT</a><p>\n";
}
echo"di $pages pagine";
echo"<br>Trovati $numero_righe records<br>";
?>

Autenticazione HTTP usando PHP
I meccanismi di Autenticazione HTTP sono disponibili in PHP solo quando questo viene usato come un modulo di Apache ed esso non è quindi disponibile nella versione CGI. In uno script PHP modulo di Apache, è possibile usare la funzione header() per inviare un messaggio di "Authentication Required" al browser dell'utente, provocando quindi l'apertura di una finestra contenente una richiesta di Nome utente/Password. Una volta che l'utente ha compilato i campi nome utente e password, l'URL contenente lo script PHP verrà richiamato nuovamente usando le variabili predefinite, PHP_AUTH_USER, PHP_AUTH_PW e PHP_AUTH_TYPE impostate con, rispettivamente: nome, password e tipo di autenticazione. Queste variabili predefinite possono essere trovate negli array $_SERVER e $HTTP_SERVER_VARS. Solamente il tipo di autenticazione "Basic" è al momento supportato. Fare riferimento alla funzione header() per ulteriori informazioni.

Nota sulla versione di PHP: Le variabili autoglobali, come $_SERVER, esistono in PHP dalla versione 4.1.0. $HTTP_SERVER_VARS è disponibile a partire da PHP 3.

Un frammento di script di esempio che richiede l'autenticazione da parte del browser su una pagina, potrebbe essere il seguente:

Esempio 17-1. Esempio di Autenticazione HTTP

<?php
 
if (!isset($_SERVER['PHP_AUTH_USER'])) {
   
header('WWW-Authenticate: Basic realm="Il mio realm"');
   
header('HTTP/1.0 401 Unauthorized');

   
echo 'Messaggio da inviare se si preme il tasto Cancel';
   
exit;
 
} else {
   
echo "<p>Ciao {$_SERVER['PHP_AUTH_USER']}.</p>";

   
echo "<p>Hai inserito {$_SERVER['PHP_AUTH_PW']} come tua password.</p>";
 
}
?>

Note sulla compatibilità: Fare molta attenzione quando si scrive codice per le intestazioni HTTP. Per ottenere la massima compatibilità con tutti i client, la paorla-chiave "Basic" deve essere scritta con una "B" maiuscola, la stringa realm deve essere racchiusa in virgolette doppie (non singole), ed esattamente uno spazio deve precedere il codice 401 nella linea di intestazione HTTP/1.0 401.
Invece di stampare semplicemente PHP_AUTH_USER e PHP_AUTH_PW, probabilmente si vorrà controllare la validità dello username e della password. Probabilmente inviando una chiamata al database, o cercando un utente in un file dbm.
Si faccia attenzione ad alcune versioni di Internet Explorer. Sembra che siano molto schizzinosi riguardo all'ordine delle intestazioni. Inviare l'intestazione WWW-Authenticate prima dell'intestazione HTTP/1.0 401 sembra sistemare le cose per il momento.
Al fine di prevenire che qualcuno scriva uno script che rivela la password di una pagina che era stata autenticata tramite un tradizionale meccanismo esterno, le variabili PHP_AUTH non verranno impostate se è abilitata l'autenticazione esterna per quella determinata pagina. In questo caso, la variabile REMOTE_USER può essere usata per identificare un utente autenticato esternamente. Così, $_SERVER['REMOTE_USER'].
Nota sulla Configurazione:
PHP usa la presenza di una direttiva AuthType per determinare se viene utilizzata l'autenticazione esterna. Evitare questa direttiva nel contesto dove si intende usare l'autenticazione con PHP (altrimenti ogni tentativo di autenticazione fallirà).
Si fa notare, però, che quanto scritto sopra non impedisce a qualcuno che controlla un URL non autenticato di sottrarre password da URL autenticati presenti sullo stesso server.
Sia Netscape Navigator che Internet Explorer cancellano la cache locale della finestra del browser, per quanto riguarda il realm, al ricevimento di una risposta 401 da parte del server. Questo è effettivamente un meccanismo di "log out" per l'utente, che lo forza a reinserire lo username e la password. Alcune persone usano questo per fare il "time out" dei login, o per rendere disponibili bottoni di "log-out".

Esempio 17-2. Esempio di Autenticazione HTTP che impone l'inserimento di nuovo username/password

<?php
 
function authenticate() {

   
header('WWW-Authenticate: Basic realm="Prova del Sistema di Autenticazione"');
   
header('HTTP/1.0 401 Unauthorized');
   
echo "Per poter accedere a questa risorsa occorre inserire una coppia login e password valide\n";
   
exit;
 
}
  
if (!isset($_SERVER['PHP_AUTH_USER']) || ($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) {
  
authenticate();
 
}
 
else {
  
echo "<p>Benvenuto: {$_SERVER['PHP_AUTH_USER']}<br>";

  
echo "Vecchio: {$_REQUEST['OldAuth']}";
  
echo "<form action='{$_SERVER['PHP_SELF']}' METHOD='POST'>\n";
  
echo "<input type='hidden' name='SeenBefore' value='1'>\n";
  
echo "<input type='hidden' name='OldAuth' value='{$_SERVER['PHP_AUTH_USER']}'>\n";
  
echo "<input type='submit' value='Ri autentifica'>\n";
  
echo "</form></p>\n";

 
}
?>

Questo comportamento non è richiesto dallo standard di autenticazione HTTP Basic, quindi non si dovrebbe mai fare affidamento su di esso. Test effettuati con Lynx mostrano che Lynx non cancella le credenziali di autenticazione al ricevimento del codice di risposta 401 da parte del server, quindi, premendo indietro e avanti nuovamente, darà nuovamente accesso alla risorsa, ammesso che le rispettive richieste di credenziali non siano cambiate. L'utente può però premere il tasto '_' al fine di cancellare le sue informazioni di autenticazione.
Si noti anche che questo non funziona con il server IIS di Microsoft e con la versione CGI di PHP a causa di una limitazione di IIS.
Nota:
Se è abilitato safe mode viene aggiunto lo uid dello script al realm dell'header WWW-Authenticate.

Spostare database Mysql da una macchina ad un'altra
Viste le numerose domande sull'argomento provo a schematizzare delle linee guida in merito, in modo da avere un unico thread di riferimento in cui approfondire anche il discorso.
1. Premesse:
1.1 Cos'è un dump di un database
Un dump non è altro che un file di testo generato dal DBMS (o da qualche interfaccia grafica come PHPMyAdmin) che contiene, nè più nè meno, una serie di comandi SQL che permettono di ricostruire il vostro database in modo identico all'originale su qualsiasi macchina esso venga interpretato.
Possiamo avere un dump dello schema (o struttura) che contiene esclusivamente i comandi necessari a ricostruire lo schema del database, senza istanziare i dati.
Possiamo avere anche un dump dei dati, che contiene solamente i comandi necessari a ripopolare lo schema con i dati originali.
E infine possiamo avere, ovviamente, un dump completo che contiene le istruzioni per ricreare sia lo schema che l'istanza (sia struttura che dati) del vostro database
Chiaramente per poter esportare un database la prima cosa da fare è eseguire un dump. Di seguito le istruzioni necessarie.
1.2 Esportare un database da linea di comando
Se sulla macchina sorgente (ad esempio il vostro PC locale) avete accesso root/admin, ovvero se siete abilitati a lanciare comandi dalla riga di comando, e se, sopratutto, avete i privilegi necessari sul DBMS, potete esportare facilmente un database con il seguente comando:
mysqldump nome_database -u root -p > nome_del_file_dump.sql
vi verrà chiesta la password di root, e di seguito verrà creato il dump del database indicato, con il nome file indicato.
NB: su macchine windows è possibile che mysqldump non sia registrato come comando di sistema, quindi per eseguirlo dovete prima di tutto recarvi nella directory bin del vostro MySQl [in una installazione standard di mysql 4.1 si trova a questo path "C:\Programmi\MySQL\MySQL Server 4.1\bin"]
1.3 Esportare un database da phpmyadmin
Se non abbiamo accesso shell, e non possiamo utilizzare tool alternativi come indicato più avanti, l'unica alternativa è installare phpmyadmin sulla macchina sorgente. Per istruzioni sull'installazione di phpmyadmin vi rimando ai link a fine pillola.
Una volta installato PHPmyadmin, dovremo selezionare il database [o eventualmente la singola tabella] che ci interessa esportare, usando il frame di sinistra dell'interfaccia grafica di phpmyadmin.
A questo punto troveremo, nel frame di destra, una barra di menu' in alto, che tra le altre cose presenta la voce "Esporta".
Clicchiamo su "Esporta" e ci troviamo di fronte la pagina per l'esportazione del database. La pagina è ricca di opzioni ma quelle utili e utilizzate più spesso sono le seguenti:
Struttura: da selezionare se volete esportare la struttura. Tra le sue sotto-opzioni potreste voler selezionare anche "Aggiungi DROP TABLE" che semplicemente verifica, al momento dell'importazione, se esiste già una tabella con lo stesso nome di quella che si sta importando, ed in tal caso la cancella prima di ricrearla. Senza questa opzione una situazione del genere produrrebbe un errore e non permetterebbe il completamento dell'importazione
Dati: da selezionare se volete esportare i dati del database. Chiaramente se usato in combinazione con la precedente consente un dump completo.
Salva con nome: questa opzione va selezionata se volete avere il dump su un file. Diversamente otterreste a video la lista dei comandi necessari al dump.
E' possibile selezionare un tipo di compressione, per ottimizzare il trasferimento dal server al client.
NB: come spiegato più avanti, dump troppo grossi potrebbero creare problemi a phpmyadmin in fase di importazione [in fase di esportazione non dovrebbero esserci particolari problemi].. per cui in certi casi si consiglia di fare un dump dell'intera struttura del database, e di seguito i dump delle singole tabelle.. accorpando magari quelle meno violuminose, ma dividendo anche in più files quelle più grosse.
Di norma questa operazione può esssere fatta anche con un semplice editor di testi, partendo dal file completo e stando attenti solamente a non spezzare le singole istruzioni. Più conveniente è invece lasciare questo compito all'applicazione con cui abbiamo eseguito il dump, se questa lo permette [le recenti versioni di phpmyadmin ad esempio permettono di impostare dei limiti sul numero di righe esportate, ma solo se facciamo i dump delle singole tabelle]
1.4 Alternative a phpmyadmin
Se state lavorando su un database mysql ma non state lavorando con PHP, potete usare altri strumenti (applicazioni eseguibili). Il web ne è pieno. Ad esempio su windows potete usare il valido Mysql front.
NB: se volete esportare un database remoto con questi tool, è necessario che Mysql permetta connessioni remote. Questra configurazione è però abbastanza rara, per ragioni di sicurezza.
2. Importare il dump sulla macchina di destinazione
Una volta ottenuto il dump dobbiamo importarlo sulla macchina di destinazione. Possiamo distinguere due casi principali:
1) Abbiamo accesso shell sulla macchina di destinazione (ovvero possiamo eseguirvi comandi.. che sia remota o meno)
2) Non abbiamo accesso shell sulla macchina di destinazione
2.1 Abbiamo accesso shell sulla macchina di destinazione
Se possiamo eseguire comandi sulla macchina di destinazione siamo a cavallo: in qualsiasi modo sia stato estratto il dump ci basterà caricare in remoto il file e lanciare i seguenti comandi:
mysqladmin drop nome_database -u root -p
[se vogliamo cancellare un precedente database con lo stesso nome]
mysqladmin create nome_database -u root -p
[se dobbiamo creare un database, vuoto, in cui importare il dump]
mysql nome_database -u root -p < nome_del_file_dump.sql
[l'importazione vera e propria]
Anche qui, dopo ciascun comando, vi verrà chiesta la password di root di MySQL.
Anche qui, se siamo su macchina windows, è possibile che il comando non venga riconosciuto dal sistema e sia necessario spostarsi nella directory bin di Mysql per poterlo eseguire.
Questo metodo, rispetto alle alternative da interfaccia grafica, richiede tempi di elaborazione notevolmente ridotti, e anche con dump di grosse dimensioni non dovremmo avere particolari problemi.
2.2 Non abbiamo accesso shell sulla macchina di destinazione
Se non abbiamo accesso shell sulla macchina di destinazione dovremo usare tool alternativi.
Possiamo distinguere due sottocasi:
2.2.1 Mysql permette accessi da remoto
Sebbene sia una configurazione rara per ragioni di sicurezza, MySQL potrebbe consentire l'accesso da remoto.
In questo caso possiamo utilizzare qualsiasi tool che dalla nostra macchina si connetta a quella remota ed vi importi il dump. Una qualsiasi applicazione eseguibile dovrebbe essere più performante di phpmyadmin in questo caso.
2.2.2 Mysql non permette accessi da remoto
Questa è una situazione molto comune, e potremmo trovarci in un brutto pasticcio se il dump è troppo pesante: PHPMyAdmin rischierebbe seriamente di andare in timeout durante l'importazione del database, complicandoci parecchio il lavoro.
Conviene dunque spezzettare il dump in più files, ed eseguirli uno alla volta. Vedere la sezione relativa all'esportazione da phpmyadmin (anche altri tool potrebbero avere cmq opzioni apposite, dunque documentatevi sul tool che intendete usare)
Per importare un file sql con phpmyadmin dobbiamo prima di tutto posizionarci sul database che ci interessa usare (eventualemnte creandolo prima), selezionandolo nel frame di sinistra.
A questo punto dalla barra di menù che troveremo in alto nel frame di destra cliccheremo su "SQL". Si aprirà una pagina con una textarea in cui inserire l'SQL che vogliamo eseguire. Alternativamente, ed è il nostro caso, potremmo selezionare un file dal campo successivo, e semplicemente inviare il form.
Come già detto, se il file non è troppo pesante non avremo particolari problemi e avremo importato il nostro database sulla macchina remota.
3. Link
Documentazione ufficiale di Mysql: http://www.mysql.com/documentation
Documentazione di php myadmin [la trovate anche in locale sulla macchina su cui il tool è installato]: http://www.phpmyadmin.net/home_page/docs.php
guida a phpmyadmin [freephp.it]: http://freephp.html.it/guide/lezioni.asp?idguida=9
Guida all'installazione di phpmyadmin [phpnews.it]: http://www.phpnews.it/content/view/117/80/