Example12-2.php <?php $username = 'admin'; $password = 'letmein'; if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) { if ($_SERVER['PHP_AUTH_USER'] === $username && $_SERVER['PHP_AUTH_PW'] === $password) echo "You are now logged in"; else die("Invalid username/password combination"); } else { header('WWW-Authenticate: Basic realm="Restricted Area"'); header('HTTP/1.0 401 Unauthorized'); die ("Please enter your username and password"); } ?> Example12-4.php <?php // authenticate.php require_once 'login.php'; $connection = new mysqli($hn, $un, $pw, $db); if ($connection->connect_error) die("Fatal Error"); if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) { $un_temp = mysql_entities_fix_string($connection, $_SERVER['PHP_AUTH_USER']); $pw_temp = mysql_entities_fix_string($connection, $_SERVER['PHP_AUTH_PW']); $query = "SELECT * FROM users WHERE username='$un_temp'"; $result = $connection->query($query); if (!$result) die("User not found"); elseif ($result->num_rows) { $row = $result->fetch_array(MYSQLI_NUM); $result->close(); if (password_verify($pw_temp, $row[3])) echo htmlspecialchars("$row[0] $row[1] : Hi $row[0], you are now logged in as '$row[2]'"); else die("Invalid username/password combination"); } else die("Invalid username/password combination"); } else { header('WWW-Authenticate: Basic realm="Restricted Area"'); header('HTTP/1.0 401 Unauthorized'); die ("Please enter your username and password"); } $connection->close(); function mysql_entities_fix_string($connection, $string) { return htmlentities(mysql_fix_string($connection, $string)); } function mysql_fix_string($connection, $string) { if (get_magic_quotes_gpc()) $string = stripslashes($string); return $connection->real_escape_string($string); } ?> Example12-5.php <?php // authenticate2.php require_once 'login.php'; $connection = new mysqli($hn, $un, $pw, $db); if ($connection->connect_error) die("Fatal Error"); if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) { $un_temp = mysql_entities_fix_string($connection, $_SERVER['PHP_AUTH_USER']); $pw_temp = mysql_entities_fix_string($connection, $_SERVER['PHP_AUTH_PW']); $query = "SELECT * FROM users WHERE username='$un_temp'"; $result = $connection->query($query); if (!$result) die("User not found"); elseif ($result->num_rows) { $row = $result->fetch_array(MYSQLI_NUM); $result->close(); if (password_verify($pw_temp, $row[3])) { session_start(); $_SESSION['forename'] = $row[0]; $_SESSION['surname'] = $row[1]; echo htmlspecialchars("$row[0] $row[1] : Hi $row[0], you are now logged in as '$row[2]'"); die ("<p><a href='continue.php'>Click here to continue</a></p>"); } else die("Invalid username/password combination"); } else die("Invalid username/password combination"); } else { header('WWW-Authenticate: Basic realm="Restricted Area"'); header('HTTP/1.0 401 Unauthorized'); die ("Please enter your username and password"); } $connection->close(); function mysql_entities_fix_string($connection, $string) { return htmlentities(mysql_fix_string($connection, $string)); } function mysql_fix_string($connection, $string) { if (get_magic_quotes_gpc()) $string = stripslashes($string); return $connection->real_escape_string($string); } ?> Example12-6.php <?php // continue.php session_start(); if (isset($_SESSION['forename'])) { $forename = htmlspecialchars($_SESSION['forename']); $surname = htmlspecialchars($_SESSION['surname']); echo "Welcome back $forename.<br> Your full name is $forename $surname.<br>"; } else echo "Please <a href=authenticate2.php>click here</a> to log in."; ?> Example12-7.php <?php function destroy_session_and_data() { session_start(); $_SESSION = array(); setcookie(session_name(), '', time() - 2592000, '/'); session_destroy(); } ?> Example12-8.php <?php session_start(); if (isset($_SESSION['forename'])) { $forename = $_SESSION['forename']; $surname = $_SESSION['surname']; destroy_session_and_data(); echo htmlspecialchars("Welcome back $forename.<br> Your full name is $forename $surname."); echo $_SESSION['surname']; } else echo "Please <a href='authenticate2.php'>click here</a> to log in."; function destroy_session_and_data() { $_SESSION = array(); setcookie(session_name(), '', time() - 2592000, '/'); session_destroy(); } ?> Example12-9.php <?php // sessiontest.php session_start(); if (!isset($_SESSION['count'])) $_SESSION['count'] = 0; else ++$_SESSION['count']; echo $_SESSION['count']; ?> Example12-10.php <?php session_start(); if (!isset($_SESSION['initiated'])) { session_regenerate_id(); $_SESSION['initiated'] = 1; } if (!isset($_SESSION['count'])) $_SESSION['count'] = 0; else ++$_SESSION['count']; echo $_SESSION['count']; ?> example13-8.js n = '838102050' // Set 'n' to a string document.write('n = ' + n + ', and is a ' + typeof n + '<br>') n = 12345 * 67890; // Set 'n' to a number document.write('n = ' + n + ', and is a ' + typeof n + '<br>') n += ' plus some text' // Change 'n' from a number to a string document.write('n = ' + n + ', and is a ' + typeof n + '<br>') example13-9.js function product(a, b) { return a*b } example13-10.js function test() { a = 123 // Global scope var b = 456 // Local scope if (a == 123) var c = 789 // Local scope } example13-11.js test() if (typeof a != 'undefined') document.write('a = "' + a + '"<br />') if (typeof b != 'undefined') document.write('b = "' + b + '"<br />') if (typeof c != 'undefined') document.write('c = "' + c + '"<br />') function test() { a = 123 var b = 456 if (a == 123) var c = 789 } example13-13.js function $(id) { return document.getElementById(id) } example14-4.html month = "July" if (month == "October") document.write("It's the fall") example14-5.html a = 1000 b = "1000" if (a == b) document.write("1") if (a === b) document.write("2") example14-12.html try { request = new XMLHTTPRequest() } catch(err) { // Use a different method to create an XML HTTP Request object } example14-14.html switch (page) { case "Home": document.write("You selected Home") break case "About": document.write("You selected About") break case "News": document.write("You selected News") break case "Login": document.write("You selected Login") break case "Links": document.write("You selected Links") break } example15-3.html document.write(fixNames("the", "DALLAS", "CowBoys")) function fixNames() { var s = "" for (j = 0 ; j < fixNames.arguments.length ; ++j) s += fixNames.arguments[j].charAt(0).toUpperCase() + fixNames.arguments[j].substr(1).toLowerCase() + " " return s.substr(0, s.length-1) } example15-5.html function User(forename, username, password) { this.forename = forename this.username = username this.password = password this.showUser = function() { document.write("Forename: " + this.forename + "<br>") document.write("Username: " + this.username + "<br>") document.write("Password: " + this.password + "<br>") } } user = new User("Joe","joe","joepw") user.showUser(); example15-11.html pets = ["Cat", "Dog", "Rabbit", "Hamster"] pets.forEach(output) function output(element, index, array) { document.write("Element at index " + index + " has the value " + element + "<br>") } example16.php <?php // adduser.php // Start with the PHP code $forename = $surname = $username = $password = $age = $email = ""; if (isset($_POST['forename'])) $forename = fix_string($_POST['forename']); if (isset($_POST['surname'])) $surname = fix_string($_POST['surname']); if (isset($_POST['username'])) $username = fix_string($_POST['username']); if (isset($_POST['password'])) $password = fix_string($_POST['password']); if (isset($_POST['age'])) $age = fix_string($_POST['age']); if (isset($_POST['email'])) $email = fix_string($_POST['email']); $fail = validate_forename($forename); $fail .= validate_surname($surname); $fail .= validate_username($username); $fail .= validate_password($password); $fail .= validate_age($age); $fail .= validate_email($email); echo "<!DOCTYPE html>\n<html><head><title>An Example Form</title>"; if ($fail == "") { echo "</head><body>Form data successfully validated: $forename, $surname, $username, $password, $age, $email.</body></html>"; // This is where you would enter the posted fields into a database, // preferably using hash encryption for the password. exit; } echo <<<_END <!-- The HTML/JavaScript section --> <style> .signup { border: 1px solid #999999; font: normal 14px helvetica; color:#444444; } </style> <script> function validate(form) { fail = validateForename(form.forename.value) fail += validateSurname(form.surname.value) fail += validateUsername(form.username.value) fail += validatePassword(form.password.value) fail += validateAge(form.age.value) fail += validateEmail(form.email.value) if (fail == "") return true else { alert(fail); return false } } function validateForename(field) { return (field == "") ? "No Forename was entered.\\n" : "" } function validateSurname(field) { return (field == "") ? "No Surname was entered.\\n" : "" } function validateUsername(field) { if (field == "") return "No Username was entered.\\n" else if (field.length < 5) return "Usernames must be at least 5 characters.\\n" else if (/[^a-zA-Z0-9_-]/.test(field)) return "Only a-z, A-Z, 0-9, - and _ allowed in Usernames.\\n" return "" } function validatePassword(field) { if (field == "") return "No Password was entered.\\n" else if (field.length < 6) return "Passwords must be at least 6 characters.\\n" else if (!/[a-z]/.test(field) || ! /[A-Z]/.test(field) || !/[0-9]/.test(field)) return "Passwords require one each of a-z, A-Z and 0-9.\\n" return "" } function validateAge(field) { if (isNaN(field)) return "No Age was entered.\\n" else if (field < 18 || field > 110) return "Age must be between 18 and 110.\\n" return "" } function validateEmail(field) { if (field == "") return "No Email was entered.\\n" else if (!((field.indexOf(".") > 0) && (field.indexOf("@") > 0)) || /[^a-zA-Z0-9.@_-]/.test(field)) return "The Email address is invalid.\\n" return "" } </script> </head> <body> <table border="0" cellpadding="2" cellspacing="5" bgcolor="#eeeeee"> <th colspan="2" align="center">Signup Form</th> <tr><td colspan="2">Sorry, the following errors were found<br> in your form: <p><font color=red size=1><i>$fail</i></font></p> </td></tr> <form method="post" action="adduser.php" onSubmit="return validate(this)"> <tr><td>Forename</td> <td><input type="text" maxlength="32" name="forename" value="$forename"> </td></tr><tr><td>Surname</td> <td><input type="text" maxlength="32" name="surname" value="$surname"> </td></tr><tr><td>Username</td> <td><input type="text" maxlength="16" name="username" value="$username"> </td></tr><tr><td>Password</td> <td><input type="text" maxlength="12" name="password" value="$password"> </td></tr><tr><td>Age</td> <td><input type="text" maxlength="3" name="age" value="$age"> </td></tr><tr><td>Email</td> <td><input type="text" maxlength="64" name="email" value="$email"> </td></tr><tr><td colspan="2" align="center"><input type="submit" value="Signup"></td></tr> </form> </table> </body> </html> _END; // The PHP functions function validate_forename($field) { return ($field == "") ? "No Forename was entered<br>": ""; } function validate_surname($field) { return($field == "") ? "No Surname was entered<br>" : ""; } function validate_username($field) { if ($field == "") return "No Username was entered<br>"; else if (strlen($field) < 5) return "Usernames must be at least 5 characters<br>"; else if (preg_match("/[^a-zA-Z0-9_-]/", $field)) return "Only letters, numbers, - and _ in usernames<br>"; return ""; } function validate_password($field) { if ($field == "") return "No Password was entered<br>"; else if (strlen($field) < 6) return "Passwords must be at least 6 characters<br>"; else if (!preg_match("/[a-z]/", $field) || !preg_match("/[A-Z]/", $field) || !preg_match("/[0-9]/", $field)) return "Passwords require 1 each of a-z, A-Z and 0-9<br>"; return ""; } function validate_age($field) { if ($field == "") return "No Age was entered<br>"; else if ($field < 18 || $field > 110) return "Age must be between 18 and 110<br>"; return ""; } function validate_email($field) { if ($field == "") return "No Email was entered<br>"; else if (!((strpos($field, ".") > 0) && (strpos($field, "@") > 0)) || preg_match("/[^a-zA-Z0-9.@_-]/", $field)) return "The Email address is invalid<br>"; return ""; } function fix_string($string) { if (get_magic_quotes_gpc()) $string = stripslashes($string); return htmlentities ($string); } ?>