Programmare in PHP
....................................................Forum informatica>> ........Contatta l'autore del sito>>........
Il PHP è un linguaggio dinamico del web, esso permette di creare l'aspetto professionale detto (dinamico) del sito web, mentre è possibile collegare ad esso dei database per poter scrivere e leggere dati, di solito viene usato il database MY-SQL.
Qui di seguito, viene riportato l'esenziale dei codici PHP che vengono più usati per la gestione dinamica:
<?php
/************
francesco cutruzzulà - cutruzzula@s3data.com
script modificabile a proprio piacimento
************/
?>
<html>
<head>
<title>menu dinmico in php</title>
<style type="text/css">
a:link {text-decoration:none;color:black}
a:visited {text-decoration:none;color:black}
a:hover {text-decoration:none;color:red}
</style>
</head>
<body>
<table border="1" width="150" cellpadding="3" cellspacing="0" bordercolor="black">
<?
$php=array("free php"=>"http://freephp.html.it","zio budda"=>"http://www.ziobudda.net");
$javascript=array("jsdir"=>"http://www.jsdir.it","html point"=>"http://www.html.it");
$java=array("mokabyte"=>"http://www.mokabyte.it","programmazione.it"=>"http://www.programmazione.it");
?>
<tr><td bgcolor="silver"><font face="arial" size="3"><b><a href="menu.php?idmenu=php">php</a></b></font></td></tr>
<?
if($idmenu=="all" or $idmenu=="php")
{
foreach($php as $key=>$val)
{
echo "<tr><td bgcolor=\"aqua\"><font face=\"arial\" size=\"2\"><a target=\"_blank\" href=\"$val\">$key</a></font></td></tr>";
}
}
?>
<tr><td bgcolor="silver"><font face="arial" size="3"><b><a href="menu.php?idmenu=javascript">javascript</a></b></font></td></tr>
<?
if($idmenu=="all" or $idmenu=="javascript")
{
foreach($javascript as $key=>$val)
{
echo "<tr><td bgcolor=\"aqua\"><font face=\"arial\" size=\"2\"><a target=\"_blank\" href=\"$val\">$key</a></font></td></tr>";
}
}
?>
<tr><td bgcolor="silver"><font face="arial" size="3"><b><a href="menu.php?idmenu=java">java</a></b></font></td></tr>
<?
if($idmenu=="all" or $idmenu=="java")
{
foreach($java as $key=>$val)
{
echo "<tr><td bgcolor=\"aqua\"><font face=\"arial\" size=\"2\"><a target=\"_blank\" href=\"$val\">$key</a></font></td></tr>";
}
}
?>
<tr><td bgcolor="silver"><font face="arial" size="1"><a href="menu.php?idmenu=all">mostra tutti</a></font></td></tr>
<tr><td bgcolor="silver"><font face="arial" size="1"><a href="menu.php">nascondi tutti</a></font></td></tr>
</table>
</body>
CONTARE I CARATTERI E PORRE UNA CONDIZIONE
strlen (stringa)
Restituisce la lunghezza di una stringa, cioè il numero di caratteri contenuti (ricordare che una stringa può essere considerata come un array di caratteri).
if (strlen($stringa)=="1") { $stringa="00$stringa"; }
elseif (strlen($stringa)=="2") { $stringa="0$stringa"; }
function ControlloEmail($email){
$result = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$email);
if($result == false){
return false;
}else{
return true;
}
}
FORMAT
COME FORMATTARE I NUMERI:
<?php
// stampiamo 1/6 come 0.17 anziché 0.166666666667
echo number_format((1/6),2);
// se specificato il secondo argomento viene usata la virgola
// come separatore delle migliaia: 10000 diventa 10,000.00
echo number_format(10000,2);
// le cifre decimali saranno separate da v e
// le migliaia da p 3567,90 diventa 3p567v90
echo number_format(3567.90,2,"v","p");
?>
<?php
// la funzione stamperà il valore 14
echo strlen("Visita html.it");
?>
<?php
// stamperà "html.it" la porzione
// dalla posizione 7 alla fine
echo substr("Visita html.it",7);
// stamperà "html" partendo dalla
// posizione 7 per 4 caratteri di lunghezza
echo substr("Visita html.it",7,4);
?>
<?php
// stamperà "Visita" eliminando
// 8 caratteri a partire dalla fine della stringa
echo substr("Visita html.it",0,-8);
?>
1. Passaggio di variabile tramite URLCon questo metodo si specificano nell'URL di destinazione le variabili da utilizzare. E' possibile passare molteplici variabili. Vi fanno di seguito degli esempi banali.
Le pagine ovviamente saranno due, una di origine ed una di destinazione che si vedrà assegnati dei parametri dalla precedente. Il codice della pagina prima userà un URL definito come URL stringa.
Ipotizziamo di passare i parametri dal file varurl.php a file varurl1.php.
<?php
echo "<a href=\"varulr1.php?nome=Davide\">Clicca Qui!</a>";
?>
Si nota come dopo il nome del file di destinazione si sia inserito il carattere ? e il nome della variabile con relativo risultato. Per questo si dice che la variabile si passa tramite un URL, proprio perchè questa è specificata nell'URL.
La pagina di destinazione, chiamata varulr1.php, avrà il seguente codice.
<?php
echo "Io mi chiamo " . $_REQUEST['nome'] . "<br />";
?>
Si è usato il $_REQUEST['NomeVariabile'] per richiamare nella pagina di destinazione la variabile stessa. Il risultato sarà questo.
Per passare più variabili con un solo url si usa il carattere &. Di seguito un esempio in cui visualizzo il nome e l'età.
Partiamo dal file varurl.php scritto prima, e modifichiamolo come di seguito.
<?php
//Aggiungo anche la variabile anni all'URL
echo "<a href=\"varulr1.php?nome=Davide&anni=26\">Clicca Qui!</a>";
?>
Conseguenti modifiche al file varurl1.php saranno:
<?php
echo "Io mi chiamo " . $_REQUEST['nome'] . "<br />";
echo "Ed ho " . $_REQUEST['anni'] . " anni";
?>
Questo il risultato.
Altrà possibilità è quella di passare le variabile senza specificarle in URL come stringhe univoche, ma come nome di variabile. Metodo utile se, come spesso avviene, le variabili sono specificate in modo generico in altre parti del software.
Le modifiche saranno le seguenti: al file varurl.php
<?php
$nome = "Davide";
$anni = "26";
echo "<a href=\"varulr1.php?nome=$nome&anni=$anni\">Clicca Qui!</a>";
?>
Ed il file di destinazione, il varurl1.php, rimane identico a questo :-) . Il risultato sarà del tutto simile a quello visto precedentementi.
2. Passaggio di variabili tramite sessioniLa sessione racchiude un gruppo di variabili valide fin tanto che non si chiude il browser, almeno che non sia diversamente disposto nel php.ini. Il passaggio di variabili via sessione permette una maggiore sicurezza, soprattutto se le variabili in questione sono costituite da dati sensibili dell'utente.
Si procederà con il solito esempio pratico, posto che non avendo ancora spiegato l'uso di altre importanti funzioni, questo risulterà un esempio apparentemente inutile e ridondante. Più in avanti se ne capirà l'utilità ;-) .
Creiamo il file session.php contenente quanto segue.
<?
session_start();
$_SESSION['username']= "Davide";
$_SESSION['autorizzato'] = 1;
$anni = "26";
echo "<a href=\"session1.php?anni=$anni\">Clicca Qui!</a>";
?>
Per aprire la sessione utilizziamo la funzione session_start().Questo deve stare SEMPRE come prima riga di codice, altrimenti si genererà un errore!
Subito dopo impostiamo le variabili di sessione. Che devono essere il nome utente e l'autorizzazione a visualizzare la pagina di destinazione.
Si noterà che abbiamo usato anche il passaggio di variabile via URL, come nell'esempio precedente :-) .
A questo punto creiamo un nuovo file, chiamato session1.php e contenente quanto segue.
<?
session_start();
if ($_SESSION['autorizzato'] != 1){
echo "Non sei autorizzato a visualizzare la pagina";
exit();
}
echo "Ciao " . $_SESSION['username'] . "!!!<br />";
echo "Dovresti avere la bellezza di " . $_REQUEST['anni'] . "!!!";
?>
E' abbastanza facile da leggere! Apriamo la sessione come prima, impostiamo una condizione di if per la quale se dal file precedente abbiamo una sessione di 'autorizzato' diversa da 1 allora l'utente non sarà autorizzato a visualizzare la pagina, diversamente lo sarà.
Il risultato, sempre positivo in questo caso, sarà questo.
Per testare la non conformità dell'autorizzazione basterà impostare un valore diverso di $_SESSION['autorizzato'] nel file session.php. Provate a farlo e vedrete che comparirà la scritta "Non sei autorizzato a visualizzare la pagina".
3. Passaggio di variabili tramite cookieI cookie sono piccoli file contenenti informazioni sulla navigazione dell'utente. Non si dirà qui cosa siano esattamente e come funzionano, si rimanda a questo interessante articolo. Ma si avvisa immediatamente che se ne sconsiglia l'uso. Molti infatti, per motivi legati alla privacy, disabilitano l'uso del cookie o li cancellano manualmente ad intervalli di tempo molto vicini l'uno dall'altro, disattendendo in questo modo il vantaggio reale dei cookie rispetto all'uso delle sessioni, che è proprio quello di non cancellare le informazioni alla chiusura del browser.
C'è da dire che il coder dell'applicazione può decidere diversi parametri per impostare il cookie. Può infatti scegliere:
Creiamo il file cookie.php con all'interno quanto segue (leggete il commento per capire come è stato impostato il cookie ;-) ).
<?
/*Impostiamo un cookie con nome, valore e durata di un giorno
La durata è impostata in secondo, con l'utilizzo della funzione time()
Ovvero il time() nel momento in cui si apre la pagine aumentanto di
60 secondi che moltiplicato per 60 volte mi da esattamente un'ora :-)*/
setcookie('username', 'Davide', time()+60*60);
session_start();
$_SESSION['autorizzato'] = 1;
$anni = "26";
echo "<a href=\"cookie1.php?anni=$anni\">Clicca Qui!</a>";
?>
Si noterà l'uso della funzione setcookie() dove abbiamo scelto di impostare nome del cookie (la cosa è obbligatoria), valore e durata di un giorno.
Creiamo ora il solito file di destinazione chiamato cookie1.php e scriviamo al suo interno quanto segue.
<?
session_start();
if ($_SESSION['autorizzato'] != 1){
echo "Non sei autorizzato a visualizzare la pagina";
exit();
}
echo "Ciao " . $_COOKIE['username'] . "!!!<br />";
echo "Dovresti avere la bellezza di " . $_REQUEST['anni'] . "anni!!!";
?>
E' praticamente identico a quanto visto prima con il passaggio di variabili tramite sessione, solo che in questo caso viene letto il cookie impostato all'apertura del file cookie.php per richiamare la variabile username.
In concreto, avverrà questo.Visivamente il risultato non cambia, ma strutturalmente la metodologia applicata è molto diversa!
4. Passaggio di variabili tramite formE' sicuramente il metodo migliore e più utilizzato. Quello che da la possibilità di maggiore interattività della pagina. E' l'utente che tramite l'uso di un form decide quali sono le variabili da inviare.
Usiamo spessissimo funzioni di questo tipo. Nelle schermate di login, quando facciamo delle ricerche in un sito, quando inseriamo i nostri dati in un form di registrazione ad un forum o a qualsivoglia servizio.
Anche in questo caso, non si tratterà qui la tematica pura dei form. Si rimanda all'ottima trattazione disponibile su HTML.it.
Proviamo qui a fare una bella schermata di login ad un sito :-) . L'utente dovrà inserire dei parametri predefiniti in un form, se questi saranno corretti allora avrà accesso alla pagina successiva, altrimenti gli verrà visualizzato un errore.
Creiamo il file form2.php ed all'interno adiamo a scrivere le istruzioni per il nostro piccolo form :-) .
<?
/*Rilasciamo le variabili che potrebbero essere
state create precedentemente*/
session_unset();
?>
<html>
<head>
<title>Esempio di form by Baglieri.it :-)</title>
</head>
<body>
<form method="post" action="form.php">
Inserire il nome utente
<input type="text" name="userid">
<br /><br />
Inserire la password
<input type="password" name="pass">
<br /><br />
<input type="submit" name="submit" value="Entra">
</form>
</body>
</html>
Fin qui facile, vero?! Si noti che il file rimanda co il metodo post a form.php. File che andiamo immediatamente a creare e che si occuperà del controllo dei parametri passati.
<?
session_start();
$_SESSION['username'] = $_POST['userid'];
$_SESSION['password'] = $_POST['pass'];
$_SESSION['autorizzato'] = 0;
$anni = "26";
//Stabiliamo il controllo dei parametri
if (($_SESSION['username'] == 'davide') and
($_SESSION['password'] == 'baglieri')) {
$_SESSION['autorizzato'] = 1;
echo "Login effettuato con successo!<br />";
echo "<a href=\"form1.php?anni=$anni\">Clicca" Qui!</a>";
} else {
echo "Non hai inserito correttamente username e passwor<br />";
echo "Per favore, ricontrolla i parametri!";
exit();
}
?>
L'impostazione di if decide quando il parametro è passato correttamente. In questo caso user a pass utente sono inseriti direttamente nel file che si occupa del controllo. Per sistemi multiutenza, con tante username e tante password, la cosa più sensata è andare a prendere le coppia di user e pass e controllarle direttamente da un database.
Ma questo lo vedremo in seguito (sempre che abbia il tempo di scrivere nuove pagine :-p ).
Se inseriamo correttamente i parametri, la sessione verrà impostata ad 1 e comparirà il link per la pagina successiva. Ovvero al file form1.php che conterrà il seguente codice
<?
session_start();
if ($_SESSION['autorizzato'] != 1){
echo "Non sei autorizzato a visualizzare la pagina";
exit();
}
echo "Ciao " . $_SESSION['username'] . "!!!<br />";
echo "Dovresti avere la bellezza di " . $_REQUEST['anni'] . "anni!!!";
?>
<div align="center"><span class="stile5"><?php echo "nessun annuncio corrispondente trovato..."; ?></span></div>
<?
//esempio di if
if ( $textfield == '20100') {
header("location: pag_ftam95321276.php");
}
?>
LEGGERE LE IMMAGINI NEI DATABASE MYSQL CON PHP
Sostituire la riga row di lettura con La seguente
while ($row=mysql_fetch_array($result)) {
echo "<p><img src=\"{$row['urlimmagine']}\" /></p>";
}
Se invece vuoi visualizzare un link che apra l'immagine, metti:
Codice PHP:
while ($row=mysql_fetch_array($result)) {
echo "<p><a href=\"{$row['urlimmagine']}\">Link</a></p>";
}
SQL nel PHP
[LIKE]
$query_Recordaa = "SELECT * FROM x WHERE manufacturer LIKE 'A%'";
vediamo come manipolare le immagini attraverso la libreria GD di PHP, al fine di alterarne le dimensioni.
Vediamo un esempio nel quale abbiamo un'immagine di elevate dimensioni di nome myimage.jpg, posizionata nella cartella foto, di cui ne creeremo un'anteprima di dimensioni 120x90 pixel:
<?php
// Ottengo le informazioni sull'immagine originale
list($width, $height, $type, $attr) = getimagesize($_SERVER['DOCUMENT_ROOT'].'/foto/myimage.jpg');
// Creo la versione 120*90 dell'immagine (thumbnail)
$thumb = imagecreatetruecolor(120, 90);
$source = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT'].'/foto/myimage.jpg');
imagecopyresized($thumb, $source, 0, 0, 0, 0, 120, 90, $width, $height);
// Salvo l'immagine ridimensionata
imagejpeg($thumb, $_SERVER['DOCUMENT_ROOT']."/foto/myimage_thumb.jpg", 75);
?>
Cerchiamo di spiegare un po' il codice.
La funzione list() ottiene informazoni su un immagine. A noi in particolare interessano le sue dimesioni ($width, $height) che ci serviranno in seguito.
Le funzioni imagecreatetruecolor(), imagecreatefromjpeg(), imagecopyresized() servono, insieme, per aprire un immagine e crearne una copia di dimensioni alterate. Tutte e tre le funzioni lavorano con le immagini caricandole in memoria centrale, quindi non salvando niente sul disco.
Il salvataggio sul disco della foto ridimensionata è effettuato poi dalla funzione imagejpeg() che prende come parametri:
Questo ultimo parametro (qualità), è caratteristico delle immagini JPEG e consiste in un indice che specifica la qualità con la quale salvare l'immagine. Tale indice può andare da un minimo di 1 (immagine di bassissima qualità - praticamente inintellegibile) ad un massimo di 100 (immagine ad altissima qualità). Molto spesso valori troppo alti di questo parametro fanno crescere di molto le dimensioni (in Kb) delle immagini, senza portare reali benefici alla qualità complessiva. Consiglio quindi di utilizzare valori compresi tra 65 e 85 (75 è il valore predefinito).
Le librerie grafiche GD, prevedono la gestione non solo di immagini JPEG, ma anche di immagini GIF e PNG (e molti altri). Per salvare le immagini in questi formati basta usare le apposite funzioni imagegif() e imagepng(), che funzionano in modo del tutto analogo ad imagejpg() ma che non prevedono il parametro qualità.