Pagine con piu’ scopi, ovvero pagine che possono decidere cosa mostrare in base a una o piu’ condizioni. La lettura del bel libro di Kevin Yank e’ stata illuminante…
Vediamo un esempio:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Sample Page</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> </head> <body> <?php if (!isset($_GET['name'])): ?> <!-- Nessun nome assegnato, per cui viene richiesto all'utente --> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get"> <label>Please enter your name: <input type="text" name="name" /></label> <input type="submit" value="GO" /> </form> <?php else: ?> <p>Your name: <?php echo $_GET['name']; ?></p> <p>This paragraph contains a <a href="newpage.php?name=<?php echo urlencode($_GET['name']); ?>">link</a> that passes the name variable on to the next document.</p> <?php endif; ?> </body> </html>
Qualche picola nota:
E’ da da notare, l’uso della funzione isset.
Questa funzione ritorna un valore “vero” se alla variabile e’ assegnato un valore e “falso” se la variabile non esiste.
Interessante anche l’uso della variabile $_SERVER[‘PHP_SELF’], utilizzata per specificare l’attributo action del form.
$_SERVER[‘PHP_SELF’] e’ sempre configurata sull’URL della pagina corrente, quindi il form, una volta inviato, carichera’ sempre la stessa pagina, ma con la variabile settata.
Immaginiamo ora di avere un sito gestito attraverso database. Il problema e’ quello di creare due differenti versioni di ciascuna pagina: una per l’utente non loggato (con la form per fare il login), una per l’utente regolarmente loggato.
Usando la tecnica delle pagine con piu’ scopi il problema ha in php una soluzione semplice ed elegante. L’esempio che riporto e’ tratto da un articolo di Kevin Yank (questo il link all’articolo originale).
Bob ha una pagina con delle news e un piccolo riquadro di login. Ecco il codice:
<html> <head> <title>Bob's Login Site</title> <body bgcolor="#00cc00"> <?php if ($_POST['login'] == "do") { $name = $_POST['name']; $pass = $_POST['password']; $db_cnct = mysql_connect("localhost", "user", "pass") or die("Could not connect to the database!"); $db = mysql_db_select("users", $db_cnct); $sql = "SELECT user, pass FROM users WHERE user = \"$name\" and pass = \"md5($pass)\""; // This is for an encrypted password-protection database $check_user = mysql_query($sql); $users = mysql_num_rows($check_user); if ($users < 1) { echo ("<center>Invalid Password!</center>"); echo ('<form action="'.$PHP_SELF.'" method="post">'); echo ('<input type="text" name="name"><br />'); echo ('<input type="password" name="password"><br />'); echo ('<input type="hidden" name="login" value="do">'); echo ('<input type="submit" value="Log-in">'); echo ('</form>'); } else { echo ("Welcome, $name!"); } } else { echo ('<form action="'.$PHP_SELF.'" method="post">'); echo ('<input type="text" name="name"><br />'); echo ('<input type="password" name="password"><br />'); echo ('<input type="hidden" name="login" value="do">'); echo ('<input type="submit" value="Log-in">'); echo ('</form>'); ?> </body> </html>
Lo script controlla se ci sono username e password (passati tramite il metodo HTTP POST).
Se non ci sono, lo script mostrera’ il codice che chiedera’ di loggarsi.
Se ci sono, lo script interroga il database per controllare se si tratta di una coppia di valori validi.
Se e’ tutto ok, verra’ mostrata la scritta “Welcome, $name!”, altrimenti verra’ stampata a schermo una indicazione di errore e verra’ riproposto il modulo di login.
Ed ecco un esempio pratico un po’ piu’ evoluto:
<?PHP $forum = $_GET['forum']; if (!isset ($forum) ) { $sql = "SELECT forums, ID FROM master_list"; $get_forums = mysql_query($sql); while ($forums = mysql_fetch_array($get_forums) ) { echo ('<a href="forums.php?forum'.$forums["ID"].'">'.$forums["forums"].'</a><br />'); } } else { $thread = $_GET['thread']; if (!isset ($thread) ) { $sql = "SELECT thread, ID FROM forum".$forum; $get_threads = mysql_query($sql); while ($threads = mysql_fetch_array($get_forums) ) { echo ('<a href="forums.php?forum='.$forum.'&thread='.$threads["ID"].'">'); echo ($threads["thread"].'</a><br />'); } } else { $sql = "SELECT messages FROM thread".$thread; $get_messages = mysql_query($sql); while ($messages = mysql_fetch_array($get_messages) ) { echo ('<table><tr><td>'.$messages["message"].'</td></tr></table>'); } } ?>
I test statistici sono strumenti fondamentali per l’analisi dei dati e la presa di decisioni informate. Scegliere…
Gli Alberi Decisionali sono un tipo di algoritmo di apprendimento automatico che utilizza una struttura…
Immaginiamo di voler trovare il percorso più veloce per raggiungere una destinazione in auto. Si…
Nel 1847, il matematico francese Augustin-Louis Cauchy stava lavorando su calcoli astronomici, quando ideò un…
La simulazione Monte Carlo è un metodo utilizzato per quantificare il rischio associato a un…
Abbiamo visto che la distribuzione binomiale si basa sull’ipotesi di una popolazione infinita N, condizione che si…