Soluzioni Esercizi

Download Report

Transcript Soluzioni Esercizi

Laboratorio di Tecnologie Web
Laurea in Scienze e Tecnologie Multimediali
Docente: Carlo Drioli
25 marzo 2014
1
PHP e HTML
Esercizio 1.1
Si scriva uno script DataOra.php che generi un semplice documento HTML avente come
titolo ”Data e Ora” e come corpo del documento la data e l’ora al momento dell’esecuzione dello script. Si usi la funzione ”string date ( string $format )” che restituisce
l’ora al momento dell’esecuzione dell’istruzione. La variabile $format permette di definire il formato da usare (ad es. ’D, d M Y H:i:s’). Si faccia riferimento al manuale PHP
(http://www.php.net) per altre possibilit`a. Per generare un file html mediante l’esecuzione
locale dello script, si usi il comando ”php DataOra.php > DataOra.html” in una shell di
comando del sistema operativo.
Soluzione:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Data e Ora</title></head>
<body>
<h1>Data e Ora al momento dell’esecuzione:</h1>
<?php
$data_ora=date(’D, d M Y H:i:s’);
echo "$data_ora\n. ";
?>
</body>
</html>
1
Esercizio 1.2
Si ripeta l’esercizio precedente trasferendo lo script su un server web e accedendo allo script
con un browser.
Esercizio 1.3
Si scriva uno script VerificaServer.php per visualizzare nel browser il contenuto della variabile superglobale \$_SERVER. Si stampi inoltre il contenuto (chiavi e valori) su righe
separate da righe tratteggiate ”- - - - - - - - - - - -” .
Soluzione:
<html>
<head><title>Verifica Server var</title></head>
<body>
<h1>Contenuto della variabile $_SERVER:</h1>
<?php
print_r($_SERVER);
echo "<hr />";
foreach($_SERVER as $key=> $value){
echo "\$_SERVER[$key]=$value";
echo "<br />";
echo "- - - - - - - - - - - - -";
echo "<br />";
}
?>
</body>
</html>
Esercizio 1.4
Si crei uno script PHP che generi una pagina html di risposta contenente l’URI di se stesso
(si usino le chiavi HTTP_HOST e PHP_SELF della variabile $_SERVER).
Soluzione: Listato p. 3.5 p. 88 del testo di riferimento.
Esercizio 1.5
Si crei uno script PHP che stampa il contenuto della variabile $ GET. Con un browser, si
invii poi allo script (trasferito su un server web) le seguenti coppie chiave-valore: ”specie =
cane” e ”nome = Toby”. Si ripeta l’esercizio per diversi valori delle chiavi specie e nome,
estendendo lo script PHP in modo che generi un documento html in cui l’informazione
ricevuta viene presentata con del testo esplicativo.
Soluzione:
2
<html>
<head><title>Stampa GET</title></head>
<body>
<p><h1>Stampa valori della var $_GET:</h1></p>
<?php
foreach($_GET as $K => $V){
echo "<p>chiave: $K, valore: $V</p>";
}
?>
</body>
</html>
Esercizio 1.6
Si crei uno script PHP che stampa il contenuto della variabile $ POST. Si crei poi un
semplice form con cui inviare allo script (trasferito su un server web) le seguenti coppie
chiave-valore: ”specie = gatto” e ”nome = Garfield”. Si ripeta l’esercizio per diversi valori
delle chiavi specie e nome, estendendo lo script PHP in modo che generi un documento
html in cui l’informazione ricevuta viene presentata con del testo esplicativo.
Soluzione (file HTML):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Form example</title>
</head>
<body>
<p> Inserisci i dati: </p>
<form action="http://users.dimi.uniud.it/~carlo.drioli/WebTech/elabora.php" method="post" id="formsemplice">
<p>
<label for="nome">Nome</label>
<input type="text" id="Nome" name="nome" size="10"/>
</p>
<p>
<label for="specie">Specie</label>
<input type="text" id="specie" name="specie" size="10"/>
</p>
<p>
<input type="submit" value="Spedisci" />
<input type="reset" value="Cancella" />
</p>
</form>
</body>
</html>
Soluzione (file PHP):
<html>
<head><title>Es trasmissione dati metodo POST</title></head>
<body>
<p><h1>I tuoi dati:</h1></p>
3
<?php
if(!empty($_POST["specie"])){
echo "<p>Sei un: ".$_POST["specie"]."</p>";
}else{
echo "<p>Non hai indicato la tua specie.</p>";
}
if(!empty($_POST["nome"])){
echo "<p>Ti chiami: ".$_POST["nome"]."</p>";
}else{
echo "<p>Non hai indicato il tuo nome.</p>";
}
?>
</body>
</html>
2
Manipolazione di stringhe
Esercizio 1.7
Si crei uno script PHP che, ricevuta una stringa da elaborare, esegua le seguenti elaborazioni:
• se la stringa immessa ha lunghezza maggiore di 5, ne stampi la sottostringa iniziale
di lunghezza 5 (si usi la funzione substr del linguaggio PHP ).
• conti le occorrenze di una seconda stringa, anch’essa data (si usi la funzione substr count del linguaggio PHP )
• sostituisca tutte le occorrenze della seconda stringa con una terza stringa data (si usi
la funzione substr replace del linguaggio PHP )
Soluzione: cfr. soluzione dell’esercizio seguente.
Esercizio 1.8
Si modifichi lo script precedente in modo che riceva le stringhe da elaborare attraverso un
form HTML e il metodo GET o POST, e restituisca il risultato in formato html visualizzabile dal client.
Soluzione:
<?php
function strProcFun($str1,$srchstr,$soststr)
{
echo "<p>La prima stringa inserita: $str1</p>\n";
echo "<p>La seconda stringa inserita: $srchstr</p>\n";
4
echo "<p>La terza stringa inserita: $soststr</p>\n";
echo "<hr/>\n";
if(strlen($str1)>5)
echo "<p>La sottostringa iniz. di lungh 5: ".substr($str1,0,5)."</p>\n";
if(strlen($srchstr)>0){
$pos=strpos($str1,$srchstr);
if($pos===FALSE)
echo "<p>La sottostringa $srchstr non e’ in $str1.</p>\n";
else{
echo "<p>La prima sottostringa $srchstr e’ in $str1 in posizione $pos.</p>\n";
if(strlen($soststr)>0)
echo "<p>La stringa con la sostituzione e’: ".str_replace($srchstr,$soststr,$str1)."</p>\n";
}
}
return;
}
?>
<html>
<head><title>Manipolazione di stringhe</title></head>
<body>
<?php
if(strlen($_GET["str1"])==0)
die("E’ necessaria almeno la prima stringa.");
else{
$str1=$_GET["str1"];
}
$srchstr=$_GET["srchstr"];
$soststr=$_GET["soststr"];
echo "<h1>Risultato dell’elaborazione delle stringhe</h1>\n";
strProcFun($str1,$srchstr,$soststr);
?>
</body>
</html>
Esercizio 1.9
Modificando l’esercizio precedente, si crei uno script che accetta del testo ed una parola
da cercare nel testo, e restituisca in una pagina html il testo con tutte le occorrenze della
parola trovata evidenziate in giallo.
Suggerimento: si ricordi che per modificare le propriet`a del font `e disponibile il tag
”FONT”. Ad esempio, per evidenziare in giallo la parola ”testo”:
<FONT style="BACKGROUND-COLOR: yellow">testo</FONT>.
Soluzione (file HTML):
<html>
<head>
<title>Ricerca stringa in testo</title>
</head>
<body>
<p><h1>Ricerca testuale</h1></p>
<form action="http://localhost/StrSearch.php" method="post" id="formsemplice">
<p> Inserisci del testo in cui fare la ricerca:<br/>
<textarea cols="70" rows="7" id="id_testo" name="testo"></textarea>
</p>
5
<p>La stringa da cercare:
<input type="text" id="Stringa" name="srchstr" size="10"/>
</p>
<p>
<input type="submit" value="Invia" />
<input type="reset" value="Cancella" />
</p>
</form>
</body>
</html>
Soluzione (file PHP):
<html>
<head><title>Ricerca testuale</title></head>
<body>
<?php
echo "<h1>Risultato della ricerca:</h1>\n";
if(strlen($_POST["testo"])==0)
die("E’ necessario inserire del testo.");
else{
$testo=$_POST["testo"];
}
$str1 = $_POST["srchstr"];
$repl_str1=’<FONT style="BACKGROUND-COLOR: yellow">’.$str1.’</FONT>’;
$testo_ris = str_replace($str1,$repl_str1,$testo);
echo "<p>Stringa cercata: ".$str1."</p>";
echo "<p><h1>Risultato della ricerca:</h1></p><br/>";
echo "<p>".$testo_ris."</p>";
?>
</body>
</html>
3
PHP e HTML: Esercizi vari
Esercizio 1.10
Sapendo che per ottenere una conversione Centimetri/Pollici `e necessario moltiplicare i
centimetri per 2.54, si scriva uno script PHP che restituisce una tabella di conversione per
tutti i valori interi compresi tra $cm_min e $cm_max, dove questi ultimi sono passati allo
script attraverso un apposito form in una pagina html. Si scriva una seconda versione
della soluzione, in cui per effettuare il calcolo nello script php, si definisce una funzione che
accetta i valori minimo e massimo come argomenti.
Soluzione:
<?php
function cmInchConv($min,$max){
echo "<table>\n";
6
for($i=$min;$i<=$max;$i++){
echo "<tr><td>$i</td><td>".($i*2.54)."</td></tr>\n";
}
echo "</table>\n";
return;
}
?>
<html>
<head><title>Conversione Cm-Pollici</title></head>
<body>
<?php
$cm_min=$_POST["cm_min"];
$cm_max=$_POST["cm_max"];
echo "<h1>Tabella di conversione Cm/Pollici per valori tra $cm_min e $cm_max.</h1>\n";
cmInchConv($cm_min,$cm_max);
?>
</body>
</html>
Esercizio 1.11
Con riferimento agli esercizi 1.5-1.9 del Laboratorio 1, nei quali si chiedeva di creare un
form per l’ invio al server di dati di vari natura, si scriva ora lo script PHP necessario a
ricevere ed elaborare tali dati, nel caso in cui l’elaborazione consista nella semplice visualizzazione (opportunamente con tag HTML di formattazione ) dei dati inviati.
Soluzione:
<html>
<head><title>Form</title></head>
<body>
<p>Ecco i dati che hai inviato:</p>
<?php
if(!empty($_POST["nome"])){
echo "<h1>Nome: " . $_POST["nome"] . "</h1>";
}
if(!empty($_POST["age"])){
echo "<h1>Eta’: " . $_POST["age"] . "</h1>";
}
if(!empty($_POST["email"])){
echo "<h1>Email: " . $_POST["email"] . "</h1>";
}
if(!empty($_POST["password"])){
echo "<h1>Password: " . $_POST["password"] . "</h1>";
}
if(!empty($_POST["commento"])){
echo "<h1>Commento: " . $_POST["commento"] . "</h1>";
}
if(!empty($_POST["genere"])){
echo "<h1>Genere: " . $_POST["genere"] . "</h1>";
}
if(!empty($_POST["interessi"])){
echo "<h1>Interessi:<br /> ";
$interessi=$_POST["interessi"];
foreach ($interessi as $key => $value) {
echo "$value<br />";
}
7
echo("</h1>");
}
if(!empty($_POST["professione"])){
echo "<h1>Professione: " . $_POST["professione"] . "</h1>";
}
?>
</body>
</html>
Esercizio 1.12
Si scriva uno script PHP che, ricevute due stringhe inviate dall’utente attraverso un form,
indichi se sono uguali o diverse. Nel caso in cui le stringhe sono diverse, lo script le visualizzi in ordine lessicografico e poi in ordine di lunghezza.
Soluzione:
<html>
<head><title>Ricerca testuale</title></head>
<body>
<?php
echo "<h1>Risultato della ricerca:</h1>\n";
if(strlen($_GET["str1"])==0)
die("La prima stringa e’ necessaria.");
if(strlen($_GET["str2"])==0)
die("La seconda stringa e’ necessaria.");
$str1=$_GET["str1"];
$str2=$_GET["str2"];
$str1len=strlen($str1);
$str2len=strlen($str2);
$strcmp=strcmp($str1,$str2);
if($strcmp==0){
echo "<p>Le due stringhe sono uguali</p>";
}else{
if($strcmp<0){
echo "<p>Le due stringhe sono diverse e la prima stringa ($str1) precede la seconda ($str2) lessicograficamente.</p>";
}else{
echo "<p>Le due stringhe sono diverse e la seconda stringa ($str2) precede la prima ($str1) lessicograficamente.</p>";
}
if($str1len<$str2len){
echo "<p>La prima stringa ($str1) e’ piu’ corta della seconda ($str2).</p>";
}elseif($str1len>$str2len){
echo "<p>La seconda stringa ($str2) e’ piu’ corta della prima ($str1).</p>";
}
}
?>
</body>
</html>
8