Caricare immagini casuali con PHPrealizzato da Donatantonio, il 12 gen. 2010, categoria PHP |
|
Lo script seguente permette di stampare in una pagina web un certo numero di immagini selezionate casualmente da una specifica cartella.
Nell’esempio utilizzeremo una cartella dal nome “foto” e selezioneremo da questa 20 immagini.
Ecco il codice completo (opportunamente commentato):
<?php
// Configurazione script
$cartella = 'foto/';
$numero = 20;
// Creo un array che conterrà gli url delle foto
$foto = array();
$i=0;
// Carico le foto nell'array
if ($handle = opendir($cartella)){
while (false !== ($file = readdir($handle))){
if ($file != "." && $file != "..") {
$foto[$i]=$file;
$i++;
}
}
closedir($handle);
$j=0;
// Genero valori casuali per un numero volte uguale a numero
mt_srand((double)microtime() * 1000000);
while($j<$numero){
$code = mt_rand(0,count($foto));
// Se il file è il file di Thumbs allora lo scarto
if($foto[$code]!="Thumbs.db"){
$img=$cartella."".$foto[$code];
// Stampo la foto
echo "<img src=\"$img\" alt='$foto[$code]'/>";
$j++;
}
}
}
?>
Torna sopra ↑
URL della pagina correnterealizzato da Donatantonio, il 11 gen. 2010, categoria PHP |
|
Per conoscere l’url completo della pagina corrente è necessario combinare oppurtanamente diverse variabile d’ambiente di PHP.
Tale informazione può essere utile ad esempio per effettuare controlli sulle pagine visitate dagli utenti oppure semplicemente per realizzare dei bottoni di “back” tra diverse pagine web.
Di seguito il codice della funzione che salveremo nel file paginaCorrente.php:
<?php
function paginaCorrente() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on")
{
$pageURL .= "s";
}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80")
{
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
?>
La funzione infine verrà così richiamata dove necessario:
require_once('paginaCorrente.php');
$pagina = paginaCorrente();
echo "URL della pagina attuale: ".$pagina;
Torna sopra ↑
Utilizzare le sessioni in PHPrealizzato da Donatantonio, il 11 gen. 2010, categoria PHP |
|
Descriveremo brevemente le diverse funzioni che entrano in gioco nella gestione delle sessioni in linguaggio PHP.
Innanzitutto è necessario dar vita ad una sessione.
Imposto il tempo di vita (espresso in secondi) della sessione e il dominio di appartenenza delle variabili di sessione.
Il valore 0 come tempo di vita, indica che la sessione resta attiva senza scadenza di tempo, bensì solo la chiusura della connessione (o del browser) la fanno terminare.
session_set_cookie_params (30*60, "/", ".dominio.it"); session_start();
Imposto una variabile di sessione.
$_SESSION['nome_utente']='Fabio Donatantonio';
Distruggo la sessione e quindi cancello le variabili immagazzinate.
session_destroy();
In alternativa è possibile cancellare una singola variabile di sessione.
unset($_SESSION['nome_utente']);
In conclusione vediamo uno script completo che utilizza le sessioni, il quale simula l’accesso di un utente ad un’area privata. La prima pagine è login.php.
<?php
// Prelevo user e password
$user = $_POST['user'];
$password = $_POST['password'];
// Effettuo un controllo in database o file e setto la variabile 'controllo' a true o false
if($controllo == true){
// Utente autorizzato... creo la sessione
session_set_cookie_params (0, "/", ".donatantonio.it");
session_start();
// Creo le variabili di sessione
$_SESSION['utente'] = $user;
$_SESSION['data_accesso'] = date('d-m-Y')." ".date('G:i');
// Reindirizzo verso una pagina protetta 'menu.php' descritta dopo
header('Location:menu.php');
}else{
// Utente non autorizzato all'accesso...
header('Location:login.php');
}
?>
Descriviamo infine la pagina menu.php dove viene effettuato un controllo di avvenuto accesso.
session_set_cookie_params(0, "/", ".donatantonio.it");
session_start();
if(!isset($_SESSION['utente'])){
// Variabile di sessione non presente... quindi login non avvenuto...
header('Location:login.php');
}else{
// Utente correttamente loggato in precedenza...
}
Torna sopra ↑
Esportare una pagina web in Word o Excel con PHPrealizzato da Donatantonio, il 11 gen. 2010, categoria PHP |
|
Sempre più spesso sorge la necessità di permettere ad un utente di esportare il contenuto di una pagina web in un formato più gestibile e adeguatamente formattato. Pensiamo ad esempio ad una Web Application che mostra a video tabelle o grafici. L’obiettivo è far si che queste siano accessibili attraverso un documento di Word o di Excel.
Lo script genera “a volo” un documento Word o Excel che può essere successivamente salvato o aperto direttamente dal browser.
Vediamo il seguente esempio (Creo una pagina html che fornisce due link per esportare la tabella visualizzata):
<html> <head><title>Mostro una tabella in html...</title></head> <body> <table border='1'> <tr><th>Valore</th><th>Quantità</th></tr> <tr><td>Valore A</td><td>200</td></tr> <tr><td>Valore B</td><td>150</td></tr> <tr><td>Valore C</td><td>180</td></tr> </table> <br/> <a href='esporta.php?tipo=excel'>Esporta in Excel</a> | <a href='esporta.php?tipo=word'>Esporta in Word</a> </body> </html>
Creo lo script PHP, esporta.php (Da notare il valore del Content-Type all’interno dell’header):
<?php
if($_GET['tipo']=='excel'){
$filename = "tabella.xls";
header ("Content-Type: application/vnd.ms-excel");
header ("Content-Disposition: inline; filename=$filename");
}else{
if($_GET['tipo']=='word'){
$filename = "tabella.doc";
header("Content-Type: application/msword");
header ("Content-Disposition: inline; filename=$filename");
}else{
exit;
}
}
?>
<table border='1'>
<tr><th>Valore</th><th>Quantità</th></tr>
<tr><td>Valore A</td><td>200</td></tr>
<tr><td>Valore B</td><td>150</td></tr>
<tr><td>Valore C</td><td>180</td></tr>
</table>
L’esecuzione della pagina esporta.php si conclude con l’invio da parte del server di un documento .doc o .xls al browser.
Torna sopra ↑
Invio di email da script PHPrealizzato da Donatantonio, il 11 gen. 2010, categoria PHP |
|
Il codice sottostante premette di inviare una email dal proprio spazio web, dopo aver prelevato i dati da una form:
<?php
// Recupero dati da un possibile form contatti
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$mail = $_POST['mail'];
$oggetto = $_POST['oggetto'];
$contenuto = $_POST['contenuto'];
if(!$nome || !$cognome || !$mail || !$oggetto || !$contenuto){
// Modulo compilato in maniera errata...
}else{
// Preparo l'invio della email - Specifico indirizzo destinatario mail e l'indirizzo del mittente
$indirizzo="info@donatantonio.net";
$header="From:".$mail;
// Formatto il testo della mail aggiungendo nome e cognome del mittente
$contenuto = "Mail inviata da:".$nome." ".$cognome."\n\rCorpo del messaggio:\n\r".$contenuto;
// Invio la mail - mail(destinatario,oggetto,messaggio,intestazioni)
mail($indirizzo,$oggetto,$contenuto,$header);
}
?>
Torna sopra ↑
Controllo formato indirizzo emailrealizzato da Donatantonio, il 08 gen. 2010, categoria PHP |
|
Risulta spesso utile e necessario controllare il formato di un indirizzo email, soprattutto qualora questo sia acquisito attraverso un form di inserimento dati.
Lo script proposto si colloca lato server, essendo in PHP, ed effettua vari controlli come ad esempio presenza di spazi, presenza della @ e di caratteri speciali.
Lo script di seguito è ulteriormente commentato:
<?php
function controllaMail($email)
{
// elimino spazi alle estremità della stringa
$email = trim($email);
// se la stringa è vuota sicuramente non è una mail
if(!$email) {
return false;
}
// controllo che ci sia una sola @
$num_at = count(explode(<a href="mailto:'@'">'@'</a>, $email))-1;
if($num_at != 1){
return false;
}
// controllo la presenza di ulteriori caratteri
if(strpos($email,';') || strpos($email,',') || strpos($email,' ')){
return false;
}
// la stringa rispetta il formato classico di una mail?
if(!preg_match( '/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/', $email)) {
return false;
}
return true;
}
?>
Vediamo infine un esempio di utilizzo di tale funzione, dopo aver salvato lo script precedente in un file controllaMail.php :
<?php
require_once('controllaMail.php');
$indirizzo = $_POST['indirizzo_da_form'];
if(controlloMail($indirizzo)) {
// L'indirizzo è corretto, posso procedere....
}else{
// L'indirizzo non è corretto... torno alla form...
header('Location:form.php');
}
?>
Torna sopra ↑









invio in corso...
