Può essere utile in alcuni casi permettere il download di files senza però mostrarne il percorso e quindi la directory dove sono contenuti.
Utile nei casi in cui si vuole impedire di sfogliare la directory non svelandola, appunto (anche se sarebbe sempre meglio impedirlo direttamente dall'httpd.conf o con un file .htaccess)
Oppure quando i file sono in una directory all'interno del server ma non raggiungibile via web.
Il link non deve quindi essere verso il file da scaricare ma verso una pagina php (es. download.php) alla quale passerai il nome del file come variabile, in questo modo:
HTML:
-
<a href="download.php?file=nomefile.zip">Scarica
</a>
il file download.php sarà invece strutturato così.
PHP:
-
<?php
-
$file=$_GET['file'];
-
$percorso="/var/percorso/directory/download/";
-
$percorso_file=$percorso.$file;
-
$dimensione_file=
filesize($percorso_file);
-
header("Content-Type: application; name=".
$file);
-
header("Content-Transfer-Encoding: binary");
-
header("Content-Length: ".
$dimensione_file);
-
header("Content-Disposition: inline; filename=".
$file);
-
-
header("Cache-Control: no-cache, must-revalidate");
-
header("Cache-Control: private");
-
-
-
?>
Update: inoltre con poche altre righe di php, utilizzando questo sistema è possibile monitorare il download.
Già visto come inizializzare un cookie.
Cancellarlo è ancora più semplice. Basta infatti renderlo scaduto.
Eccoti l'esempio di come cancellare un cookie chiamato nome_visitatore
Può essere utile ricavare l'estensione dal nome di un file di cui ad esempio si è fatto l'upload e lo si vuole rinominare con un nome univoco. Chiaramente l'estensione in questo caso non va cambiata, è quindi necessario estrappolarla dal nome del file e conservala.
Ecco una funzione che può essere di aiuto in questo senso.
PHP:
-
function estensione($nome){
-
$trova_punto =
explode(".",
$nome);
-
$estensione =
$trova_punto[count($trova_punto) -
1];
-
-
if (isset($trova_punto[1]) ==
FALSE){
-
return "Nessuna estensione";
-
}
-
return $estensione;
-
}
-
$file="pippo.jpg";
-
echo estensione
($file);
/// restituisce jpg
Chi fa il web master o il web developer sa che una delle cose più fastidiose è quando il cliente fornisce i testi scritti tutto in maiuscolo. Altrettanto fastidioso è quando un cliente ha l'amministrazione dei contenuti del sito e, appunto, ha il brutto vizio a scrivere tutto in maiscolo.
Con questa funzione il testo viene riformattato con il primo carattere dopo il punto in maiuscolo, e il resto in minuscolo.
Di particolare importanza 2 funzioni:
PHP:
-
$text="TEST. TESTO MAIUSCOLO. COME FARE.";
-
-
function formatta_testo ($stringa){
-
$stringa =
explode ('.',
$stringa);
-
-
for ($i = 0; $i <$n; $i++){
-
-
if ($i> 0){
-
$stringa[$i] = ' ' . $stringa[$i];
-
}
-
}
-
$stringa =
implode ('.',
$stringa);
-
return $stringa;
-
}
-
-
echo formatta_testo
($text);
// Test. Testo maiuscolo. Come fare.
Per inizializzare un cookie con php si utilizza la funzione
setcookie(nome, valore, scadenza, percorso, dominio, sicurezza);
che va messa all'inizio dello script.
I parametri, di facile lettura:
- nome: è il nome che avrà il cookie;
- valore: il valore del cookie;
- scadenza: indica quando scadrà il cookie in secondi;
- percorso: del server su cui il cookie sarà disponiblie
- dominio: il dominio relativo
- sicurezza: se settato su TRUE il cookie si inizializza solo se esiste una connessione https (possiamo tralasciare)
Supponiamo di voler chiedere ad un visitatore il suo nome per registrarlo su un cookie e salutarlo ogni volta che ritorna sul sito.
Per prima cosa nella pagina index.php verifichiamo che il cookie non esista già, se non esiste chiediamo al visitatore di inserire il suo nome tramite un semplice form che invierà le informazioni a set_cookie.php, altrimenti possiamo già salutarlo chiamandolo per nome.
PHP:
-
<?php
-
$the_cookie=$_COOKIE['nome_visitatore'];
-
-
if (empty($the_cookie)) {
-
echo " <form method=\"post\" action=\"set_cookie.php\">
-
Ciao, come ti chiami?
-
<input type=\"text\" name=\"nome\" />
-
<input type=\"submit\" name=\"Submit\" value=\"Submit\" />
-
</form>";
-
} else {
-
echo "Ciao ".
$the_cookie.
"!";
-
}
-
?>
in set_cookie.php avremo dunque il recupero del nome inviato e l'inizializzazione del cookie.
PHP:
-
<?php
-
$nome_da_registrare=$_POST['nome'];
-
setcookie("nome_visitatore",
$nome_da_registrare,
time()+
3600,
"/");
-
-
echo "Cookie inizializzato, <a href=\"index.php\">Torna indietro</a>";
-
?>
N.B.
time()+3600 -> equivale a un'ora.
"/" -> il coockie è valido per tutto il dominio
il paramentro dominio può essere tralasciato se non esistono subdomini
Prendo spunto da una chiave di ricerca utilizzata per arrivare qua.
Contare i caratteri di una stringa in php è molto semplice perchè esiste già una funzione adatta a questo scopo:
strlen($stringa)
Una cosa da tenere sempre presente è che gli spazi vuoti sono considerati un carattere come qualsiasi altro e vengono quindi conteggiati.
PHP:
-
$stringa = "sempreverde";
-
-
-
$stringa = "stringa con spazi vuoti";
-
Un Array è una sorta di variabile che contiene più valori (facendola facile). Un metodo comodo per recuperare i valori di un Array è utilizzare un cliclo for come nell'esempio qui sotto.
La funzione count permette di contare gli elementi dell'array e quindi impostare il ciclo.
PHP:
-
$stati =
array('italia',
'francia',
'spagna',
'olanda',
'belgio');
-
-
$numero_stati =
count($stati);
-
-
for ($contatore=0; $counter<=$numero_stati; $contatore++) {
-
echo $stati[$contatore] .
"<br>";
-
}
Quello che restituisce il ciclo for è l'equivalente di
Ovviamente il ciclo for e la funzione count permettono di lavorare su Array dei quali non si conosce a prescindere il numero degli elementi.
In alcuni casi puoi aver necessità di riportare solo una parte di una stringa molto lunga. Ad esempio quando devi far vedere il preview di una news. A questo scopo torna utilissima una funzione già bella pronta di php:
substr ( string ,start [,length] )
i 3 paramentri da prendere in considerazioni sono:
- la stringa su cui devi lavorare (string)
- la posizione di partenza (start)
- il numero di caratteri che vuoi visualizzare (length)
ecco ad esempio come prendere i primi 35 caratteri del primo verso della Divina Commedia
PHP:
-
$string ="Nel mezzo del cammin di nostra vita
-
mi ritrovai per una selva oscura,
-
ché la diritta via era smarrita.
-
";
-
$preview =
substr($string,
0,
35);
// "0" indica l'inizio
-
Il risultato dell'echo sarà:
"Nel mezzo del cammin di nostra vita ..."
...
come invece contare le parole e non i caratteri, te lo faccio vedere un'altra volta
Published on
October 26, 2008 in
dritte.
Tags: html.
Quando si inserisce del codice html all'interno di una chiamata echo, ricordarsi di anteporre il backslash \ ai doppi apici ". In questo modo.
PHP:
-
echo "<img src=\"immagine.gif\" width=\"72\" height=\"72\">";
In alternativa si possono direttamente escludere le virgolette, ma è decisamente poco elegante e può in casi particolari generare comunque errore. Non in questo.
PHP:
-
echo "<img src=immagine.gif width=72 height=72>";
Creare un campo input select con possibilità di selezione multipla come questo qui a fianco non è un problema, può invece esserlo recuperare tutti i valori che vengono postati.
Optare per una selezione di questo tipo significa voler passare più valori per la stessa variabile, dovrai quindi necessariamente trattarla come array, utilizzando le parentesi quadre "[]" nel nome del select. Nell'esempio qui sotto il select lo chiamo Selezione[] ed invia i valori alla pagina visualizza.php.
HTML:
-
-
-
-
</head>
-
-
<form id="form" name="form" method="post" action="visualizza.php">
-
<select name="Selezione[]" size="5" multiple="multiple">
-
<option value="Valore1">Opzione 1
</option>
-
<option value="Valore2">Opzione 2
</option>
-
<option value="Valore3">Opzione 3
</option>
-
<option value="Valore4">Opzione 4
</option>
-
<option value="Valore5">Opzione 5
</option>
-
-
<input type="submit" name="Submit" value="Invia" />
-
</form>
-
</body>
-
</html>
A questo punto nel file visualizza.php con foreach puoi recuperare tutti i valori ed utilizzarli come meglio credi.
PHP:
-
<?php
-
$Selezione=$_POST['Selezione'];
-
-
foreach ($Selezione as $valore) {
-
-
}
-
?>
Prendendo d'esempio sempre l'immagine in alto, il risultato sarà:
Valore2
valore4
Ultimi Commenti