| Estrazione dei dati da un DB e visualizzazione in una pagina web impaginato in una Tabella | Estrazione dei dati da un DB e visualizzazione in una pagina Web |
| Un semplice REDIRECT | Controllo della lunghezza di un campo |
| Controllo che due campi siano differenti tra loro | Controllo dei dati di un form |
| Un menu a partire da un file di testo (txt) | Scrittura di informazioni da un form a un file di testo |
| Recupero dei dati da un form | Scelta multipla utilizzando le caselle di controllo, in un modulo |
| Leggere i contenuti di una cartella e creare il link ai files contenuti nella cartella stessa | Includere nelle pagine PHP pagine esterne |
| Collegamento ad un database MySQL | Connessione e controllo ad un database ed inserimento dei dati |
| Ottenere l'indirizzo IP della macchina | Inserire data e ora |
| Creare un semplice contatore | Generare file Excel da PHP (esempio delle tabelline) |
| La data in PHP | Inviare email da ambiente locale |
| Installazione di php5 e convivenza con php 4 [moduli di apache su windows] | Installare come modulo PHP 4.3.2 su Windows |
| Installare PHP 5.0.0b | Configurazione di PHP 4.3.2 in Apache 2.0.46 per Windows |
| Configurazione di Apache Web Server | User Authentication from a MySQL database |
| Autenticazione utenti con MySQL (con demo) | The Mail funcion |
| Random Image with Database | Tips per EasyPHP |
Estrazione dei dati da un db e visualizzazione in una
pagina web impaginato in una TABELLA (da "pagine web dinamiche")
<?php
*** EFFETTUARE UN COLLEGAMENTO AL PROPRIO SERVER MYSQL ***
#EFFETTUARE UNA SELECT PER SELEZIONARE I CAMPI DALLA TABLE
$sql="SELECT campo1, campo2, campo3 FROM <table> ORDER BY campo1";
$risultati_mysql=mysql_query($sql,$connessione);
$num_righe=mysql_num_rows($risultati_mysql);
if ( $num_righe == 0 ) {
echo "Spiacente, non ci sono informazioni";
} else {
# SE CI SONO DEI DATI, CREAIAMO UNA TABELLA GRAFICA
echo "<TABLE ALIGN=\"CENTER\" BORDER=\"8\">";
echo "<TR><TH>CAMPO1</TH><TH>CAMPO2</TH><TH>CAMPO3</TH></TR>";
while ($riga=mysql_fetch_array($risultati_mysql))
{
$nome=$riga["CAMPO1"];
$indirizzo=$riga["CAMPO2"];
$paese=$riga["CAMPO3"];
echo "<TR><TD>$nome</TD><TD>$indirizzo</TD><TD>$paese</TD></TR>";
}
}
mysql_close($connessione);
?>
</TABLE>
OPPURE
*** EFFETTUARE UN COLLEGAMENTO AL PROPRIO SERVER MYSQL ***
#EFFETTUARE UNA SELECT PER SELEZIONARE I CAMPI DALLA TABLE
$query = "select * from <table>";
$dbrisultato = mysql_query($query, $<nome database>);
print "<table border=\"1\">\n";
while ($line = mysql_fetch_array($dbrisultato, MYSQL_NUM))
{
print "\t<tr>\n";
foreach ($line as $col_value)
{
print "\t\t<td>$col_value<\td>/n";
}
print "\t</tr>\n";
}
print "</table>\n";
mysql_free_result($dbrisultato();
mysql_close($db);
?>
</body>
</html>
Estrazione dei dati da un db e visualizzazione in una
pagina web (da "pagine web dinamiche")
<?php
*** EFFETTUARE UN COLLEGAMENTO AL PROPRIO SERVER MYSQL ***
$sql="SELECT * FROM <table>";
$risultati_mysql=mysql_query($sql,$connessione);
#FUNZIONE CHE RESTITUISCE IL NUMERO DI RIGHE CONTENUTE NEL DB
$num_righe=mysql_num_rows($risultati_mysql);
if ( $num_righe == 0 ) {
echo "Spiacente, non ci sono informazioni";
} else {
# SE CI SONO DEI DATI CREA UN ARRAY (UNIONE DI RIGHE O COLONNE)
while ($riga=mysql_fetch_array($risultati_mysql))
{
#campo è quello che compare nel db
$nome=$riga["campo1"];
$indirizzo=$riga["campo2"];
$città=$riga["campo3"];
$paese=$riga["campo4"];
$ID=$riga["ID"];
# mostra i risultati sulla pagina web
echo "$nome : $indirizzo $città $paese<BR>";
}
}
mysql_close($connessione);
?>
Un semplice REDIRECT
| Form HTML | Form PHP |
| <FORM METHOD=POST ACTION="redirect.php"> Dove vuoi andare?<br> <SELECT NAME=url SIZE="3"> <OPTION SELECTED VALUE="http://www.yahoo.it"> Yahoo <OPTION VALUE="http://www.repubblica.it"> La Repubblica <OPTION VALUE="http://www.virgilio.it"> Virgilio <OPTION VALUE="http://www.php.net"> Sito PHP </SELECT> <INPUT TYPE="submit" VALUE="Go!"> </FORM> |
<?php header ("Location: $url"); #redirect.php ?> ================== |
Controllo della lunghezza di un campo
<?php
$lungh_nome=strlen($campo del modulo);
if ($lungh_nome <= 3) {
echo "Spiacente, il campo deve contenere almeno 3 caratteri";
echo "<BR><A HREF#\ "nome file.html\ ">Ritorna</A> al form";
} else {
echo "$campo del modulo va bene";
}
?>
Controllo che due campi siano differenti tra loro
if ( $ora_fine <= $ora_inizio ) {
echo "Spiacente, i due campi devono essere differenti";
Controllo dei dati di un form
<?php
$errore=false;
#controlla che il campo non sia vuoto
if ( $nome_campo == "" ) {
$errore=true;
echo "<BR>Spiacente, devi inserire il qualcosa";
} else {
echo " Grazie $nome_campo<BR>";
}
#controllo del campo "giorno della settimna"
if (sizeof($giorno_settimana) < "1") {
$errore=true;
echo "<BR> Spiacente, devi selezionare almeno un giorno";
} else {
echo "<BR> Confermiamo i giorni da te indicati ";
foreach ( $giorno_settimana as $valore ) {
echo "<BR><B>$valore</B>";
} # fine foreach
} # fine if
if ( $errore) {
echo "<BR>Non hai compilato tutti i campi, devi tornare al <A HREF=\"pagina
precedente.html\" >modulo</A> ";
}
?>
OPPURE
if (( !$primo_campo ) || ( !$secondo_campo ) || ( !$terzo_campo))
{
echo "Devi inserire i nomi in TUTTI i campi";
echo "Non tutti i campi sono stati riempiti, devi ritornare al <A HREF=\"names.html\"
>form</A>";
} else {
echo "Sto elaborando i campi";
}
?>
Un menu a partire da un file di testo (txt) - da Pagine web dinamiche
| Form HTML | Form PHP |
| EMPLOYEE.PHP <FORM METHOD=GET ACTION=nomination.php> |
<?php # nomination.php if (( $nome == "-- Nome Impiegato --" ) || ( $dipartimento == "-- Dipartimento --" ) || ($commento == "" )) { header ("Location: http://server/employee.php"); exit; } echo "<HTML>"; echo "<BODY>"; if (!$p_file = fopen("voti_impiegati.txt","w+")) { echo "Spiacente, non posso aprire il file voti_impiegati.txt"; echo "<BR>Si è verificato un errore, per favore ritorna al <A HREF=\"employee.php\" >form</A> per votare"; } fputs($p_file,"\n"); fputs($p_file,"Nome impiegato: $nome\n"); fputs($p_file,"Dipartimento impiegato: $dipartimento\n"); fputs($p_file,"Commenti : $commento\n"); fclose($p_file); echo "Grazie per il tuo voto a $nome"; passthru("cat voti_impiegati.txt | /bin/mail web_admin"); ?> |
Scrittura di informazioni da un form a un file di testo
| Form HTML | Form PHP |
| Form.htm <FORM METHOD=GET
ACTION="controllo.php"> |
<?php # controllo.php echo "<HTML><BODY>"; if (!$p_file = fopen("customer_file.txt","a+")) { echo "Spiacente, non posso aprire il file customer_file.txt"; echo "<BR>Si è verificato un errore, per favore ritorna al <A HREF=\" form.htm\" >form</A>"; } if (( !$primo_campo ) || ( !$secondo_campo ) || ( !$terzo_campo)) { echo "<BR>Devi riempire TUTTI i campi"; echo "<BR>Per favore, ritorna al <A HREF=\"form.htm\" >form</A>"; } else { echo "Sto elaborando i nomi<BR>"; fputs($p_file,"\n"); fputs($p_file,"1° campo # 1: $primo_campo\n"); fputs($p_file,"2° campo # 2: $secondo_campo\n"); fputs($p_file,"3° campo # 3: $terzo_campo\n"); fclose($p_file); echo "Ecco il contenuto del file..."; echo "<PRE>"; passthru("cat <percorso>/customer_file.txt"); echo "</PRE>"; echo "<BR>Ritorna al <A HREF=\"form.htm\">form</A>"; } ?> |
Recupero dati da un form
| Form HTML | Form PHP |
| SELEZIONE MULTIPLA <SELECT NAME="giorno_settimana[]" Multiple> <OPTION>Lunedì <OPTION>Martedì <OPTION>Mercoledì <OPTION>Giovedì <OPTION>Venerdì <OPTION>Sabato </SELECT> |
echo "I giorni della settimana scelti sono:
if (sizeof($giorno_settimana) >="1") { foreach ($giorno_settimana as $valore) { echo "$valore"; } } else { echo "non hai scelto"; { #fine dell'if sull'esistenza dell'array |
| SELEZIONE SINGOLA <SELECT NAME="giorno_settimana"> <OPTION>Lunedì <OPTION>Martedì <OPTION>Mercoledì <OPTION>Giovedì <OPTION>Venerdì <OPTION>Sabato </SELECT> |
echo "Il giorno della settimana scelto è:
$giorno_settimana |
| I pulsanti Radio sono questi:
Assegno <INPUT TYPE="RADIO" NAME="pagamento" VALUE="Assegno"> Carta di credito<INPUT TYPE="RADIO" NAME="pagamento" VALUE="Carta di credito"> Contanti <INPUT TYPE="RADIO" NAME="pagamento" VALUE="Contanti" CHECKED> |
echo "Hai scelto $pagamento"; |
| I pulsanti di
controllo (check) sono questi:
<input type="checkbox" name="pagamento" value="ON">Assegno</p> <p><input type="checkbox" name="pagamento" value="ON"> Check</p> |
echo "Hai scelto $pagamento"; (Vedi sotto) |
Recupero dei dati da un modulo
Il Php lavora spesso e voluntieri con i moduli Html; per questo motivo è molto importante vedere come recuperare i valori immessi dai visitatori nei form loro priposti.
Credo sia ben noto al lettore che i form Html possono inviare i dati con due metodi: il get (che genera una QueryString ed accoda i dati all'indirizzo fisico della pagina) ed il post (invio classico).
Si prenda come riferimento il seguente modulo:
<form method="post" action="form.php">
<input type="text" name="nome_campo">
<input type="submit" value="vai">
</form>
Vediamo un esempio di come recuperare i dati nel caso di un invio classico da un form col metodo post, al file form.php:
<?PHP
echo $HTTP_POST_VARS["nome_campo"];
?>
Se il form fosse stato inviato col metodo get, invece, avremo utilizzato il seguente comando:
<?PHP
echo $HTTP_GET_VARS["nome_campo"];
?>
Scelta multipla utilizzando le caselle di controllo in
un modulo
Per ottenere la scelta utilizzando la casella di controllo, bisogna
utilizzare IF. In parentesi ($a) è la variabile proveniente dalla pagina HTML:
if ($a)
echo " A<br>";
if ($b)
echo " B<br>";
if ($c)
echo " C<br>";
if ($d)
echo " D<br>";
if ($e)
echo " E<br>";
if ($f)
echo " F<br>";
if ($g)
echo " G<br>";
Leggere i contenuti di una cartella e creare il link ai
files contenuti nella cartella stessa
<HTML>
<BODY>
<TABLE WIDTH=40% ALIGN=CENTER BORDER=3>
<TR><TH>Elenco dei files disponibili</TH></TR>
<?php
#'.' è la cartella corrente nella quale vi trovate
$cartella = opendir('.');
while ($file=readdir($cartella)) {
$file_array[] = $file; //[] sono due parentesi [ ]
sort ($file_array); //facciamo l'ordine alfabetico
}
foreach ($file_array as $file) {
if ($file == ".." || $file == "." || $file =="download.php") {
//evitiamo che il file download.php sia visualizzato)
continue;
}
echo "<tr><td><center>";
echo "<a href=\"$file\">$file</a>";
echo "</center></td></tr>";
}
?>
</TABLE>
</BODY>
</HTML>
Includere nelle pagine PHP pagine esterne
Se noi utilizziamo sempre le stesse diciture per ogni sito (es. richiamo
di database, pagine esterne personalizzate), è possibile richiamarle, inserendo
nel codice le seguenti righe:
require ("connessione.php");
OPPURE
include ("connessione.php");
Ovviamente nel file connessione ci saranno le righe per il collegamento al
database (ad esempio):
<?php
$connessione=mysql_pconnect("localhost","","");
if (!$connessione) {
echo "Impossibile collegarsi al server MySQL!";
exit;
}
$db=mysql_select_db("test_utenti",$connessione);
if (!$db) {
echo "Impossibile selezionare il database test_utenti";
exit;
}
?>
Collegamento ad un database
#collegamento al database con controllo
dell'effettivo accesso
$connessione=mysql_connect("localhost","","");
if (!$connessione) {
echo "Impossibile collegarsi al server";
exit;
}
#seleziona il database (calendario) e controlla che effettivamente esista
$db=mysql_select_db("calendario",$connessione);
if (!db) {
echo "impossibile selezionare il db";
}
#inserisce dentro alla <table> (del db aperto - vedi sopra)
i campi indicati tra (x,x,x,x,x,x,x) con i <values> (valori) provenienti dalle
variabili (possono anche provenire da una pagina HTML). Inoltre, se la <table>
lo prevede, è possibile aggiungere campi ulteriori come '$REMOTE_ADDR','$oggi','$orario'
(oggi e orario devono essere variabili dichiarate precedentemente - vedi di
seguito in questa pagina):
$sql="INSERT INTO <table> (DOM1, DOM2, DOM3, DOM4, IP, DATA, ORA)
VALUES ('$risposta1','$risposta2','$risposta3','$risposta4','$REMOTE_ADDR','$oggi','$orario')";
#CONTROLLA SE LA SCRITTURA E' AVVENUTA CORRETTAMENTE E SEGNALARE CON UN
MESSAGGIO DI CORTESIA
if (!mysql_query($sql,$connessione)) {
echo "errore!";
exit;
} else {
echo "<b>LE VOSTRE RISPOSTE SONO STATE MEMORIZZATE CORRETTAMENTE. <BR>";
echo "GRAZIE PER LA COLLABORAZIONE</B>";
}
===================================
Il collegamento al server e a mysql
<?php
$location =
"localhost";
$username =
"username";
$password =
"password";
$database =
"database";
$conn =
mysql_connect("$location","$username","$password");
if (!$conn)
die ("Could not connect MySQL");
mysql_select_db($database,$conn)
or die ("Could not open database");
?>
Connessione e controllo ad un database ed inserimento
dei dati
#collegamento al database (senza parentesi uncinate <>). Il mancato
collegamento, fornisce esito negativo
$connessione=mysql_connect("<indirizzo IP del server>","<nome
utente>","<password>");
if (!$connessione) {
echo "Impossibile collegarsi al server";
exit;
}
#seleziona il database
$db=mysql_select_db("<nome database>",$connessione);
if (!db) {
echo "impossibile selezionare il db";
}
$oggi=(date("d-m-Y"));
$ora=(date("G:i"));
#in questo esempio verranno salvati i dati contenuti in campo1, campo2, oltre
all'indirizzo IP della macchina,
#del giorno e dell'ora in cui si effettua l'operazione di salvataggio.
$sql="INSERT INTO <nome tabella> (campo1, campo2, IP, oggi, ora)
VALUES ('$campo1','$campo2','$REMOTE_ADDR','$oggi','$ora')";
#CONTROLLA SE LA SCRITTURA E' AVVENUTA CORRETTAMENTE
if (!mysql_query($sql,$connessione)) {
echo "errore!";
exit;
} else {
#messaggio di cortesia
echo "<b>LE VOSTRE RISPOSTE SONO STATE MEMORIZZATE CORRETTAMENTE. <BR>";
echo "GRAZIE PER LA COLLABORAZIONE</B>";
}
#chiudiamo la connessione al server
mysql_close($connessione);
#fine delle informazioni
Ottenere l'indirizzo IP della macchina
In una pagina PHP basta inserire questa riga:
echo "Il tuo IP Address è: $REMOTE_ADDR<br>";
Inserire data e ora
In una pagina PHP basta inserire questa riga:
$oggi=(date("d-m-Y"));
$orario=(date("G:i"));
E richiamare il tutto con una voce di cortesia
echo "Oggi è il: $oggi e sono le $orario";
Creare un semplice contatore
Creare un file nominato contatore.php, oppure inserire in una pagina "php"
il seguente codice:
<?php
$file = ("contatore.txt");
$visite = file($file);
$visite[0]++;
$fp = fopen($file , "w");
fputs($fp , "$visite[0]");
fclose($fp);
echo $visite[0];
?>
Creare un file chiamato contatore.txt e dare i permessi di scrittura (al momento dell'upload)
777 o 666
Generare file excel da PHP (Tabelline)
Sfruttiamo la possibilità di Excel di leggere file HTML per produrre tabelle
scaricabili come foglio di lavoro.
Questo script consente di generare dinamicamente documenti Excel senza
instanziare oggetti COM lato server. Il tutto è fatto con poche righe di PHP.
Lo script imposta il Mime Type su quello di Excel (application/vnd.ms-excel),
sfruttando una caratteristica, presente già in Office 97, che consente a Word ed
Excel di leggere senza problemi documenti HTML. Inoltre, impostando l'header
Content-Disposition: inline; filename=FILENAME richiede al browser di scaricare
il file anziché aprirlo al suo interno. In seguito genera una tabella HTML che
verrà interpretata da Excel come un suo foglio di lavoro. Per semplicità
generiamo una semplice tabella pitagorica, ma nulla impedisce di prelevare i
dati da database o altre fonti.
Il file così generato e scaricato viene aperto correttamente sia da Excel che
dallo spreadsheet di OpenOffice.
Ecco il codice:
<?php
$filename="sheet.xls";
header ("Content-Type: application/vnd.ms-excel");
header ("Content-Disposition: inline; filename=$filename");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang=it><head>
<title>Titolo</title></head>
<body>
<table border="1">
<?
for ($i=1;$i < 11; $i++)
{
echo "<tr>";
for ($j=1; $j<11;$j++)
{
$a = $i * $j;
echo "<td>$a</td>";
}
echo "</tr>";
}
?>
</table>
</body></html>
La data in PHP
|
Codice PHP |
Risultato |
|
<? |
La data è il 14-09-2000 e sono le 15:10 |
Inviare email da ambiente locale
Quando si sviluppano in locale degli script in PHP che devono inviare email, molto spesso il test in locale non funziona perchè PHP non riesce a trovare il server SMTP da utilizzare per la posta in uscita.
Per fare in modo che PHP utilizzi il server SMTP a nostra disposizione è sufficiente aprire con un editor di testi, il file di configurazione di PHP che si chiama php.ini, situato nella directory principale del proprio sistema operativo (directory WINDOWS per XP), individuare la stringa smtp e settarla con il proprio server SMTP preferito.
Per esempio: se utilizzate Libero.it impostate la riga nel seguente modo:
smtp = smtp.libero.it
In questo modo sarete in grado di testare anche in locale gli script PHP che inviano
email...
Installazione di php5 e convivenza con php 4 [moduli di apache su windows]
Per quanto i passi per l'installazione di php5 siamo molto simili a quelli del php4, immagino che molti di voi gradiranno un paio di linee guida sintetiche e già testate.
In più potreste voler fare convivere il vostro caro e sicuro php4, con il nuovo e potenzialmente instabile e buggato php5 in modo da poter fare esperimenti con quest'ultimo ma poter ritornare tra le forti e sicure braccia di php4 in caso di problemi di qualsiasi natura.
Questo propone la pillolina:
1) Dei passi preliminari da compiere se volete far convivere php4 con php5.
2) Installazione di php5 come modulo di Apache in pochi semplici passi.
3) Aggiunta del supporto a mysql [che non è built-in come nella versione 4]
La guida si riferisce alla RC2 di PHP5 per windows [testato su win xp con apache 1.3.29], rilasciata qualche giorno fa. Se saranno necessari aggiornamenti con le prossime relase provvederò
Prerequisiti
Ovviamente do per scontato che abbiate installato già un webserver apache della serie 1.3.x.
Se non avete già installato Apache procuratevi l'ultima versione della serie 1.3.x ed installatela seguendo ad esempio la guida di freephp.it.
La versione 2 di Apache risulta ancora troppo instabile nel supporto di PHP quindi ve la sconsiglio a meno che non abbiate voglia/bisogno di testarla
Convivenza di php4 e php5
Questa sezione si rivolge a chi, avendo già installato una versione di php4, volesse provare la 5 senza eliminare la versione 4, e avendo la possibilità di alternare facilmente le due versioni.
Chi non avesse questa necessità può saltare questa parte e passare all'installazione di PHP5.
I passi da compiere sono davvero pochi:
1) Rinominare il proprio "httpd.conf" [il file di configurazione di apache che si trova appunto nella directory
"conf" all'interno della directory di apache] come "httpd.conf.4"... in questo modo avremo una sorta di backup del file di configurazione di apache già configurato per php4.
2) Nell'installare php4 avrete messo nella vostra directory "windows" o "winNT" un file
"php.ini".. fate un backup anche di questo rinominandolo in "php.ini.4"
3) Seguire le istruzioni per l'intallazione di php5, avendo però cura di installarlo in una directory diversa da quella di php4 [ad esempio se php4 si trovava in
"C:/php", php5 potreste installarlo in "C:/php5" come ho fatto io]
Una volta installato php5 avremo un "php.ini" e un "httpd.conf" configurati per PHP5, per passare al PHP4 basterà semplicemente:
1) rinominare questi file in "php.ini.5" e "httpd.conf.5" per backupparli
2) ripristinare le versioni per php 4 che avevamo precedentemente backuppato [quindi rinominare "httpd.conf.4" in
"httpd.conf" e "php.ini.4" in "php.ini"]
3) riavviare apache.
Con questo gioco di semplice rinomina dei due file possiamo dunque passare da php4 a 5 e viceversa ogni volta che vogliamo con molta semplicità
Dopo aver quindi backuppato i files passiamo ad installare php5 in un directory diversa da php4.
Installazione di PHP5 come modulo di apache 1.3.x su windows
Scaricate php5 da www.php.net [da qui scaricate la RC2 , ultima versione disponibile al momento], e scompattatela in una directory a scelta, ad esmepio in "C:/php5".
Entrate nella directory di PHP5 appena creata, copiate il file "php.ini-recommended" nella directory di windows [generalmente "C:\windows" o
"C:\winnt"] e rinominatelo in "php.ini".
Editiamo il file con wordpad o qualsiasi altro editor per cambiare due impostazioni:
1) Cercate con l'apposita funzione del vostro editor la direttiva "display error", ed impostatela su "On". Questo farà sì che gli errori vengano visualizzati in output sulla vostra pagina, esattamente come eravate abituati con php4.
2) Adesso cercate la direttiva "log error", ed impostatela su "Off" a meno che non vogliate avere un log degli errori che però nella maggior parte dei casi sarà inutile.
Altre direttive potete cambiarle in un secondo momento a seconda delle esigenze, a tale scopo consiglio una sempre utile lettura dei commenti inseriti all'interno del file php.ini e che ne spiegano appunto le direttive.
Adesso andiamo nella directory "conf" contenuta all'interno della directory di apache, individuiamo il file httpd.conf ed editiamolo sempre con il ostro editor preferito
[wordpad va benissimo ].
A questo punto ci sono due possibilità:
Se l'httpd.conf risale ad una precedente installazione di apache con PHP4 bisogna fare due
modifiche solamente:
1) individuate la riga "#LoadModule unique_id_module modules/mod_unique_id.so" sotto la quale avrete probabilmente una cosa tipo
"LoadModule php4_module C:/PHP/sapi/php4apache.dll" che si riferisce alla vecchia installazione di php4... cancellate questa riga e sostituitela con la seguente:
LoadModule php5_module C:/PHP5/php5apache.dll
dove a "C:/PHP5" sostituirete eventualmente il percorso della directory in cui avete scompattato i files di php5.
2) Individuate la riga "AddModule mod_setenvif.c", subito sotto dovreste avere qualcosa come
"AddModule mod_php4.c" che si riferisce anche in questo caso alla precedente installazione di php4.. quindi sostituitela con
"AddModule mod_php4.c"
Salvate e chiudete il file.
Se invece avete appena installato apache e il vostro httpd.conf è "vergine" dovrete fare le seguenti modifiche:
1) individuate la riga "#LoadModule unique_id_module modules/mod_unique_id.so" sotto la quale aggiungerete la seguente:
LoadModule php5_module C:/PHP5/php5apache.dll
dove a "C:/PHP5" sostituirete eventualmente il percorso della directory in cui avete scompattato i files di php5.
2) Individuate la riga "AddModule mod_setenvif.c", subito sotto aggiungete
"AddModule mod_php4.c"
3) Individuate la riga "AddType application/x-tar .tgz" e subito sotto aggiungete:
AddType application/x-httpd-php .php
4) Individuate la riga "<IfModule mod_dir.c>", nella riga successiva troverete qualcosa come
"DirectoryIndex index.html index.htm". Questa istruzione indica ad apache quali files cercare quando l'utente non esplicita il file richiesto, ma solo un
path, e l'ordine in cui questi files vanno cercati. Sarebbe quindi buona norma avere la seguente riga:
DirectoryIndex index.php index.html index.htm
Salvate e chiudete il file.
A questo punto avviando apache dovrebbe comparire qualcosa come "PHP/5.0.0RC2
running", e potrete sorridere perchè significherà che è andato tutto bene.
Se invece vi viene riportato qualche errore rileggete un po'.. e se qualcosa non è chiaro chiedete.
Aggiungere il suppporto a MySql
PHP5 a questo punto funziona, ma non riuscirete ad usare MYSQl in quanto il supporto non è built-in come per PHP4.
Se avete quindi necessità di usare MYSQL, sono necessari tre ulteriori passi:
1) tornate nuovamente al file php.ini che avevamo lasciato nella directory di windows, editatelo, ed individuate la seguente riga che si riferisce all'estensione di
mysql:
;extension=php_mysql.dll
per attivare l'estensione dovremo decommentare la riga, ovvero eliminare il punto e virgola iniziale.
2) Questo non basta: dobbiamo anche impostare il percorso della directory delle estensioni, quindi cerchiamo la riga:
extension_dir = "./"
e modifichiamola in:
extension_dir = "C:\php5\ext"
dove a "C:\PHP5" sostituirete eventualmente il percorso della directory in cui avete scompattato i files di php5.
3) Chiudiamo il php.ini, andiamo nella directory del PHP5, copiamo il file
"libmysql.dll" nella directory di sistema ["system32" se l'avete, altrimenti "system"] sovrascrivendo il vecchio file con lo stesso nome che dovrebbe essere presente [penso sia installato dall'installazione di
mysql.. quindi se non avete ancora installato mysql, fatelo, e successivamente ricordatevi di aggiornare la
dll].
A questo punto avviate apache... e buon PHP5
Vi prego di segnalare qualsiasi migloria o precuisazione riguardo la pillolina,
tnx.
Ottimo guido.. questa pillola cade proprio, come si sul dire "a fagiuolo". Proprio ieri sera ho installato php5 (con l'ultima versione di apache e l'ultima di
mysql) su Windows Xp.
Se permetti aggiungerei una cosa perchè ieri sera m'è capitato che, tentando di connettermi a mysql mi diceva "Errore non trovata libreria php_mysql.dll", nonostante avessi messo libmysql.dll nella cartella C:\windows\system32...
Ebbene non so se è una procedura canonica e/o richiesta, ma ho dovuto copiare la php_mysql.dll nella cartella C:\windows e dopo è andato tutto liscio come l'olio.
Installare come modulo PHP 4.3.2 su Windows
Questa pillola non vuole assolutamente prendere il posto dell' articolo
presente in http://freephp.html.it/ ben piu' dettagliato e approfondito, vuole
solo essere un how-to, senza troppe pretese/spiegazioni, di come installare PHP
4.3.2 [la versione stabile piu' recente] su Apache 1.3.28 e su Apache
2.0.47
Pertanto si suddividera' in 3 punti:
1 - Passaggi comuni per Apache 1 e 2
2 - Installazione su Apache 1.3.28
3 - Installazione su Apache 2.0.47
1 - Passaggi comuni per Apache 1 e 2
Create una cartella di nome tmp nel disco principale del vostro computer [che
sara' C:\] .
Create, sempre in C:\, la cartella PHP [C:\PHP\]. Mi raccomando tutto in
MAIUSCOLO.
Scaricate la versione 4.3.2 da questo link o da questo.
Scompattate il contenuto del file scaricato all' interno della cartella PHP
[assicuratevi di averci messo il contenuto e non altre sottocartelle].
Per essere sicuri bastera' entrare in C:\PHP\ e vedere se ci sono i files e le
varie cartelle e non un'altra sottocartella inutile contenente a sua volta il
resto.
Da questa cartella prendete il file php4ts.dll
[andate su opzioni cartella, visualizzazione e togliete la spunta da
"nascondi le estensioni per i file di tipo conosciuto" nel caso non
riusciate a leggere .dll .txt o altro accodato ai vostri files]
e copiatelo dentro la cartella system32 di windows [in caso di XP/Me/98SE] o
winnt [in caso di windows 2000].
Ora ad essere sincero non ricordo se Me e 98 hanno la system 32, se non la
trovate mettete il file dentro system.
Tornando nella cartella C:\PHP\ rinominate il file php.ini-recommended in
php.ini.
Ora con un doppio click dovrebbe aprirsi col notepad o il vostro "lettore
testo" di default.
Questo non e' altro che il file di configurazione di PHP.
Cercate in questo file appena copiato la stringa contenente display_errors e
mettete on, sia quella che display_startup_errors.
Cercate questa stringa ; Windows: "\path1;\path2" e li sotto
decommentate [decommentare = cancellare il punto e virgola davanti] e mettete in
maiuscolo il nome della cartella PHP [include_path = ".;c:\PHP\includes"].
Ancora sotto troverete la scritta extension_dir , mettete tra virgolette quanto
segue c:\PHP\extensions.
Decommentate piu' sotto la riga per upload_tmp_dir se volete testare uploads in
locale e indicate tra virgolette la cartella desiderata.
Ora cercate piu' sotto la serie di extensions e decommentate quanto segue:
extension=php_bz2.dll
extension=php_cpdf.dll
extension=php_crack.dll
;extension=php_curl.dll
extension=php_db.dll
extension=php_dba.dll
extension=php_dbase.dll
;extension=php_dbx.dll
;extension=php_domxml.dll
extension=php_exif.dll
;extension=php_fdf.dll
extension=php_filepro.dll
extension=php_gd2.dll
;extension=php_gettext.dll
extension=php_hyperwave.dll
;extension=php_iconv.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
extension=php_imap.dll
;extension=php_interbase.dll
extension=php_java.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
extension=php_mime_magic.dll
extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_msql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_printer.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
extension=php_sockets.dll
;extension=php_sybase_ct.dll
;extension=php_w32api.dll
;extension=php_xmlrpc.dll
;extension=php_xslt.dll
;extension=php_yaz.dll
extension=php_zip.dll
[ un copia e incola sarebbe il suo ... ]
Ora salvate il file e spostatelo all' interno della cartella windows o winnt ma
non chiudete la cartella perche' dobbiamo ancora fare un' ultima modifica a
seconda della versione di Apache.
2 - Installazione su Apache 1.3.28
Perche' scegliere la versione 1 ???
Perche' e' la piu' stabile e la piu' testata, assicurandovi quindi meno problemi
e maggior sicurezza.
Scaricate la versione 1.3.28 da questo link.
Lanciate con un doppio click l' installazione.
Clickate su Next
Clickate su I accept (leggetevi tutto ovviamente prima di accettare ... :quipy:
] e poi su Next.
Leggete tutto e Next di nuovo.
Scrivete localhost sul campo Network domain.
miopc sul campo sottostante e
miamail@casa.it nel terzo campo.
Lasciate Run as a service for All Users - Recommended e clickate su next.
Lasciate Complete e clickate su next.
Vi consiglio vivamente di lasciare quella cartella per l' installazione, quindi
next.
Ora clickate su install ... ora aspettate ... gia' fatto ?? miii ke skeggia di
pc !!!! [ LOL© (daniele©) ]
Clickate su finish.
Ora aprite internet explorer o il browser che volete e scrivete come indirizzo
http://localhost/ [se clickate qui dovrebbe essere la stessa cosa].
Provate anche http://miopc/ , sara' la stessa identica pagina e per entrambi i
casi ci sara' scritto:
Funziona! Il server Web Apache e' stato installato su questo sito Web!.
In caso contrario siete fagiani o lo e' il vostro PC, buttate via tutto e andate
a giocare con il cerchio in giardino [oppure rileggete e fate il secondo
tentativo].
Ora andate su:
Start -> Programmi -> Apache HTTP Server -> Configure Apache Server
-> Edit the Apache httpd.conf Configuration file
Se vi chiede con quale programma volete aprirlo, usate notepad e tanti
saluti.
Cercate questa riga
LoadModule foo_module modules/mod_foo.so
e li sotto troverete una serie di moduli con un # davanti, quindi
commentati.
Dopo l'ultimo, aggiungete questa riga ovviamente senza il # davanti.
LoadModule php4_module C:/PHP/sapi/php4apache.dll
poco sotto c'e' una riga con ClearModuleList, scorrette la lista di AddModule
fino all' ultimo e aggiungete quanto segue:
AddModule mod_php4.c
Ora cercate la linea contenente AddType application/x-tar .tgz e aggiungete
subito sotto quanto segue:
AddType application/x-httpd-php .php
Ora cercate la linea contenente questO : <IfModule mod_dir.c>
e li sotto sostituite la DirectoryIndex con questa:
DirectoryIndex index.php index.htm index.html
Aggiungete le estensioni che volete, sara' l'ordine di riconoscimento.
Salvate e chiudete questo file.
Ora tornate sul PHP.INI, che se non sbaglio dovrebbe essere dentro la cartella
windows o winnt e cercate la linea con scritto:
doc_root =
e aggiungete dopo l'uguale, quanto segue:
"C:\Programmi\Apache Group\Apache\htdocs"
Salvate e chiudete.
Ora tornate su
Start -> Programmi -> Apache HTTP Server -> Control Apache Server ->
Restart
Se tutto e' andato bene non dovrebbe dare errori e la finestra dos dovrebbe
andar via in pochi secondi.
Ora andate nella cartella htdocs all' interno di C:/Programmi/Apache Group/Apache/
e create un nuovo file che chiamerete info.php
Apritelo con notepad se non avete ancora un editor per i vostri files .php e
scrivete
<?php phpinfo(); ?>
salvate e chiudete.
Ora andate al seguente indirizzo:
http://localhost/info.php
e se vedete una schermata chilometrica, significa che e' tutto OK, avete
installato.
3 - Installazione su Apache 2.0.47
Perche' scegliere la versione 2 ???
Perche' siete pionieri e volete essere sempre aggiornati all' ultima velocissima
release !!!
Scaricate la versione 2.0.47 da questo link.
Lanciare il file di installazione di Apache2 con un doppio click.
Premere next, scrivere localhost nel primo spazio, il nome del PC nel secondo e
il vostro indirizzo email nel terzo.
Scegliere se farlo funzionare per tutti gli utenti [maledettamente consigliato]
o solo per questo.
Clickare next, next e ancora next, fino al tasto finish [isi no ???].
Lanciare IE o il browser preferito e scrivere http://localhost/ [ puoi anche
clickare qui ]
oppure http://nomesceltoperilpc/
Se leggete qualcosa, significa che e' tutto OK, altrimenti siete fagiani o lo e'
il vostro PC, buttate via tutto e andate a giocare con il cerchio in giardino
[oppure rileggete e fate il secondo tentativo].
Andate su:
Start - Programmi - Apache HTTP Server - Configure Apache - Edit Apache HTTPD.
Se vi chiede con che programma prirlo scegliete il notepad, va benissimo.
Una volta aperto cerchiamo questa riga LoadModule foo_module modules/mod_foo.so
Subito sotto noteremo una serie di moduli, andiamo all' ultimo di questa serie
ed aggiungiamo:
LoadModule php4_module C:/PHP/sapi/php4apache2.dll
Cerchiamo poi la riga contenente
AddType allows you to add to or override the MIME ed aggiungiamo subito sotto
AddType image/x-icon .ico quanto segue:
AddType application/x-httpd-php .php
Ora cerchiamo piu' su la seguente voce DirectoryIndex e modifichiamo quella
linea in questo modo:
DirectoryIndex index.php index.htm index.html
Aggiungete le estensioni che volete, sara' l'ordine di riconoscimento.
Salvate e chiudete questo file.
Ora tornate sul PHP.INI, che se non sbaglio dovrebbe essere dentro la cartella
windows o winnt e cercate la linea con scritto:
doc_root =
e aggiungete dopo l'uguale, quanto segue:
"C:\Programmi\Apache Group\Apache2\htdocs"
Salvate e chiudete.
Ora andate nella cartella htdocs all' interno di C:/Programmi/Apache Group/Apache2/
e create un nuovo file che chiamerete info.php
Apritelo con notepad se non avete ancora un editor per i vostri files .php e
scrivete
<?php phpinfo(); ?>
salvate e chiudete.
Riavviate il vostro PC, non necessario ma spesso utile.
Ora andate al seguente indirizzo:
http://localhost/info.php
e se vedete una schermata chilometrica, significa che e' tutto OK, avete
installato.
Spero non ci siano errori o dimenticanze e che vi sia stata utile
Installare PHP 5.0.0b
Scaricate la 5.0.0b
Seguire la procedura identica per la 4.3.2 ma decommentare solo queste
extensions nel PHP.INI
extension=php_bz2.dll
extension=php_cpdf.dll
extension=php_crack.dll
;extension=php_curl.dll
extension=php_db.dll
extension=php_dba.dll
extension=php_dbase.dll
;extension=php_dbx.dll
;extension=php_domxml.dll
extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_hyperwave.dll
;extension=php_iconv.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_java.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
extension=php_mime_magic.dll
extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_msql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_printer.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
extension=php_sockets.dll
;extension=php_sybase_ct.dll
;extension=php_w32api.dll
;extension=php_xmlrpc.dll
;extension=php_xslt.dll
;extension=php_yaz.dll
;extension=php_zip.dll
Copiare oltre la solita php4ts.dll anche l' iconv.dll nella system32.
APACHE 1 e 2
A seconda della versione di Apache scrivere
LoadModule php5_module C:/PHP/sapi/php4apache2.dll
// per Apache2
e
LoadModule php5_module C:/PHP/sapi/php4apache.dll
// per Apache 1, aggiungere in questo caso anche
AddModule mod_php5.c
per il resto e' tutto uguale, installare a vostro rischio e pericolo.
Per la versione compilata con MySQL, viso che in questa beta e' stato tolto il
built-in dello stesso, vedere questo link
http://forum.html.it/forum/showthre...&highlight=PHP5
gentilmente offerto dall' utonto .. ehm ..utanto . ehm utente pixer
Io usavo easyphp, oggi ho deciso di installare io php... non ho nessun
problema... solo il fatto che mi autoapre solo le pagine index.php... nella
wwwroot ... tutto qui.
io ho la htdocs, mi apre le pagine li e in tutte le sottocartelle della htdocs,
perche' e' quella la directory di default o la directory base, la htdocs
Installing PHP for Apache as module
Now that version 4.1 introduces a safer sapi module, we recommend
that you configure PHP as a module in Apache.
To accomplish this, you have to load the php4apache.dll in your
Apache httpd.conf.
!! NOTE !!
Whereever you load php4apache.dll from, php4apache.dll also
needs the php4ts.dll also included in the PHP4 distribution.
php4apache.dll depends on php4ts.dll which is loaded as soon as
Apache loads php4apache.dll. If php4ts.dll can't be found, you
usually get an error like (also see the "Problems?" section at
the end of the file):
Cannot load c:/php/sapi/php4apache.dll into server
Mi sembra abbastanza importante....
So where does php4ts.dll has to be to be properly loaded ?
php4ts.dll is searched in the following order:
1) in the directory where apache.exe is start from
2) in the directory where php4apache.dll is loaded from
3) in your %SYSTEMROOT%\System32, %SYSTEMROOT%\system and
%SYSTEMROOT% directory.
Note: %SYSTEMROOT%\System32 only applies to Windows NT/2000/XP)
4) in your whole %PATH%
Note: What is %SYSTEMROOT% ? Depending on your Windows
installation this may be for example c:\winnt or C:\windows
Usually you would just copy it over to %SYSTEMROOT%\System32.
But if you want to have multiple PHP installations (for
whatever reason) this is a bad idea. For this circumstance the
safest thing is to let php4ts.dll reside in the same directory
where php4apache.dll is loaded from (see point 2 above).
direi che la metti in system32 la php4ts.dll
Ho istallato tutto. php funziona correttamente ma se c'è un errore nello script
mi visualizza una pagina bianca e non mi descrive l'errore.
cosa ho sbagliato?
devi avere le estensioni dei files visibili, senno' il .dll non lo vedi ( cmq
icona con le rotelle ... )
php.ini devi rinominare il recommended e metterlo nella cartella di windows, in
quella PHP puoi anche non lasciarla, li non serve.
Configurazione di PHP 4.3.2 in
Apache 2.0.46 per Windows
da http://naufraghi.free.fr/php/apache2_e_php.php
Questo è un mini corso per l'installazione e la configurazione di PHP
4.3.2 (come filtro) su macchine equipaggiate con Windows 9x/NT/ME/2000/XP e il
web server Apache
2.
Il supporto per Apache 2 è non è stabile da molto ed è supportato solo dalle
ultime release di PHP, che potete scaricare qua PHP
4.3.2 (mirror italiano).
Installazione PHP 4.3.2.
Dopo esserti procurato una copia della distribuzione di PHP (ad esempio su it.php.net,
mirror italiano) devi scompattarla in una directory di tua scelta, ad esempio
"C:\PHP\" (devi scaricare i binari per win32, e fra i due
il pacchetto più grosso, circa 6 Mb, quello completo di tutti i moduli).
Configurazione di PHP.
Individua il file "php.ini-dist" e copialo col nome
"php.ini" nella directory nella quale è installato il
tuo sistema operativo (solitamente "C:\WINDOWS" per
Windows 9x oppure "C:\WINNT" o "C:\WINNT40"
per Windows NT/2000/XP)
Modifica il file "php.ini" (ad esempio usando il notepad
di Windows) effettuando le seguenti operazioni:
Configurazione di Apache Web Server
Per informazioni più dettagliate sull'installazione di Apache controlla questa
pagina: Installazione
di Apache 2
Scarica Apache,
ho provato la versione la 2.0.46
funziona proprio bene, voi scaricate comunque l'ultima disponibile.
Una volta installato Apache (supponiamo in "C:\Programmi\Apache Group\Apache2\"):
Come si installa Php4
L'installazione su Apache per Win9x del nuovo PHP 4 è molto simile alla
precedente. Infatti ci sono delle piccole differenze al file di configurazione
di Apache rispetto alla versione precedente. Per questo di base partiremo da
quella seconda lezione in cui vi ho spiegato come installare il PHP 3,
spiegandovi le differenze e mettendo a confronto le operazioni.
Le prime operazioni, quelle che riguardava il file php3.ini (ricordate che
adesso quel file è cambiato e si chiama solo php.ini), la sua configurazione, il
caricamento dei moduli e la scompattazione della distribuzione in formato
binario è sostanzialmente la stessa.
Ma c'è da far un appunto. Ho notato che tutti i moduli sono caricati di default
anche se sono commentati. Infatti, cercando di attivare il modulo mySQL, ho
decommentato quella riga e mi sono ritrovato con l'engine piantato. Ho
ricommentato quella riga e tutto ha funzionato. Infatti anche nella pagina delle
info del server (ricordate: ) ho trovato che il supporto mySQL era attivo,
nonstante la riga che caricasse il modulo fosse commentata... vabbo', poco
male!!
Se ricordate nella precedente installazione vi ho fatto settare i parametri "extension_dir"
e "doc_root" nel file php3.ini. Questa volta vi basterà settare solo nel file
php.ini il parametro "extension_dir"... e ricordate quello che vi ho detto sui
moduli!!
Ora tocca alla parte differente rispetto alla versione precedente (ho fatto la
rima!!). Nel file httpd.conf di Apache le righe da inserire sono leggermente
differenti.
Nella versione precedente abbiamo aggiunto questo:
ScriptAlias /php3/ "c:/path-to-php-dir/"
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3 .phtml
Action application/x-httpd-php3 "/php3/php.exe"
Ora dobbiamo aggiungere questo (o basterà rimpiazzarlo se si sta facendo un
upgrade):
ScriptAlias /php4/ "c:/php4/"
AddType application/x-httpd-php .php3 .php
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php-source .phps
Action application/x-httpd-php "/php4/php.exe"
Ora se riprovate a far ripartire il server tutto dovrebbe non funzionare...
perché?
Perché c'è una differenza molto importante con la versione precedente che non fa
funzionare niente se non è svolta a dovere. Infatti ci sono due *.dll da mettere
nella odiata cartella c:\windows\system, altrimenti niente parte. I file sono "Msvcrt.dll"
e "php4ts.dll", che sono all'interno del pacchetto zip che avete scompattato.
Adesso, riavviando il web server tutto dovrebbe partire. Testate con la solita
pagina .
Tutto ok? Allora, è stato facile? Come sempre!!
Il supporto Zend
Come molti di voi avranno notato da quando è sorto lo sviluppo del nuovo PHP 4
una nuova casa produttrice di software sta accompagnando questo sviluppo. E' la
Zend. Questa società si è fatta carica della completa riscrittura dell'engine
che adesso utilizza un diverso sistema di lavoro che velocizza di molto la
restituzione delle pagine al client. Un enorme passo avanti per il PHP che avevo
proprio il suo punto debole nella velocità.
Ma non solo, Zend lavora ad altri software che accompagnano l'engine PHP. Ma per
questo vi invita a visitaro il loro sito: http://www.zend.com/. Vorrei solo
soffermarmi un attimo su uno solo dei componenti aggiuntivi del nuovo PHP. E' lo
Zend Optimizer. Installando questo software sul mio engine ho visto un
miglioramento sul già più che ottimo rendimento dell'engine senza accelleratore.
In due righe vi dico come farlo funzionare anche sul vostro engine. Andate al
sito della Zend, scaricate lo Zend Optimizer (ricordate che ci sono delle
versioni precise per ogni versione del PHP 4) che è gratis e scompattatelo in
una cartella a vostra scelta (io ho scelto c:\php4\zend ... giusto per non
riempire la root dell'hard disk con troppa roba!!). A questo punto prendete
questo codice:
zend_optimizer.optimization_level=7
zend_extension_ts="C:\php4\Zend\ZendOptimizer.dll"
ed inseritelo nel file php.ini... e siete a cavallo!! Non dovete fare più
niente... è già tutto ok! Il miglioramento in termini di velocità è sensibile e
si nota ad occhio! Provare per credere!!
User Authentication from a MySQL database
There are many ways to go about authenticating a user for your site, some are
more secure than others. The one that will be discussed here is doing the
authentication from a MySQL database.
To begin with, we will help you create the database that we will use to
authenticate off of. Keep in mind, this is a very simple tutorial and there are
many other ways for you to do this. Obviously, you'll need MySQL up and running
on your machine and know a bit about how to use it. If you don't know how to use
MySQL yet, poke around on the net and look for an introduction. I'm sure there
is one somewhere.
So, now that we have it up and running and ready to go, get to the mysql>
prompt,
get into the databse that you want to use (use <database>) and type in the
following:
CREATE TABLE user (
name VARCHAR (20),
password VARCHAR (20),
ID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (ID));
This will create a table with a name field for the username and a password field,
well, for the password. Right now, we will not worry with encrypting the
password or anything. It will just be plain text in there, viewable to anyone
that can view the database. You can change this later very easily if you want,
just encrypt it somehow.
Now, on to more important matters - how do I get the user's input? Easy. Just
whip up a little form that will do the work for you. Here's a sample example for
you: (this one includes a table around the form to make it look nice)
<form method=post action="<?echo $PHP_SELF?>">
<table cellpadding=2 cellspacing=0 border=0>
<td>Username:</td><td><input type="text" name="username"
size=10></td><tr>
<td>Password:</td><td><input type="password" name="password"
size=10></td><tr>
<td> </td><td><input type="submit" name="submit"
value="Log In"></td>
</table></form>
This form has spots for a username and a password with text boxes for both of
them. The last form item is the "submit" button. This allows the user to send
off the information when they have completed the form. Now, you'll notice that
not only does that button have a name of "submit" but that the form also
references the same page with the <?echo $PHP_SELF ?>. This allows you to do the
authentication on the same page as the form, reducing the number of pages
required on the site.
Next, we come to the actual script for the authentication. It's relatively
simple, especially if you have any experience with pulling information from a
MySQL database.
Here's some sample code for you to work with:
if ($submit) {
$db=mysql_connect("localhost","user") or die ("cant connect");
mysql_select_db("database",$db) or die ("cant change");
$result=mysql_query("select * from user where name='$username'",$db) or die ("cant
do it");
while ($row=mysql_fetch_array($result)) {
if ($row["password"]==$password) {
printf("Successfully Logged In!<a href="default.php?"'>Click Here</a>");
}
}
}
Now, let's take a look at this script. The first few lines are what you use to
tell the PHP what connection, database and table to look in. The first line
makes the connection to the MySQL database and assigns that connection to $db.
The next line chooses the database on the server using that connection. And the
third line is the part that actually does the query. It looks for all of the
records that have the value for $username in their "name" field from the
form.
The next section takes those results and checks them against the user input. It
gets the "password" field for the record selected and checks it against the user
input. If they match, the link will take them to a valid logged in page.
It's that easy! I hope that this tutorial has provided you with a bit of an idea
on how to create a user validation form, and again, I know that it is not the
most comprehensive, but it is simply an introduction to the idea behind
authenticating from a database.
Autenticazione utenti con MySQL (da "pagine web
dinamiche") -
Scarica qui la demo
Creare un database UTENTI con la seguente tabella: login (10 caratteri),
password (10 caratteri) ed eventualmente un ID (contatore)
La registrazione avviene con una normalissima pagine web (html/php)
<FORM METHOD="POST" ACTION="aggiungi.php">
<B>Inserisce un nome utente</B><BR>
<INPUT TYPE=TEXT NAME="login"><BR>
<B>Inserisci una password</B><BR>
<INPUT TYPE=PASSWORD NAME="password"><BR>
<B>Ripeti la password</B><BR>
<INPUT TYPE=PASSWORD NAME="password2"><BR>
RICHIAMIAMO OVVIAMENTE IL FILE AGGIUNGI.PHP
<?php
*** EFFETTUARE UN COLLEGAMENTO AL PROPRIO SERVER MYSQL ***
echo "<CENTER><B>Registrazione Utente</B><CENTER>";
$errore=false;
$errore_password=false;
#controlliamo che i campi login, password, password2 siano stati riempiti e che
password e password2 NON siano differenti
if (( $login == "" ) || ( $password == "" ) || ( $password2 == "" ) ) {
$errore=true;
}
if ( $password != $password2 ) {
$errore_password=true;
}
if ($errore) {
echo "<BR>Devi compilare tutti i campi";
}
if ($errore_password) {
echo "<BR>Le password inserite devono corrispondere";
}
if (($errore) || ($errore_password)) {
echo "<BR>Torna al modulo di<A HREF=\"aggiungi.php\"> registrazione</A>";
exit;
}
# Convalida OK
$sql="INSERT INTO utenti (login,password) VALUES ('$login','$password')";
$sql2="SELECT * FROM utenti WHERE login='$login' AND password='$password'";
# verifica l'esistenza di duplicati nella tabella utenti
$risultati_mysql=mysql_query($sql2,$connessione);
# sopprime gli errori con @
$num_righe=@mysql_num_rows($risultati_mysql);
if ( $num_righe != 0 ) {
echo "<BR>Questo nome utente è già in uso, scegline un altro. <A
HREF=\"aggiungi.php\">
Indietro</A>";
exit;
}
# Se non trova dei duplicati inserisce login/password
if (!mysql_query($sql,$connessione)) {
echo "Errore, impossibile inserire il record... Controlla MySQL";
echo "<BR><A HREF=\"register.php\"> Indietro</A>";
exit;
} else {
# inserimento OK, informa l'utente
echo "Tabella aggiornata [".mysql_affected_rows()."] record aggiunti<BR>";
echo "Benvenuto... Prendi nota delle informazioni che ti riguardano:<BR>";
echo "Nome utente:<B>$login</B> Password:<B>$password</B>";
echo "<BR>Vai alla pagina di accesso per gli <A HREF=\"loginpage.php\"> utenti
registrati</A>";
}
#chiudiamo la connessione
mysql_close($connessione);
?>
PAGINA DI LOGIN
<?php
*** EFFETTUARE UN COLLEGAMENTO AL PROPRIO SERVER MYSQL ***
$valido=false;
# l'utente ha inserito qualcosa
if (isset($PHP_AUTH_USER) && isset($PHP_AUTH_PW)) {
$sql="SELECT * FROM utenti WHERE login='$PHP_AUTH_USER' AND
password='$PHP_AUTH_PW'";
# esegue la query
$risultati_mysql=mysql_query($sql,$connessione);
# elimina gli errori con @
$num_righe=@mysql_num_rows($risultati_mysql);
if ( $num_righe != 0 ) {
$valido=true;
}
} # if isset
if (!$valido) {
header("WWW-Authenticate: Basic realm=\"Ehi! Cartella Riservata\"");
header("HTTP/1.0 401 Unauthorised");
echo "Autorizzazione Richiesta";
exit;
} else {
# OK convalidato
echo "<B>Benvenuto </B>";
echo "<BR>Vai nell'area dedicata agli <A HREF=\"members.php\"> utenti
registrati</A>";
}
mysql_close($connessione);
?>
MEMBERS.PHP
<?php
# members.php
if (!isset($PHP_AUTH_USER) && ! isset($PHP_AUTH_PW)) {
header("Location: login.php");
}
?>
#si inizia con un normalissimo documento HTML
<HTML>
<BODY>
<B> Ecco le novità...</B>
Tantissime informazioni riservate da offrire ai soli utenti registrati
</BODY>
</HTML>
The Mail() Function
The purpose of this little tutorial is to tell you all about a spiffy little
function. The mail() function is extremely useful when you want to provide that
little extra something to your website's users. Why just have a "Thank you
generic form" once they sign up when you could have a ultra-spiffy, customized
email sent directly to their inbox. There are tons of other possibilities that
this, but I'm only going to give you a general overview of the function and how
you can use it effectively.
So, let's get started with a few little preliminary things. First off, to be
able to use this command fully, you need to have a program such as sendmail or
the like running on your machine. If you don't have a default mailer, then your
messages will not be sent. Most hosting services provide this as a part of their
setup, so hopefully you will not have much trouble with this part.
Another thing to consider is where the messages are coming from. For the most
part, they will look like they are coming from some unknown address. For example,
when I send an email from my webhosting provider, it looks like it comes from
enygma@web5.webpipe.net. Now, obviously, I want it to come from enygma@phpdeveloper.org.
Now, unless you put a little thing in the headers section of the mail() function,
then it will still look like it's coming from the other, unwanted address. I'll
show you where to put this later on.
So, now that you've taken these things into consideration, we'll get started
with the actual function.
Here's the syntax:
bool mail (string to, string subject, string message [, string
additional_headers])
Now, let's break this down. First we have the fact that this is a boolean
function. This means that we can use the value of it (once it's done trying) to
tell whether or not the message was sent. (This is pretty useful in itself).
Next, the "string to" part is where you put who you want the email to go to (duh).
This can even be a list separated by a comma. The "string subject" part is self
explanitory, and the "string message" part is too. That last part is a bit
tricky, and also optional. You can stop with just the message part, but if you
want to add in any cool little header tricks, that last section is where they
go. Right here is, for example, where you can tell the emailer to make it seem
as if the message came from a certain email account. In this example:
mail("nobody@aol.com", "the subject", $message, "From: webmaster@$SERVER_NAMEnReply-To:
webmaster@$SERVER_NAME);
you can see how you can place multiple
things in the "additional_headers" section. This specific line tells the email
program to send an email to "nobody@aol.com" with the subject "the subject" and
containing the message of whatever the value of $message is. Then, when it hits
the header stuff, it tells it to make it look like it's coming from "webmaster@$SERVER_NAME"
where $SERVER_NAME is a variable that contains the machine's name. The second
part makes doubly sure that the email client knows where to send the email back
to. It specifies "webmaster@$SERVER_NAME" again for the "reply to" address.
There are tons of different things that you can use there to enhance your emails,
but I'm not going to go into detail here.
Now, let me show you a few examples just to get you started and then, you can
explore from there. First off, here's a nice simple one:
mail("foo@bar.com", "My Subject", "Line 1nLine 2nLine 3");
This just sends an email with the subject "My Subject" to foo@bar.com. The text
of the message will read:
Line 1
Line 2
Line 3
The reason that those are on different lines is the "n" in the message portion
of the function. This allows for much more flexibility with the command. You're
not just restricted to a single line of an email (That would not be fun).
Now, we'll use our example from above for the more complicated command:
mail("nobody@aol.com, foo@bar.com", "the subject", $message, "From: webmaster@$SERVER_NAMEnReply-To:
webmaster@$SERVER_NAME);
This time, we have more than once person to mail it to. This is done with the
comma list like I mentioned before. The subject part is the same. And one of the
more fun things that you can do, since this is a PHP function after all, is
combine the regular text with variables and treat them the same way. What this
means is that you can customize the email for the person/people that you are
sending it too without having to make a "form letter" that will fit everyone.
So, there you have it. A brief introduction to the mail() command. I hope that
this helps and that there will be some usefulness in all of this confusion.
I also dug up a handly reference for those pesky email headers just in case you
want to figure out which ones you really need. http://www.lyris.com/help/EmailHeaders.html
Random Image with a Database
This tutorial will show you a sample of how to generate a random number and how
to use that number to get a random item from a list. This example uses a MySQL
database to store the image names and URLs.
First off, we need to set things up. To get the database ready for input, we
have to create it. So, fire up your favorite way to do it and make the
database.rn<p>rn<hr>rnmysqladmin create images (or something similar).
Now, obviously, if you wanted to integrate this into a larger site, you can just
make another table inside the other database. Then, we move on to the table that
needs to contain the information. Get into the database (using the mysql command
line or your tool of choice) and make a database that is as follows:
CREATE table images(
filename VARCHAR(30),
url VARCHAR(50),
ID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(ID)
);
This sets up the slots for the name of the image file, the url that it will lead
to and, of course, our trusty ID field just in case.Now, on to the fun part, the
actual PHP script that makes the random number and selects a random images from
out database for us.
Here's the code, I'll explain it afterwards:
<?
db=mysql_connect("localhost","nomeutente","password");
mysql_select_db("images",$db);
$result=mysql_query("select * from images");
$row=mysql_num_rows($result);
srand((double)microtime()*1000000);
$random=rand(1,$row);
$imagenum=mysql_query("select * from images where ID=$random");
while ($image=mysql_fetch_array($imagenum)) {
printf("<a href='$image[2]'><img src='$image[0]' border=0></a>");
}
?>
First off, we just go and get all of the info from the database and count the
number of lines in it. This provides the top number to our random number.
Otherwise, we could get a random number of "30" when the number of entries in
the database is only 10. Then where would we be? The first four lines take care
of counting the rows and assigning that number to the variable $row.
Next, we move on to the randomness. The next two lines do all of the work for
you. The "srand" line uses the current time as a seed for the randomness, the
theory being that since the number is new each time, that you don't have to
worry about it being the same as the last one (That's the theory anyway). The
next line actually generates that random number using the "rand" function with
the barriers defined inside the (). In this case, from 1 to the value of $row.
It uses the seed from the srand function to make sure that the number in $random
is different. Now, hopefully, this number is different each time, but not always.
I mean, if you only have 4 or 5 entries in your database, the chances are more
likely that the same ones will be selected.
Anyway, the lines after that query the database once again and select a line
based on that random number and the ID field (now, aren't you glad we put that
in?). Then, it goes into the loop and prints the HTML code for the image and a
link around it. That's all! Pretty easy, eh? I hope so.
Test installazione PHP (PHPINFO)
Una volta installato il modulo per il linguaggio PHP su un Web Server è
possibile testarne il funzionamento scrivendo una semplice pagina web.
La pagina da creare è composta da un file con estensione .php, per esempio
phpinfo.php, da inserire nella DocumentRoot del Web Server, la quale deve
contenere al suo interno la chiamata a phpinfo(). Questa funzione restituisce in
output tutta una serie di valori riguardanti l'installazione del motore PHP sul
proprio server. Informazioni che vanno dai parametri di compilazione, alle
variabili d'ambiente ed il sistema operativo del server, fino alla licenza del
linguaggio.
<HTML>
<HEAD>
<TITLE>Test PHP</TITLE>
</HEAD>
<BODY>
<?php
phpinfo();
?>
</BODY>
</HTML>
Per motivi di sicurezza è comunque opportuno, se questa pagina viene lasciata ai
fini di test sul Web Server, assegnarle un nome non ovvio, e mantenerla in una
posizione protetta in quanto potrebbe rivelare informazioni determinanti ai fini
di un eventuale attacco.
Tips per EasyPHP
Come faccio ad aggiornare la mia versione di PHP?
0. Ferma i Servers
1. Scarica il file zip su http://www.php.net/
2. Decomprimilo nella directory principale di EasyPHP.
3. Rinomina la directory \php\ come \phpold\, per esempio! ( Fallo!)
4. Rinomina la cartella appena decompressa come \php\
5. Copia il file "c:\...\easyphp\php\sapi\php4apache.dll" nella cartella
"c:\...\easyphp\php\"
5. Sostituisci il file DLL "php4ts.DLL" della directory Windows\System con quello della cartella
"easyphp\php\sapi\".
6. E' suggerito sostituire il file php.ini (nella directory c:\windows\ disolito!) con il nuovo file php.ini che corrisponde alla nuova versione (Una copia del vecchio file può essere usata per configurare il nuovo alla stessa maniera con cui si è abituati)
7. Fai ripartire EasyPHP.
MySql non parte e restituisce questo messaggio: 'C:\PROGRA~1\EASYPHP\MySql\bin\mysqld.exe: Table 'mysql.host' doesn't exist' nel file Log degli errori di
MySql's
Potresti aver cancellato il database di MySQL! È assolutamente essenziale per il corretto funzionamento.
2 possibilità (scegli) per ovviare al danno:
Reinstalla EasyPHP
Decomprimi Questo file compresso (http://www.easyphp.org/telechargements/Mysql-db-safe.zip) nella cartella
EasyPHP\MySql\Data\MySql (potrebbe essere necessario crearla).
[1.7] How to connect to MySql from the outside
Edit the configuration file from MySql and comment the following ligne:
bind-address=127.0.0.1
[1.7] I get the"Server cannot be runned : another server use the requested port"
error.
Configure all your applications so that none use port 80 (used by Apache) nor 3306
(used by MySql).
To know which application uses one of those ports, scan your computer with
TCPView.
(Usual applications that may be using port 80 are, between others, Kazaa Lite, Norton Firewall
(proxy function), IIS (under XP Pro), Yahoo Messenger, Internet Security).
[1.7] Settings of firewall for local use.
In order for the Easyphp pack to operate correctly, the firewall must be set as below :
Authorise Apache.exe to listen to port 80.
Authorise Mysqld.exe to listen to port 3306
Authorise EasyPHP.exe to access to port 80 (Apache) from address 127.0.0.1
Authorise EasyPHP.exe to access to port 3306 (MySql) from address 127.0.0.1
Authorise Apache.exe to access to port 3306 (MySql) from address 127.0.0.1
Authorise Mysqladmin.exe to access to port 3306 (MySql) from address 127.0.0.1
To learn how to do that, read your firewall's documentation and help.