Visualizzazione post con etichetta { PHP }. Mostra tutti i post
Visualizzazione post con etichetta { PHP }. Mostra tutti i post

martedì 26 giugno 2012

Trovare e gestire URL con PHP

Vediamo come trovare e gestire l'URL della pagina con PHP

La gestione dell'URL con PHP è molto semplice e sicura, essendo realizzata lato server.
PHP offre diverse soluzioni per individuare l'URL intero o una parte di esso.

Vediamo un esempio

Il tuo URL attuale è:
http://free-html-scripts.blogspot.it/2012/06/trovare-e-gestire-url-con-php.html

Vediamo il codice

<!DOCTYPE HTML>
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>URL CON PHP</title>
 </head>

<body>

 <?php 
  $url_attuale = 'http://'.$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
  echo '<p>Il tuo URL attuale è: <span style="color:red">';
  echo $url_attuale;
  echo'</span></p>'; 
 ?>

</body>
</html>

Spieghiamo

Ho impostato una variabile $url_attuale (vedi riga 11 dell'esempio riportato sopra) e grazie a $_SERVER["HTTP_HOST"] trovo il nome del dominio, poi concateno con il punto $_SERVER["REQUEST_URI"] che mi fornisce la parte di URL restante.

Il risultato è l'URL completo.
Da adesso in poi potremo utilizzare la variabile $url_attuale tutte le volte che vorremo all'interno della pagina PHP.

Nota bene

L'estensione della pagina deve essere necessariamente .php esempio: example.php.

giovedì 7 giugno 2012

Download file con password

Vediamo come realizzare un elenco di link per il download, protetti da password

Esempio


Download file tramite password

Inserisci la password e avvia il download del tuo file

Capita spesso di avere documenti più o meno riservati, che si desidera condividere solo con una cerchia ristretta di persone e non con tutti gli utenti del nostro sito.
In questa guida vediamo come fare per visualizzare un elenco di documenti pronti al download, ma che possono essere scaricati solo dopo avere inserito una password (che avremo comunicato solo a chi deve scaricare il nostro file).

Vedremo anche come creare e proteggere con password una serie di link interni o esterni al nostro sito.

Come sempre anticipo il link dello script completo (si tratta di uno ZIP con tutti i file dell'esempio) per i frettolosi che non vogliono leggere tutta la guida. Il link è ripetuto anche in fondo, per chi invece vuole seguire la guida passo passo.

Per spiegare meglio lo script PHP ho suddiviso il codice in varie sezioni, così da poterle individuare più semplicemente.

Vediamo prima di tutto se il nostro server supporta PHP

Se siamo sicuri che il nostro server supporti PHP possiamo saltare questo passaggio e andare avanti al punto successivo.
Altrimenti è molto semplice verificare la presenza di PHP sul nostro server, basta seguire questi semplici passi.

Analizziamo lo script

Lo script è composto da 6 sezioni di codice:
  1. nel primo blocco di codice definiamo le nostre preferenze (url del sito), messaggi ecc...;
  2. nel secondo blocco di codice definiamo dove si trova il file da scaricare, la password da inserire e come si chiama il file;
  3. il blocco successivo si occupa di verificare la password e avviare il download;
  4. poi come sempre ho inserito un po di CSS per rendere il tutto gradevole (anche l'occhio vuole la sua parte) questo codice può essere modificato o cancellato completamente;
  5. due righe di codice per visualizzare i messaggi che lo script rende;
  6. finalmente i link che visualizzerà l'utente finale;

Prima sezione di codice le preferenze

//imposto messaggio di password corretta
$ok = '<p class="green">Ok password corretta inizio il download tra 5 secondi...</p>';

// imposto messaggio di errore
$errore = '<p class="red">Attenzione password errata, prova nuovamente!</p>
<p><a href="mailto:info@example.com?subject=Richiesta nuova password">Richiedi nuova password</a></p>';

// imposto messaggio di benvenuto
$plain = '<p class="plain">Inserisci la password e avvia il download del tuo file</p>';

// imposto l'url dove si trova questo file
// se ad esempio si vuole installare lo script nella cartella download
// $site sarà: http://www.example.com/download
$site = 'http://www.example.com';

Seconda sezione di codice i file e le password

// inserisco il nome, la password e la cartella del file 1
if(isset($_POST["submit1"])){
 $dir  = "dir-dwnload-1234";     /*nome cartella dove si trova il file da scaricare*/
 $file = "file1.zip";            /*nome file da scaricare*/
 $pswd = "pippo";                /*password per questo file*/
}

// inserisco il nome, la password e la cartella del file 2
else if(isset($_POST["submit2"])){
 $dir  = "dir-dwnload-1234";     /*nome cartella dove si trova il file da scaricare*/
 $file = "file2.pdf";            /*nome file da scaricare*/
 $pswd = "pluto";                /*password per questo file*/
}

// inserisco il nome, la password e la cartella del file 3
else if(isset($_POST["submit3"])){
 $dir  = "";                     /*nome cartella dove si trova il file da scaricare*/
 $file = "";                     /*nome file da scaricare*/
 $pswd = "paperino";             /*password per questo file*/
 $site = 'http://www.google.it'; /*l'url del link da raggiungere con la password*/
}

Tersa sezione di codice controllo e download

// controllo 
if($_POST["_pswd"] != $pswd){
 $msg = $errore;
}
if(($_POST["_pswd"] == $pswd)&&($pswd != "nopsw")){
 $msg = $ok;
 // avvio il download
 header("Refresh: 5; URL=".$site."/".$dir."/".$file."");
}

Quarta sezione il codice CSS

<style type="text/css">
* {
 padding:3px;
 margin:3px;
}
body {
 font: 1em "Trebuchet MS", Arial, Helvetica, sans-serif;
 color: #333;
 width:500px;
}
ul, li, p {
 -webkit-border-radius: 5px;
 border-radius: 5px;
}
ul {
 background: #039;
}
li {
 background: #D7F2F4;
 list-style:none;
}
label {
 font-size: 0.8em;
 color: #009;
}
.red {
 color: #FFF;
 background: #F00;
}
.green {
 color: #FFF;
 background: #0C0;
}
.plain {
 color: #FFF;
 background: #CCC;
}
</style>

Quinta sezione di codice stampa dei messaggi

// gestiamo i messaggi proventienti da controllo 
if((isset($msg))&&($pswd != "nopsw")){
 echo $msg; 
}else{
 echo $plain;
}

Sesta sezione di codice i link ai file

<ul>
  <li>
    <form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
      <label>Download <strong class="re">file1.zip</strong></label>
      <input type="password" name="_pswd">
      <input type="submit" name="submit1" value="download">
    </form>
  </li>
  <li>
    <form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
      <label>Download <strong>file2.pdf</strong></label>
      <input type="password" name="_pswd">
      <input type="submit" name="submit2" value="download">
    </form>
  </li>
  <li>
    <form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
      <label>Apri la <strong>Home Page di Google</strong></label>
      <input type="password" name="_pswd">
      <input type="submit" name="submit3" value="download">
    </form>
  </li>
</ul>

Spieghiamo

Nella prima parte è fondamentale impostare la variabile $site con l'url della cartella contenente tutti i file (sia PHP che le cartelle contenenti i file da scaricare). Se ad esempio si vuole installare lo script e i file da scaricare, nella cartella download-file (quella che si trova nel file ZIP dell'esempio) l'url sarà: http://www.example.com/download-file;

Nel secondo blocco di codice si impostano: il nome della cartella dove si trova il file da scaricare, il nome del file e la password. Da notare che per inserire un link protetto da password basta inserire la password e aggiungere la riga di codice con l'url del link esempio: $site = 'http://www.google.it'; (vedi riga 20 del secondo esempio di codice). Gli altri valori vanno lasciati vuoti;

Il terzo blocco di codice controlla la password. Qui non va modificato nulla;

Quarto blocco è composto da codice CSS per rendere più gradevole la parte visiva. Questo codice si può modificare a proprio piacimento o direttamente cancellare, senza compromettere il funzionamento dello script;

Anche il quinto blocco di codice non va modificato. Serve a visualizzare i messaggi dello script.

Nel sesto blocco di codice c'è l'HTML per visualizzare i vari link.

Se dobbiamo aggiungere altri link, basta duplicare le righe contrassegnate nel secondo esempio (dalla 8 alla 13) e le righe del sesto esempio (dalla 9 alla 15). Nei due blocchi di codice va impostato lo stesso valore submitX che dovrà essere corrispondente e univoco, per collegare il link dell'HTML con l'if del PHP.

Nota bene

Questo script è utile per celare l'effettivo link del tuo download. Tuttavia per file molto importanti, potrebbe essere interessante aumentare la sicurezza dei download, proteggendo la cartella in altro modo, con sistemi che utilizzano protezioni lato server direttamente sulle cartelle e sui file stessi.

Per questo motivo ti consiglio di utilizzarlo con cautela, a tuo rischio e pericolo, e soprattutto su file di relativa importanza.

Download

Da questo link è possibile scaricare l'intero script

mercoledì 6 giugno 2012

Inviare messaggi dal sito

Vediamo come realizzare un form per inviare messaggi dal sito

Esempio


Scrivi un messaggio

Tutti i campi sono obbligatori

Con questo Script in PHP sarà possibile inviare messaggi dal sito, direttamente sulla nostra casella di posta. Lo Script controlla che tutti i campi siano compilati, prepara la mail e la spedisce su una casella di posta predefinita. Unico requisito richiesto, è che il nostro Server supporti PHP.
Se vuoi scaricare subito il file completo senza leggere tutta la guida puoi trovarlo qui.

Vediamo se il nostro server supporta PHP

Se siamo sicuri che il nostro Server supporti PHP possiamo saltare questo passaggio e andare avanti al punto successivo.
Altrimenti è molto semplice verificare la presenza di PHP sul nostro server, basta seguire questi semplici passi.

Analizziamo lo script per inviare mail dal sito:

Lo script che ho preparato appositamente per questa guida, è suddiviso in 4 parti:
  1. una sezione per impostare le preferenze del nostro FORM MAIL: la casella email che riceverà i messaggi dal sito, l'oggetto del messaggio, il testo dei vari messaggi resi dal form ecc...;
  2. lo script che invia fisicamente la mail alla nostra casella di posta;
  3. un po' di codice CSS per dare un aspetto gradevole al form e ai messaggi di errore o consenso che il form rende;
  4. il codice HTML del form che servirà all'utente per compilare il messaggio da inviare tramite il sito;

Impostiamo le preferenze dello Script

/** MODIFICA CON I TUOI DATI ******************************************/

//imposta il tuo indirizzo email
 $miamail = "miaemail@example.com";
// imposta l'oggetto della mail che riceverai 
 $oggettomail = "Messaggio dal sito";
// imposta un messaggio per email inviata correttamente
 $inviato = '<p class="green">Ok e-mail inviata correttamente.</p>';
// imposta un messaggio per errore invio
 $errore = '<p class="red">Attenzione: non &egrave; stato possibile inviare l&acute;email...</p>';
// imposta un messaggio per tutti i campi obbligatori
 $tutticampi = '<p class="red">Attenzione: tutti i campi sono obbligatori...</p>';
// etichetta per input Nome e Cognome
 $_nomecognome = "Nome e Cognome";
// etichetta per input email
 $_email = "Email";
// etichetta per textarea messaggio
 $_messaggio = "Messaggio";
 
/* FINE MODIFICA CON I TUOI DATI **************************************/ 

Vediamo lo script che prepara e invia la mail

//recupero i dati dal form per l'invio
 $nome      = $_POST['nome'];
 $email     = $_POST['email'];
 $messaggio = $_POST['messaggio'];

//vediamo se l'utente sta componendo il form o ha cliccato su scrivi
if($_POST['submit'] == 'scrivi'){
 
//controllo tutti i dati 
//se aggiungi altri campi obbligatori al form devi aggiungerli anche qui nell'if
  if(($nome != $_nomecognome) && ($email != $_email) && !empty($messaggio)){ 
      
//imposto il mittente della mail  
  $headers .= 'From: "'.$nome.'" <'.$email.'>';
//spedisco la mail
  $mail = mail($miamail, $oggettomail, $messaggio, $headers);
      
//controllo il corretto invio dei dati
  if($mail){
       
//stampo un messaggio dopo l'invio dei dati
  $msg = $inviato;

  }else{
//stampo un messaggio in caso di errore
  $msg = $errore;
      
//fine se tutti i campi sono compilati
  }
 }else{
//stampo un messaggio se mancano i campi obbligatori
  $msg = $tutticampi;
 }
}

Un po' di CSS per rendere gradevole il Form

<style type="text/css">
body {
 font: 1em "Trebuchet MS", Arial, Helvetica, sans-serif;
}
input, textarea {
 font: 1em "Trebuchet MS", Arial, Helvetica, sans-serif;
 color: #900;
 border: 1px solid #CCC;
 background-color: #FFFEF0;
 display:block;
}
input[type="submit"]:hover {
 background-color: #0C0;
 color:#FFF;
}
label {
 font-size: 0.7em;
 color: #CCC;
}
.red {
 color:#FFF;
 background-color: #C00;
 width:375px;
 padding:2px;
}
.green {
 color:#FFF;
 background-color: #0C0;
 width:375px;
 padding:2px;
}
</style>

Vediamo l'HTML del form per compilare il messaggio

<h2>Scrivi un messaggio</h2>
<p><em>Tutti i campi sono obbligatori</em></p>
<form name="form-mail" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
 <input type="text" name="nome" value="<?php echo $_nomecognome; ?>" onblur="if(this.value=='') this.value='<?php echo $_nomecognome; ?>';" onfocus="if(this.value=='<?php echo $_nomecognome; ?>') this.value='';" />
 <input type="text" name="email"  value="<?php echo $_email; ?>" onblur="if(this.value=='') this.value='<?php echo $_email; ?>';" onfocus="if(this.value=='<?php echo $_email; ?>') this.value='';"/>
 <label><?php echo $_messaggio; ?></label>
 <textarea name="messaggio" cols="50" rows="7"></textarea>
 <input type="submit" name="submit" value="scrivi" />
</form>

Spieghiamo

Nelle prime righe del codice trovo le variabili che una volta impostate fanno funzionare lo script secondo le nostre impostazioni.
Nel personalizzare le variabili, è importante rispettare la sintassi, senza cancellare gli apici che aprono e chiudono i valori impostati. Nell'esempio che segue, la parte in rosso è il contenuto della variabile che va modificato a proprio piacimento, la parte in grigio non va modificata:
$miamail = "miaemail@example.com";

Nella seconda parte del codice c'è il motore dello script, la parte cioè che confeziona il messaggio e lo spedisce alla nostra casella di posta. In questa sezione di codice non c'è nulla da modificare. Il codice va lasciato così com'è.

La terza parte di codice è  composta da un po' di CSS che ho inserito per rendere gradevole la visualizzazione del form. Questo codice può essere modificato, ampliato o anche cancellato completamente.

La quarta e ultima parte di codice è l'HTML che serve per marcare il FORM.

Download

Seguendo questo link puoi scaricare il file completo e funzionante.

Verificare se il server supporta PHP

Spesso ci capita di volere installare piccoli script per il nostro sito internet, ma la prima condizione che ci viene richiesta per installare lo script, è che il nostro server supporti PHP...

Vediamo come verificare se il nostro server supporta PHP

Normalmente se il nostro server è su piattaforma UNIX / LINUX il supporto a PHP è nativo. A volte è anche possibile usufruire di PHP su alcuni server in ambiente WINDOWS che lo hanno installato.

Per verificare la presenza di PHP sul nostro server, basta seguire questi semplici passi:
  1. creiamo un file vuoto
  2. lo chiamiamo phpinfo.php
  3. nel file scriviamo questa semplice riga: <?php phpinfo(); ?>
  4. carichiamo il file sul nostro server via FTP
  5. navighiamo il file con un browser esempio: http://www.example.com/phpinfo.php
  6. se compaiono le specifiche del nostro server OK altrimenti non abbiamo PHP

Downlaod

Se vuoi, da questo link puoi scaricare il file phpinfo.php già pronto per l'upload sul tuo server.

mercoledì 30 maggio 2012

Come sapere quale Browser ha il nostro utente

Vediamo come fare per sapere quale Browser sta utilizzando il nostro utente


Questo fantastico script gratuito scritto in PHP si chiama Browser.php. Grazie a un'attenta analisi del Browser riesce ad individuare:
  1. Tipo di Browser dell'utente
  2. Versione del Browser
  3. User Agent completo
  4. Piattaforma del supporto
Esempio:


Spieghiamo:

Lo script si occupa di individuare e immagazzinare i dati proveniente dal Browser dell'utente, come riportato nell'esempio sopra. Sta poi a noi interpretarli e utilizzarli.

L'autore ad esempio consiglia un utilizzo di questo tipo:
$browser = new Browser();
if( $browser->getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) {
echo 'Stai Navigando con FireFox versione 2 o superiore';
}
In pratica controllo con if se il Browser è FireFox e se la versione è uguale o superiore a 2 quindi stampo il messaggio con echo.

Ho fatto un paio di test con Smartphone Android, iPhone e Tablet Android, e in ogni situazione lo script ha risposto segnalando puntualmente il Browser la sua versione, l'user agente e la piattaforma utilizzata, senza commettere mai errori.

Può sembrare superfluo dirlo, ma per il corretto funzionamento dello script è meglio non dimenticare di includerlo nel nostro file padre.

Esempio di inclusione nel nostro file:

<?php
//includo il file Browser.php nel mio file padre (ad esempio: example.php)
include("Browser.php");

//imposto il browser
$browser = new Browser();

//controllo con if se il Browser dell'utente 
//risponde alle caratteristiche impostate
if( $browser->getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) {

//stampo il messaggio Firefox SI
echo 'Stai Navigando con FireFox versione 2 o superiore';
}else{

//altrimenti stampo il messaggio FireFox NO o inferiore a 2
echo 'Stai Navigando con un Browser diverso da FireFox o inferiore a 2';
}
?>

martedì 29 maggio 2012

Includere un file con PHP

Includere un file HTML figlio in un file HTML padre con PHP

Questo tipo di inclusione lato-server, permette la ripetizione di uno stralcio di codice in uno o più file padre.

Per includere lo stralcio di codice, utilizzeremo il costrutto include. L'unica accortezza che dovremo rispettare, sarà cambiare l'estensione del file padre in PHP. Il file padre si dovra chiamare ad esempio: example.php.

Vediamo il codice

<?php include("menu.htm"); ?>

Spieghiamo

Grazie al costrutto include possiamo inserire lo stralcio di codice contenuto in menu.htm all'intero del nostro file padre.
Ci sono da notare alcuni aspetti importanti affinché l'inclusione vada a buon fine:
  1. l'url del file figlio è relativo rispetto al file padre. Il file riportato nell'esempio menu.htm si troverà nella stessa cartella del file padre.
  2. Volendo possiamo inserire codice PHP nel file figlio, ma in questo caso dovremo rinominare il file da menu.htm a menu.php. Inoltre il codice PHP contenuto in menu.php dovrà essere aperto e chiuso con php.

Esempio di contenuto dinamico nel file menu.php:

<?php echo"Ciao"; ?>
In alcuni casi sarà possibile "forzare" l'inclusione con il costrutto require.

<?php require("menu.htm"); ?>
Esiste infine la possibilità di utilizzare il costrutto include_once o require_once, particolarmente utile in script complessi, per evitare l'inclusione multipla indesiderata

<?php include_once("menu.htm"); ?>
<?php require_once("menu.htm"); ?>

domenica 27 maggio 2012

Redirect con PHP

Semplice redirect con PHP

Con questo semplice codice è possibile effettuare un redirect della nostra pagina con PHP.
Sarà possibile impostare anche l'intervallo di tempo dopo il quale dare corso al redirect.
<?php
header("Refresh: 5; URL=http://www.example.com");
exit;
?>

Spieghiamo:

Tramite questo redirect in PHP è possibile impostare un tempo e un url.
Se ad esempio impostiamo il parametro Refresh a 5, il nostro redirect verrà avviato dopo 5 secondi.

Se nella pagina è presente altro codice che non voglio eseguire, blocco lo script con exit;
Altrimenti non serve e lo posso tranquillamente togliere.

È possibile anche utilizzare la forma contratta, senza impostare un tempo al redirect, che avrà quindi effetto immediato:
<?php
header("Location: http://www.example.com");
exit;
?> 

Spieghiamo:

Anche in questo caso è possibile togliere exit; se nella pagina non c'è altro codice che non si desidera venga eseguito.

È possibile con una piccola astuzia, utilizzare questo redirect, ad esempio, per aggiornare la nostra pagina ogni 30 secondi: basterà impostare il parametro Refresh a 30, e indicare come url la pagina attuale.

In questo modo si avrà, in effetti, il reload della nostra pagina ogni 30 secondi
Esempio:
<?php
header("Refresh: 30; URL=http://www.url-della-mia-pagina.it");
echo"Questa pagina viene ricaricata ogni 30 secondi...";
?>

venerdì 25 maggio 2012

Visualizzare un testo a seconda del click

Come visualizzare un testo, a seconda del link cliccato

Vediamo come fare, con poche righe di codice PHP, per visualizzare un testo, che cambia a seconda del link cliccato.

Esempio dopo aver cliccato il link 2:

link1 | link2 | link3

Hai cliccato il link n. 2



<ul>
 <li><a href="?v=1"<?php if($_GET["v"]==1){echo' style="color:red"';}?>>
  link1
 </a> | </li>
 <li><a href="?v=2"<?php if($_GET["v"]==2){echo' style="color:red"';}?>>
  link2
 </a> | </li>
 <li><a href="?v=3"<?php if($_GET["v"]==3){echo' style="color:red"';}?>>
  link3
 </a></li>
</ul>
<h1>
 <?php 
    if(!$_GET["v"]){
     echo"Non hai cliccato ancora nessun link";
    }else{
     echo"Hai cliccato il link n. ".$_GET["v"];
    }
 ?>
</h1>

spieghiamo:

  1. Ho creato una struttura in HTML con <ul> e <li>, ma naturalmente, si può costruire la struttura HTML che si vuole;
  2. Imposto sull'href del link un valore con ?v= che poi utilizzerò per stampare un messaggio;
  3. Recupero sul titolo <h1> il messaggio "Non hai cliccato ancora nessun link", se manca un valore sul get !$_GET["v"], altrimenti stampo il messaggio personalizzato ""Hai cliccato il link n." + il numero impostato sul link;

giovedì 24 maggio 2012

Evidenziare i link di un menù

Come evidenziare il link cliccato in un menù

Esempio se ho cliccato link2:



Per far funzionare correttamente questo semplice script, che utilizza il  $_GET(), è necessario avere una pagina di tipo PHP.
Ad esempio se la nostra pagina si chiama: example.html, dovremo cambiare l'estensione da .html a .php.
Quindi la nostra pagina si dovrà necessariamente chiamare:  example.php

Vediamo il codice necessario per colorare il link del nostro menù
<ul>
 <li style="display:inline;">
  <a href="?v=1"<?php if($_GET["v"]==1){echo' style="color:red"';}?>>
   link1
  </a> | 
 </li>
 <li style="display:inline;">
  <a href="?v=2"<?php if($_GET["v"]==2){echo' style="color:red"';}?>>
   link2
  </a> | 
 </li>
 <li style="display:inline;">
  <a href="?v=3"<?php if($_GET["v"]==3){echo' style="color:red"';}?>>
   link3
  </a>
 </li>
</ul>

Spieghiamo:

  1. Ho creato una struttura con <ul> e <li> per visualizzare i link, che chiaramente può essere realizzata con il codiche HTML che si preferisce;
  2. Imposto l'href del link con ?v=
    Se ad esempio il link1 dovesse collegare la pagina home.php, il link sarebbe: home.php?v=1
  3. Recupero con $_GET["v"] il valore dal link;
  4. Coloro il link che ha il $_GET corrispondente al link cliccato.