You are on page 1of 42

Ejercicios: Captulo 3

Ejercicio 1*
Crea una aplicacin PHP con cuatro variables diferentes. Necesitas almacenar valores enteros (integer),
flotantes (float) y cadenas de caracteres (string) en las tres primeras variables y la cuarta variable debe
ser un array que almacene detalles de tipos de datos. Utiliza la funcin gettype para mostrar el tipo de
dato de cada variable. Utiliza la funcin var_dump para obtener el tipo de dato y el valor del array.

Solucin #1

Abre tu editor de texto favorito y aade las siguientes lneas de cdigo en un archivo:

<?php

$varInt = 7;
$varFloat = 8.98;
$varString = "Hello World!";

$varArray = array("Integer", "Float", "String", "Boolean", "Array", "Object", "Resource", "Null");

echo $varInt;
echo " is an ";
echo gettype($varInt);
echo "<br/>";

echo $varFloat;
echo " is a ";
echo gettype($varFloat);
echo "<br/>";

echo $varString;
echo " is a ";
echo gettype($varString);
echo "<br/>";

var_dump($varArray);
?>

Guarda el archivo como index.html en la pasta xampp/htdocs. Ahora abre tu browser y escribe
localhost/index.php. Ahora tu pantalla aparecer as:

Ejercicios: Captulo 3 1

* El cdigo y las imgenes generadas por ese cdigo estn en ingls.


Ejercicio 2*

Crea un associative array que almacene el first name (primer nombre) y la age (edad) de 6 usuarios. Para
cada usuario, comprueba la edad y muestra el siguiente mensaje:

1. Hey <name>. You are <age> years old. You are too young. ("Hola <name>. Tienes <age> aos. Eres
demasiado joven. "), si la edad es inferior a 18.

2. Hi <name>. You are <age> years old. You are matured enough. ("Hola <name>. Tienes <age> aos.
Eres suficientemente maduro/a."), si la edad est entre 18 y 50 aos (ambos inclusive).

3. Hello <name>. You are <age> years old. You are too old. ("Hola <name>. Tienes <age> aos. Eres
demasiado viejo/a."), si la edad es superior a 50.

El <name> y la <age> deben sustituir el nombre y la edad, respectivamente, y los mensajes " You are too
young.", " You are matured enough." y " You are too old." se van a guardar como constantes llamadas
young (joven), mature (maduro) y old (viejo), respectivamente.

Solucin #2

Abre tu editor de texto favorito y aade las siguientes lneas de cdigo en un archivo:

<?php
define("young", "You are too young.");
define("mature", "You are matured enough.");
define("old", "You are too old.");
$age=array("John"=>"58","Hannah"=>"12","Chris"=>"43",
"David"=>"25","Sarah"=>"17","Edward"=>"69");
foreach($age as $x=>$value)
{
if ($value <18)
echo "Hi ". $x . ". You are " . $value . " years old." . young . "<br/>";
else if($value <=50)
echo "Hi ". $x . ". You are " . $value . " years old." . mature . "<br/>";
else
echo "Hi ". $x . ". You are " . $value . " years old." . old . "<br/>";
}
?>
Guarda el archivo como age.php en la pasta xampp/htdocs. Abre tu browser y escribe localhost/age.php.
Ahora tu pantalla aparecer as:

Ejercicios: Captulo 3 2

* El cdigo y las imgenes generadas por ese cdigo estn en ingls.


Ejercicio 3*
Crea dos archivos .php, primero y segundo, en el que el segundo .php contiene una funcin que muestra
el da de la semana utilizando sentencia switch. Incluye el segundo .php en el primero .php y llama la
funcin desde el primer .php.

Solucin #3

Abre tu editor de texto favorito y aade las siguientes lneas de cdigo en un archivo:

<?php
function displayDay() {
$day = date("w", time());
switch ($day) {
case "0" :
echo "Today is Sunday.";
break;
case "1" :
echo "Today is Monday.";
break;
case "2" :
echo "Today is Tuesday.";
break;
case "3" :
echo "Today is Wednesday.";
break;
case "4" :
echo "Today is Thursday.";
break;
case "5" :
echo "Today is Friday.";
break;
case "6" :
echo "Today is Saturday.";
break;
}
}
?>
Guarda el archivo como second.php en la pasta xampp/htdocs. Aade las siguientes lneas de cdigo en
un nuevo archivo:

<?php
include("second.php");
displayDay();
?>

Guarda el archivo como first.php en la pasta xampp/htdocs y escribe la direccin localhost/first.php en tu


browser. Ahora tu pantalla aparecer as:

Ejercicios: Captulo 3 3

* El cdigo y las imgenes generadas por ese cdigo estn en ingls.


El da ser diferente en funcin de cundo se est ejecutando el cdigo.

Ejercicio 4*
Crea un formulario que pida al usuario que introduzca su name (nombre), email, password (y que la
confirme), que escoja el nmero de aparatos electrodomsticos que posee y, finalmente, que seleccione
el dispositivo/s domestico/s ms til/es (opcin individual) de una lista. Valida las entradas introducidas
por el usuario cuando pincha el botn Submit (Someter). Todos los campos deben ser obligatorios.
Muestra mensajes de error apropiados, en el caso de que falte alguno de los campos. Muestra un
mensaje apt cuando el usuario pinche el botn Submit, despus de haber colocado correctamente los
valores.

Solucin #4

Abre tu editor de texto favorito y aade las siguientes lneas de cdigo en un archivo:

<html>
<head>
<title>FORM</title>
</head>
<body>
<form method="post" action="processForm.php">
Name: <input type="text" id="name" name="name" /> <br/>
Email: <input type="text" id="email" name="email" /> <br/>
Password: <input type="password" id="pwd" name="pwd" /> <br/>
Confirm Password: <input type="password" id="confpwd" name="confpwd" /> <br/>
How many home appliances you own?
<input type="radio" name="howMany" value="zero"> 0
<input type="radio" name="howMany" value="one"> 1
<input type="radio" name="howMany" value="two"> 2
<input type="radio" name="howMany" value="twoplus"> More than 2
<br/>
Select the most useful home appliance/s of your choice:
<select name="favAppliances[]" size="4" multiple>
<option value="tv">Television</option>
<option value="fridge">Refrigerator</option>
<option value="washing">Washing Machine</option>
<option value="oven">Microwave Oven</option>
<option value="other">Others</option>
</select>
<br/>
<input type="submit" id="submit" value="Submit" />
</form>
</body>
</html>

Ejercicios: Captulo 3 4

* El cdigo y las imgenes generadas por ese cdigo estn en ingls.


Guarda el archivo como form.php en la pasta xampp/htdocs y aade las siguientes lneas de cdigo en
un nuevo archivo:

<?php
$flag = 0;
if (empty($_POST["name"]))
{
echo "Please enter your name. <br/>";
$flag = 1;
}
else
$flag = 0;
if (empty($_POST["email"]))
{
echo "Please enter your email address. <br/>";
$flag = 1;
}
else
$flag = 0;
if (empty($_POST["pwd"]))
{
echo "Please enter your password. <br/>";
$flag = 1;
}
else
$flag = 0;
if (empty($_POST["confpwd"]))
{
echo "Please confirm your password. <br/>";
$flag = 1;
}
else
$flag = 0;
if ($_POST["pwd"] != $_POST["confpwd"])
{
echo "Your passwords do not match. <br/>";
$flag = 1;
}
else
$flag = 0;
if (!isset($_POST["howMany"]))
{
echo "You must select one option. <br/>";
$flag = 1;
}
else
$flag = 0;
if (empty($_POST["favAppliances"]))
{
echo "You must select one or more appliance.";
$flag = 1;
}
else
$flag = 0;

Ejercicios: Captulo 3 5
if($flag == 0)
echo "Your form has been submitted successfully."
?>

Guarda el archivo como processForm.php en la pasta xampp/htdocs y escribe localhost/form.php en tu


browser. Tu pantalla aparecer as:

Pincha el botn Submit sin rellenar nada y tu pantalla aparecer as:

Pon name, email y password (pon una password incorrecta) y confirma, tu pantalla aparecer as.

Si colocas todos los valores correctamente, tu pantalla aparecer as.

Ejercicios: Captulo 3 6
Ejercicio 5*
Crea un sitio web de freelancing profesional. Debe tener dos tipos de usuarios: administradores y
freelancers. La pgina de inicio del sitio web debe tener dos enlaces: Sign Up y Log In.

Si el usuario pincha el enlace Sign Up, debe poder registrarse como freelancer, colocando su first name
(primer nombre), last name (apellido), email, user id y password. Certifcate que el mismo usuario no se
registra otra vez comprobando si la direccin de email ya se encuentra en la base de datos. Certifcate
tambin que el user id, solicitado por el usuario, es nico. En el momento del registro el nivel debe ser
estndar y el administrador lo ir actualizando (aumentando). Los usuarios registrados deben poder hacer
login y ver los detalles de todas las ofertas disponibles.

Los administradores registrados deben poder actualizar el nivel de los usuarios e incluso apagarlos (si
necesario). Cuando el administrador se registra, debe ver el nombre, direccin de email, user id y el nivel
de todos los usuarios existentes, estos datos deben estar en una tabla con enlaces para actualizar el nivel
del usuario e incluso para apagarlo. Cuando el administrador pincha el enlace para actualizar el nivel,
debe ver una tabla con los detalles de todos los usuarios. Cuando el usuario pincha el id, debe ser
direccionado para una pgina nueva, donde debe poder actualizar solamente el nivel del usuario.
Cuando el usuario pincha el enlace para apagar el nivel, debe ver una tabla con los detalles de todos los
usuarios. Cuando pincha el id, debe ser direccionado para una pgina nueva, donde los detalles de ese
usuario en particular deben ser apagados, despus de una confirmacin.

Solucin #5

Abre tu browser y escribe localhost/phpmyadmin para crear una base de datos y tabla MySQL. Crea una
base de datos llamada mysite y dos tablas llamadas users (usuarios) y jobs (trabajos). La tabla users
debe tener 8 columnas: id, fname, lname, email, userid, password, rank y admin. La id debe ser la llave
primaria y aumentar automticamente. La tabla jobs debe tener 5 columnas: id, title, description, client y
status. Crea, en la tabla jobs, dos o tres trabajos con el valor, del estado, abierto y uno o dos trabajos con
el valor, del estado, cerrado. En la pasta xampp/htdocs folder, crea una pasta llamada mysite donde
guardaremos todas nuestras pginas web.

Crea una pasta mysite en la pasta xampp/htdocs. Abre tu editor de texto favorito y aade las siguientes
lneas de cdigo en un archivo:

<html>
<head>
<title>Home Page</title>
</head>
<body>
<h1><center>Welcome to the World of Freelancing</center></h1>
<p></p>
<h3><center>
<a href="registrationform.php">Sign Up</a>&nbsp;
<a href="loginform.php">Login</a>
</center></h3>
</body>
</html>
Ejercicios: Captulo 3 7

* El cdigo y las imgenes generadas por ese cdigo estn en ingls.


Guarda el archivo como home.php en la pasta mysite. Abre otra vez un nuevo archivo en tu editor de
texto y aade las siguientes lneas de cdigo:

<html>
<head>
<title>Register</title>
</head>
<body>
<h2>Enter the Details to Register</h2>
<form method="post" action="register.php">
<table border="0" width="100%">
<tr><td width="10%">First Name:</td> <td><input type="text" id="fname" name="fname"
maxlength="15"/></td></tr>
<tr><td width="10%">Last Name:</td> <td><input type="text" id="lname" name="lname"
maxlength="15"/></td></tr>
<tr><td width="10%">Email:</td> <td> <input type="text" id="email" name="email"
maxlength="30"/></td></tr>
<tr><td width="10%">User Id:</td> <td><input type="text" id="uid" name="uid"
maxlength="10"/></td></tr>
<tr><td width="10%">Password: </td> <td><input type="password" id="pwd" name="pwd"
maxlength="10"/></td></tr>
<tr><td width="10%">Confirm Password:</td> <td><input type="password" id="confpwd"
name="confpwd" maxlength="10"/></td></tr>
</table>
<p></p>
<input type="submit" id="submit" value="Register" />
</form>
</body>
</html>
<?php include("userlink.html"); ?>

Guarda el archivo como registrationform.php en la pasta mysite. Abre otra vez un nuevo archivo en tu
editor de texto y aade las siguientes lneas de cdigo:

<?php

$fname = $_POST['fname'];
$lname = $_POST['lname'];
$email = $_POST['email'];
$userid = $_POST['uid'];
$pwd = $_POST['pwd'];
$repwd = $_POST['confpwd'];

if($pwd == $repwd)
{
if ($fname && $lname && $email && $userid && $pwd && $repwd)
{
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
echo "Please enter a valid email address.";
echo "<br /><a href='registrationform.php'>Back</a>";
}
else
{

Ejercicios: Captulo 3 8
mysql_connect("localhost", "root", "") or die("Problem with Connection!");
mysql_select_db("mysite");

$mysql_email = mysql_query("SELECT * FROM users WHERE email = '$email'");


$email_numrows = mysql_num_rows($mysql_email);
if( $email_numrows == 0)
{
$mysql_userid = mysql_query("SELECT * FROM users WHERE userid = '$userid'");
$userid_numrows = mysql_num_rows($mysql_userid);
if($userid_numrows == 0)
{
mysql_query("INSERT INTO users(fname,lname,email,userid,password,admin,rank)
VALUES('$fname', '$lname', '$email', '$userid', '$pwd',0,1)");
$registered = mysql_affected_rows();
mysql_close();

if($registered == 1)
header("location:jobs.php") ;
else
{
echo "Error while registering!!!";
include("userlink.html");
}
}
else
{
echo "User id already exists. Please enter another user id.";
echo "<br /><a href='registrationform.php'>Back</a>";
}
}
else
{
echo "Email id already exists. Please enter another email.";
echo "<br /><a href='registrationform.php'>Back</a>";
}
}
}
else
{
echo "You have to complete the form.";
echo "<br /><a href='registrationform.php'>Back</a>";
}
}
else
{
echo "Your passwords do not match.";
echo "<br /><a href='registrationform.php'>Back</a>";
}

?>

Ejercicios: Captulo 3 9
Guarda el archivo como register.php en la pasta mysite. Abre otra vez un nuevo archivo en tu editor de
texto y aade las siguientes lneas de cdigo:

<html>
<head>
<title>Login</title>
</head>
<body>
<h2>Enter the User Id and Password to Login</h2>
<form method="post" action="login.php">
<table border="0" width="60%">
<tr><td width="10%">User Id:</td> <td><input type="text" id="uid" name="uid" /></td></tr>
<tr><td width="10%">Password: </td> <td><input type="password" id="pwd" name="pwd"
/></td></tr>
</table>
<p></p>
<input type="submit" id="submit" value="Login" />
</form>
</body>
</html>
<?php include("userlink.html"); ?>

Guarda el archivo como loginform.php en la pasta mysite. Abre otra vez un nuevo archivo en tu editor de
texto y aade las siguientes lneas de cdigo:

<?php
$userid = $_POST['uid'];
$pwd = $_POST['pwd'];

mysql_connect("localhost", "root", "") or die("Problem with Connection!");


mysql_select_db("mysite");
$result = mysql_query("SELECT * FROM users WHERE userid = '$userid'");
$nums = mysql_num_rows($result);
if($nums ==1)
{
$result = mysql_query("SELECT * FROM users WHERE userid = '$userid' AND password =
'$pwd'");
$nums = mysql_num_rows($result);
if($nums == 1)
{
$admin = mysql_query("SELECT * FROM users WHERE userid = '$userid' AND password =
'$pwd' AND admin = 1");
$yesadmin = mysql_num_rows($admin);
if($yesadmin == 1)
header("location:users.php");
else
header("location:jobs.php");
}
else
{
echo "Your password is incorrect.";
include("userlink.html");
}
}
else

Ejercicios: Captulo 3 10
{
echo "The user id you entered does not exist.";
include("userlink.html");
}
mysql_close();
?>

Guarda el archivo como login.php en la pasta mysite. Abre otra vez un nuevo archivo en tu editor de texto
y aade las siguientes lneas de cdigo:

<?php
echo "<h2>Current Open Jobs</h2>";
mysql_connect("localhost", "root", "") or die("Problem with Connection!");
mysql_select_db("mysite");
$result = mysql_query("SELECT * FROM jobs WHERE status='open'");
echo "<table width=\"80%\" align=center border=2>";
echo "<tr><th width=\"10%\" align=center bgcolor=\"FFFF00\">No:</th>
<th width=\"30%\" align=center bgcolor=\"FFFF00\">Job Title</th>
<th width=\"40%\" align=center bgcolor=\"FFFF00\">Job Description</th>
<th width=\"40%\" align=center bgcolor=\"FFFF00\">Client</th></tr>";

while($row = mysql_fetch_array($result))
{
$no = 1;
$id = $row['id'];
$title = $row['title'];
$descr = $row['description'];
$client = $row['client'];
echo "<tr>
<td>$no</td>
<td>$title</td>
<td>$descr</td>
<td>$client</td></tr>";
}
echo "</table>";
include("userlink.html");
?>

Guarda el archivo como jobs.php en la pasta mysite. Abre otra vez un nuevo archivo en tu editor de texto
y aade las siguientes lneas de cdigo:

<?php
echo "<h2>Freelancers</h2>";
mysql_connect("localhost", "root", "") or die("Problem with Connection!");
mysql_select_db("mysite");
$result = mysql_query("SELECT * FROM users WHERE admin = 0");
echo "<table width=\"80%\" align=center border=2>";
echo "<tr><th width=\"10%\" align=center bgcolor=\"FFFF00\">No:</th>
<th width=\"30%\" align=center bgcolor=\"FFFF00\">Name</th>
<th width=\"30%\" align=center bgcolor=\"FFFF00\">Email</th>
<th width=\"20%\" align=center bgcolor=\"FFFF00\">User Id</th>
<th width=\"10%\" align=center bgcolor=\"FFFF00\">Level</th></tr>";
$no = 1;
while($row = mysql_fetch_array($result))
{

Ejercicios: Captulo 3 11
$email = $row['email'];
$fname = $row['fname'];
$lname = $row['lname'];
$name = $fname . " " . $lname;
$userid = $row['userid'];
$level = $row['rank'];
echo "<tr>
<td>$no</td>
<td>$name</td>
<td>$email</td>
<td>$userid</td>
<td>$level</td></tr>";
$no++;
}
echo "</table>";
mysql_close();
include("adminlink.html");
?>

Guarda el archivo como users.php en la pasta mysite. Abre otra vez un nuevo archivo en tu editor de
texto y aade las siguientes lneas de cdigo:

<?php
echo "<h2>Click the Number of the user to Edit the Level</h2>";
mysql_connect("localhost", "root", "") or die("Problem with Connection!");
mysql_select_db("mysite");
$result = mysql_query("SELECT * FROM users WHERE admin = 0");
echo "<table width=\"80%\" align=center border=2>";
echo "<tr><th width=\"10%\" align=center bgcolor=\"FFFF00\">No:</th>
<th width=\"30%\" align=center bgcolor=\"FFFF00\">Name</th>
<th width=\"30%\" align=center bgcolor=\"FFFF00\">Email</th>
<th width=\"30%\" align=center bgcolor=\"FFFF00\">Level</th></tr>";
$no = 1;
while($row = mysql_fetch_array($result))
{
$email = $row['email'];
$fname = $row['fname'];
$lname = $row['lname'];
$name = $fname . " " . $lname;
$level = $row['rank'];
echo "<tr>
<td><a
href=\"edit.php?emails=$email&fnames=$fname&lnames=$lname&levels=$level\">$no</a></td
>
<td>$name</td>
<td>$email</td>
<td>$level</td></tr>";
$no++;
}
echo "</table>";
mysql_close();
include("adminlink.html");
?>

Ejercicios: Captulo 3 12
Guarda el archivo como editlevel.php en la pasta mysite. Abre otra vez un nuevo archivo en tu editor de
texto y aade las siguientes lneas de cdigo:

<?php
$name = $_REQUEST['fnames'] . " " . $_REQUEST['lnames'];
$email = $_REQUEST['emails'];
$level = $_REQUEST['levels'];
?>
<html>
<head>
<title>Edit Level</title>
</head>
<body>
<h2>Edit the level of <?php echo $name; ?> and Click Update</h2>
<form method="post" action="update.php">
<table border="0" width="100%">
<tr><td width="10%">Name:</td> <td><input type="text" id="fullname" name="fullname"
value="<?php echo $name; ?>" readonly></td></tr>
<tr><td width="10%">Email:</td> <td> <input type="text" id="email" name="email" value =
"<?php echo $email; ?>" readonly/></td></tr>
<tr><td width="10%">Level:</td> <td><input type="text" id="level" name="level" value="<?php
echo $level; ?>" /></td></tr>

</table>
<p></p>
<input type="submit" id="submit" value="Update Level" />
</form>
</body>
</html>
<?php include("adminlink.html"); ?>

Guarda el archivo como edit.php en la pasta mysite. Abre otra vez un nuevo archivo en tu editor de texto
y aade las siguientes lneas de cdigo:

<?php
$email = $_POST['email'];
$level = $_POST['level'];

$int_options = array("options"=>
array("min_range"=>1, "max_range"=>25));

if (filter_var($level, FILTER_VALIDATE_INT, $int_options))


{
mysql_connect("localhost", "root", "") or die("Problem with Connection!");
mysql_select_db("mysite");
$result = mysql_query("UPDATE users SET rank = '$level' WHERE email = '$email'");
echo "The level is updated successfully.";
mysql_close();
}
else
echo "The level allowed is between 1 and 25.";
include("adminlink.html");
?>

Ejercicios: Captulo 3 13
Guarda el archivo como update.php en la pasta mysite. Abre otra vez un nuevo archivo en tu editor de
texto y aade las siguientes lneas de cdigo:

<?php
echo "<h2>Click the Number of the user to Delete</h2>";
mysql_connect("localhost", "root", "") or die("Problem with Connection!");
mysql_select_db("mysite");
$result = mysql_query("SELECT * FROM users WHERE admin = 0");
echo "<table width=\"80%\" align=center border=2>";
echo "<tr><th width=\"10%\" align=center bgcolor=\"FFFF00\">No:</th>
<th width=\"30%\" align=center bgcolor=\"FFFF00\">Name</th>
<th width=\"30%\" align=center bgcolor=\"FFFF00\">Email</th>
<th width=\"30%\" align=center bgcolor=\"FFFF00\">User Id</th></tr>";

$no = 1;
while($row = mysql_fetch_array($result))
{
$email = $row['email'];
$fname = $row['fname'];
$lname = $row['lname'];
$name = $fname . " " . $lname;
$uid = $row['userid'];
echo "<tr>
<td><a
href=\"delete1.php?emails=$email&fnames=$fname&lnames=$lname&uid=$uid\">$no</a></td>
<td>$name</td>
<td>$email</td>
<td>$uid</td></tr>";
$no++;
}
echo "</table>";
mysql_close();
include("adminlink.html");
?>

Guarda el archivo como deleteuser.php en la pasta mysite. Abre otra vez un nuevo archivo en tu editor
de texto y aade las siguientes lneas de cdigo:

<?php
$name = $_REQUEST['fnames'] . " " . $_REQUEST['lnames'];
$email = $_REQUEST['emails'];
$userid = $_REQUEST['uid'];
echo "<table border='0' width='100%'>";
echo "<tr><td width='10%'><b>Name: </b> $name </td></tr>";
echo "<tr><td width='10%'><b>Email: </b>$email</td></tr>";
echo "<tr><td width='10%'><b>User Id: </b>$userid</td></tr></table>";
?>
<form method="post" action="delete2.php">
Are you sure you want to delete? <input type="submit" id="submit" value="Yes" />
<input type="hidden" name="emails" value= "<?php echo $_REQUEST['emails']; ?>" >
</form>

Ejercicios: Captulo 3 14
Guarda el archivo como delete1.php en la pasta mysite. Abre otra vez un nuevo archivo en tu editor de
texto y aade las siguientes lneas de cdigo:

<?php
$email = $_POST['emails'];

mysql_connect("localhost", "root", "") or die("Problem with Connection!");


mysql_select_db("mysite");
$result = mysql_query("DELETE FROM users WHERE email = '$email'");
echo "The user is deleted successfully.";
mysql_close();
include("adminlink.html");
?>

Guarda el archivo como delete2.php en la pasta mysite. Abre otra vez un nuevo archivo en tu editor de
texto y aade las siguientes lneas de cdigo:

<html>
<head>
<style>
a
{
text-align: center;
}

p{
font-size: 20px;
}

</style>
</head>
<body>
<a href='home.php'><p>Home</p></a>
</body>
</html>

Guarda el archivo como userlink.html en la pasta mysite. Abre otra vez un nuevo archivo en tu editor de
texto y aade las siguientes lneas de cdigo:

<html>
<head>
<style>
div
{
text-align: center;
}

p{
font-size: 20px;
}

</style>
</head>
<body>

Ejercicios: Captulo 3 15
<div>
<a href='home.php'><p>Home</p></a>
<a href="users.php"><p>All Users</p></a>
<a href='editlevel.php'><p>Edit Level</p></a>
<a href='deleteuser.php'><p>Delete User</p></a>
</div>
</body>
</html>

Guarda el archivo como adminlink.html en la pasta mysite. Ahora el proyecto est listo. Abre tu browser y
escribe localhost/mysite/home.php. Tu pantalla aparecer as:

Pincha el enlace Sign Up, coloca los datos y pincha el botn Register. Si colocas una direccin de email
invlida te aparecer un mensaje como este:

Si colocas un email id que ya existe en la base de datos, te aparecer un mensaje como este:

Si colocas un user id que ya existe en la base de datos, te aparecer un mensaje como este:

Si la password colocada y la confirmacin de la password no coinciden, te aparecer un mensaje como


este:

Si tu registro es correcto, sers direccionado para una pgina como esta:

Ejercicios: Captulo 3 16
Registra cinco o seis usuarios. Vete a la base de datos y abre la tabla users. Modifica el valor admin de
uno o dos de los usuarios para 1 (estar 0 por defecto). A continuacin, pincha el enlace login en la
pgina inicial y entra utilizando el id y la password del usuario al que has cambiado el valor admin para 1:

Pincha el botn Login y te aparecer una pantalla como esta: (los detalles sern diferentes dependiendo
de los datos colocados).

Pincha el enlace Edit Level y te aparecer una pantalla como esta:

Pincha cualquier nmero (primera columna) y sers direccionado para una pantalla como esta:

Ejercicios: Captulo 3 17
Cambia el nivel para 100 y pincha el botn Update Level y te aparecer un mensaje como este:

Cambia el nivel para 100 y pincha el botn Update Level y te aparecer un mensaje como este:

Pincha el enlace Delete User y tu pantalla aparecer as:

Pincha cualquier uno de los nmeros y sers direccionado para una pantalla como esta:

Pincha el botn Yes y te aparecer un mensaje como este:

Ejercicios: Captulo 3 18
Ejercicio 6*
Modifica la aplicacin desarrollada en el ejercicio anterior para implementar paginacin y motor de
bsqueda. Cuando el administrador pincha los enlaces All Users (Todos los Usuarios), Edit Level (Editar
Nivel) o Delete Users (Apagar Usuarios), deben aparecer 5 registros por pgina. El motor de bsqueda
debe permitir al administrador hacer una bsqueda por first name (nombre) o last name (apellido) del
usuario. El enlace Search User (Buscar Usuario) tambin debe estar disponible junto con otros enlaces
en todas las pginas de administracin.

Solucin #6

Abre tu editor de texto y abre el archivo index.html. Aade un botn, como este, dentro de la <body> tag:

<html>

<head>

<title>Search User</title>
</head>

<body>
<center>
<form method="get" action="searchuser.php">
Enter the String: <input type="text" name="search">
<input type="submit" name="submit" value="Search User">

</form>
</center>
<hr />
<h1>Results: </h1>
<?php

if(isset($_REQUEST['submit']))
{
$search = $_GET['search'];
$terms = explode(" " , $search);
$query = "SELECT * FROM users WHERE ";
$i = 0;
foreach($terms as $each)
{
$i++;
if($i == 1)
$query .= "fname LIKE '%$each%' OR lname LIKE '%$each%' ";
else
$query .= "OR fname LIKE '%$each%' OR lname LIKE '%$each%' ";
}

mysql_connect("localhost", "root", "") or die("Problem with Connection!");


mysql_select_db("mysite");
$query = mysql_query($query);
$num = mysql_num_rows($query);

Ejercicios: Captulo 3 19

* El cdigo y las imgenes generadas por ese cdigo estn en ingls.


if($num >0 && $search!="")
{
echo "$num result(s) found for <b>$search</b>!!!";
while($row = mysql_fetch_assoc($query))
{
$id = $row['id'];
$email = $row['email'];
$fname = $row['fname'];
$lname = $row['lname'];
$name = $fname . " " . $lname;
$userid = $row['userid'];
$level = $row['rank'];

echo "<br /><h3>Name: $name (ID: $id) </h3> Email: $email <br /> User Id: $userid <br />
Level: $level";
}
}
else
echo "No results found!!";
}
else
echo "Please type one or more words.";
include("adminlink.html");
?>
</body>

</html>

Guarda el archivo como searchuser.php en la pasta mysite (que has creado en el ejercicio anterior). Abre
el archivo adminlink.html y modifcalo as:

<html>
<head>
<style>
div
{
text-align: center;
}

p{
font-size: 20px;
}
</style>
</head>
<body>
<div>
<a href='home.php'><p>Home</p></a>
<a href="users.php"><p>All Users</p></a>
<a href="searchuser.php"><p>Search User</p></a>
<a href='editlevel.php'><p>Edit Level</p></a>
<a href='deleteuser.php'><p>Delete User</p></a>
</div>
</body>
</html>

Ejercicios: Captulo 3 20
Guarda el archivo y abre el archivo users.php, modifcalo as:

<?php
echo "<h2>Freelancers</h2>";
mysql_connect("localhost", "root", "") or die("Problem with Connection!");
mysql_select_db("mysite");

$per_page = 5;
$pages_query = mysql_query("SELECT COUNT('id') FROM users");
$pages = ceil(mysql_result($pages_query, 0) / $per_page);
$page = (isset($_GET['page'])) ? (int) $_GET['page'] : 1;
$start = ($page - 1) * $per_page;
$query = mysql_query("SELECT * FROM users WHERE admin = 0 LIMIT $start, $per_page");

echo "<table width=\"80%\" align=center border=2>";


echo "<tr><th width=\"10%\" align=center bgcolor=\"FFFF00\">No:</th>
<th width=\"30%\" align=center bgcolor=\"FFFF00\">Name</th>
<th width=\"30%\" align=center bgcolor=\"FFFF00\">Email</th>
<th width=\"20%\" align=center bgcolor=\"FFFF00\">User Id</th>
<th width=\"10%\" align=center bgcolor=\"FFFF00\">Level</th></tr>";

while($row = mysql_fetch_assoc($query))
{
$no = $row['id'];
$email = $row['email'];
$fname = $row['fname'];
$lname = $row['lname'];
$name = $fname . " " . $lname;
$userid = $row['userid'];
$level = $row['rank'];
echo "<tr>
<td>$no</td>
<td>$name</td>
<td>$email</td>
<td>$userid</td>
<td>$level</td></tr>";
}
echo "</table>";
mysql_close();

$prev = $page - 1;
$next = $page + 1;
echo "<br /><center>";
if($page > 1)
echo "<a href='users.php?page=$prev'>Prev</a> ";
if($pages >=1)
{
for($x=1;$x<=$pages;$x++)
{
echo ($x == $page) ? '<b>' . $x . '</b> ': '<a href="?page=' . $x . '">' . $x . '</a> ';
}

Ejercicios: Captulo 3 21
}
if($page < $pages)
echo "<a href='users.php?page=$next'>Next</a> ";
echo "</center>";
include("adminlink.html");
?>

Guarda el archivo y abre el archivo editlevel.php, modifcalo as:

<?php
echo "<h2>Click the Number of the user to Edit the Level</h2>";
mysql_connect("localhost", "root", "") or die("Problem with Connection!");
mysql_select_db("mysite");

$per_page = 5;
$pages_query = mysql_query("SELECT COUNT('id') FROM users");
$pages = ceil(mysql_result($pages_query, 0) / $per_page);
$page = (isset($_GET['page'])) ? (int) $_GET['page'] : 1;
$start = ($page - 1) * $per_page;
$query = mysql_query("SELECT * FROM users WHERE admin = 0 LIMIT $start, $per_page");

echo "<table width=\"80%\" align=center border=2>";


echo "<tr><th width=\"10%\" align=center bgcolor=\"FFFF00\">No:</th>
<th width=\"30%\" align=center bgcolor=\"FFFF00\">Name</th>
<th width=\"30%\" align=center bgcolor=\"FFFF00\">Email</th>
<th width=\"30%\" align=center bgcolor=\"FFFF00\">Level</th></tr>";

while($row = mysql_fetch_array($query))
{
$no = $row['id'];
$email = $row['email'];
$fname = $row['fname'];
$lname = $row['lname'];
$name = $fname . " " . $lname;
$level = $row['rank'];
echo "<tr>
<td><a
href=\"edit.php?emails=$email&fnames=$fname&lnames=$lname&levels=$level\">$no</a></td
>
<td>$name</td>
<td>$email</td>
<td>$level</td></tr>";
}
echo "</table>";
mysql_close();
$prev = $page - 1;
$next = $page + 1;
echo "<br /><center>";
if($page > 1)
echo "<a href='editlevel.php?page=$prev'>Prev</a> ";
if($pages >=1)
{
for($x=1;$x<=$pages;$x++)
{

Ejercicios: Captulo 3 22
echo ($x == $page) ? '<b>' . $x . '</b> ': '<a href="?page=' . $x . '">' . $x . '</a> ';
}
}
if($page < $pages)
echo "<a href='editlevel.php?page=$next'>Next</a> ";
echo "</center>";
include("adminlink.html");
?>

Guarda el archivo y abre el archivo deleteuser.php, modifcalo as:

<?php
echo "<h2>Click the Number of the user to Delete</h2>";
mysql_connect("localhost", "root", "") or die("Problem with Connection!");
mysql_select_db("mysite");
$per_page = 5;
$pages_query = mysql_query("SELECT COUNT('id') FROM users");
$pages = ceil(mysql_result($pages_query, 0) / $per_page);
$page = (isset($_GET['page'])) ? (int) $_GET['page'] : 1;
$start = ($page - 1) * $per_page;
$query = mysql_query("SELECT * FROM users WHERE admin = 0 LIMIT $start, $per_page");

echo "<table width=\"80%\" align=center border=2>";


echo "<tr><th width=\"10%\" align=center bgcolor=\"FFFF00\">No:</th>
<th width=\"30%\" align=center bgcolor=\"FFFF00\">Name</th>
<th width=\"30%\" align=center bgcolor=\"FFFF00\">Email</th>
<th width=\"30%\" align=center bgcolor=\"FFFF00\">User Id</th></tr>";

while($row = mysql_fetch_assoc($query))
{
$no = $row['id'];
$email = $row['email'];
$fname = $row['fname'];
$lname = $row['lname'];
$name = $fname . " " . $lname;
$uid = $row['userid'];
echo "<tr>
<td><a
href=\"delete1.php?emails=$email&fnames=$fname&lnames=$lname&uid=$uid\">$no</a></td>
<td>$name</td>
<td>$email</td>
<td>$uid</td></tr>";
}
echo "</table>";
mysql_close();
$prev = $page - 1;
$next = $page + 1;
echo "<br /><center>";
if($page > 1)
echo "<a href='deleteuser.php?page=$prev'>Prev</a> ";
if($pages >=1)
{
for($x=1;$x<=$pages;$x++)
{

Ejercicios: Captulo 3 23
echo ($x == $page) ? '<b>' . $x . '</b> ': '<a href="?page=' . $x . '">' . $x . '</a> ';
}
}
if($page < $pages)
echo "<a href='deleteuser.php?page=$next'>Next</a> ";
echo "</center>";
include("adminlink.html");
?>

Guarda el archivo y entra utilizando un usuario y password de administrador. Ahora tu seccin de


enlaces aparecer as:

Pincha el enlace Search User y encontrars una caja de texto que te pide que coloques la string. Escribe
cualquier de estos valores:

Pincha el botn Search User y tu pantalla aparecer as (Los detalles sern diferentes. El resultado
mostrar todos los usuarios cuyo primer nombre y apellido contenga las strings jo o ma):

Ejercicios: Captulo 3 24
A continuacin pincha el enlace All Users, podrs ver 5 registros por pgina y enlaces para ir para otras
pginas, como esta:

Podrs ver que el enlace de la pgina actual est en negrita y sin la opcin de pincharla (en la opcin 1).
Despus, si ests en la segunda pgina, el enlace de la seccin aparecer as:

Otra vez, si ests en la ltima pgina, el enlace de la seccin aparecer as:

Est claro que la primera pgina no necesita un enlace Prev (Anterior) y que la ltima no necesita un
enlace Next (Siguiente).

Ejercicio 7*
Modifica la aplicacin desarrollada en el ejercicio anterior, para que de este modo el usuario sea capaz de
cargar su imagen mientras se registra. Las imgenes deben ser guardadas en cualquier pasta del
servidor virtual. El Administrador debe ser capaz de enviar emails a los usuarios pinchando el email
existente en la pgina All Users (Todos los Usuarios) (users.php).

Solucin #7

Abre el registrationform.php y modifcalo as:

<html>
<head>
<title>Register</title>
</head>
<body>
<h2>Enter the Details to Register</h2>
<form ENCTYPE="multipart/form-data" method="post" action="register.php">
<table border="0" width="100%">
<tr><td width="10%">First Name:</td> <td><input type="text" id="fname" name="fname"
maxlength="15"/></td></tr>

Ejercicios: Captulo 3 25

* El cdigo y las imgenes generadas por ese cdigo estn en ingls.


<tr><td width="10%">Last Name:</td> <td><input type="text" id="lname" name="lname"
maxlength="15"/></td></tr>
<tr><td width="10%">Email:</td> <td> <input type="text" id="email" name="email"
maxlength="30"/></td></tr>
<tr><td width="10%">User Id:</td> <td><input type="text" id="uid" name="uid"
maxlength="10"/></td></tr>
<tr><td width="10%">Password: </td> <td><input type="password" id="pwd" name="pwd"
maxlength="10"/></td></tr>
<tr><td width="10%">Confirm Password:</td> <td><input type="password" id="confpwd"
name="confpwd" maxlength="10"/></td></tr>
<input type="hidden" name="MAX_FILE_SIZE" value="10000" >
</table>
<p></p>
Select your picture: <input type="file" name="upload"><p></p>
<input type="submit" id="submit" value="Register" />
</form>
</body>
</html>
<?php include("userlink.html"); ?>

Guarda el archivo, abre el register.php y modifcalo as:

<?php
$myfile = $_FILES['upload']['name'];
$temp = $_FILES['upload']['tmp_name'];
$type = $_FILES['upload']['type'];
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$email = $_POST['email'];
$userid = $_POST['uid'];
$pwd = $_POST['pwd'];
$repwd = $_POST['confpwd'];

if($pwd == $repwd)
{
if ($fname && $lname && $email && $userid && $pwd && $repwd)
{
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
echo "Please enter a valid email address.";
echo "<br /><a href='registrationform.php'>Back</a>";
}
else
{
mysql_connect("localhost", "root", "") or die("Problem with Connection!");
mysql_select_db("mysite");

Ejercicios: Captulo 3 26
$mysql_email = mysql_query("SELECT * FROM users WHERE email = '$email'");
$email_numrows = mysql_num_rows($mysql_email);
if( $email_numrows == 0)
{
$mysql_userid = mysql_query("SELECT * FROM users WHERE userid = '$userid'");
$userid_numrows = mysql_num_rows($mysql_userid);
if($userid_numrows == 0)
{
echo $temp;
if(($type=="image/jpeg") || ($type=="image/jpg") || ($type=="image/bmp"))
{
move_uploaded_file($temp, "images/$myfile");
echo "<img border='1' width='70' height='70' src='images/$myfile'><p>";
mysql_query("INSERT INTO users(fname,lname,email,userid,password,admin,rank)
VALUES('$fname', '$lname', '$email', '$userid', '$pwd',0,1)");
$registered = mysql_affected_rows();
if($registered == 1)
header("location:jobs.php") ;
else
{
echo "Error while registering!!!";
include("userlink.html");
}
mysql_close();
}
else
echo "This file has to be a jpeg, jpg or bmp file";
}
else
{
echo "User id already exists. Please enter another user id.";
echo "<br /><a href='registrationform.php'>Back</a>";
}
}
else
{
echo "Email id already exists. Please enter another email.";
echo "<br /><a href='registrationform.php'>Back</a>";
}
}
}
else
{
echo "You have to complete the form.";
echo "<br /><a href='registrationform.php'>Back</a>";
}
}
else
{
echo "Your passwords do not match.";
echo "<br /><a href='registrationform.php'>Back</a>";
}

?>

Ejercicios: Captulo 3 27
Guarda el archivo, abre el users.php y modifica el cdigo while loop as:

while($row = mysql_fetch_assoc($query))
{
$no = $row['id'];
$email = $row['email'];
$fname = $row['fname'];
$lname = $row['lname'];
$name = $fname . " " . $lname;
$userid = $row['userid'];
$level = $row['rank'];
echo "<tr>
<td>$no</td>
<td>$name</td>
<td><a href='emailto.php?emails=$email'>$email</a></td>
<td>$userid</td>
<td>$level</td></tr>";
}

Guarda el archivo, abre un nuevo archivo en tu editor de texto y aade las siguientes lneas de cdigo:

<form method="post" action="">


<table border="1" width="25%">
<tr>
<td width="10">To:</td>
<td><input type="text" name="to" size="20" value="<?php echo $_REQUEST['emails'];
?>"></td></tr>
<tr>
<td width="10">Subject:</td>
<td><input type="text" name="subject" size="20"></td>
</tr>
<tr>
<td width="10">Message:</td>
<td><textarea name="message" cols="30" rows="4"></textarea></td>
</tr>
</table>
<input type="submit" name="submit" value="Send Email"> <p></p>
<?php include("userlink.html"); ?>
</form>

<?php
if(isset($_REQUEST['submit']))
{
$to = $_REQUEST['to'];
$subject = $_REQUEST['subject'];
$body = $_REQUEST['message'];
$from = 'abc@abc.com';
$headers = "From: $from";
if($to && $subject && $body)
{
mail($to, $subject, $body, $headers);
echo "Your email has been sent successfully";
header("Refresh:3; url=users.php");
}

Ejercicios: Captulo 3 28
else
echo "You have to fill up all the field.";
}

?>

Guarda el archivo como emailto.php en la pasta mysite. Ahora pincha el enlace Sign Up y tu pantalla
aparecer as:

Puedes seleccionar tu imagen y registrarte normalmente. Si entras como administrador, tu pantalla


aparecer as:

Puedes encontrar enlaces para todas las direcciones de email. Si pinchas la direccin de email, sers
direccionado para una nueva pantalla como esta:

Puedes colocar los datos y pinchar el botn Send Email, para enviar emails.

Ejercicios: Captulo 3 29
Ejercicio 8*
Modifica la aplicacin desarrollada en el ejercicio anterior, para que slo los usuarios registrados puedan
acceder a todas las pginas. Por otras palabras, si un usuario intenta acceder directamente a cualquier
pgina introduciendo la direccin en la barra de direcciones del browser, debera ver un mensaje de
Access Denied (Acceso Denegado). Adems, todas las pginas principales deben tener un enlace Logout
(Salir) para cerrar la sesin actual.

Solucin #8

Abre el login.php, que ya ha sido creado, y modifcalo as:

<?php
session_start();
if($_POST)
{
$userid = $_POST['uid'];
$pwd = $_POST['pwd'];

if($userid && $pwd)


{
mysql_connect("localhost", "root", "") or die("Problem with Connection!");
mysql_select_db("mysite");
$result = mysql_query("SELECT * FROM users WHERE userid = '$userid'");
$nums = mysql_num_rows($result);
if($nums ==1)
{
$result = mysql_query("SELECT * FROM users WHERE userid = '$userid' AND password =
'$pwd'");
$nums = mysql_num_rows($result);
if($nums == 1)
{
$admin = mysql_query("SELECT * FROM users WHERE userid = '$userid' AND password =
'$pwd' AND admin = 1");

$yesadmin = mysql_num_rows($admin);
if($yesadmin == 1)
{
header("location:users.php");
$_SESSION['uid'] = $userid ;
$_SESSION['pwd'] = $pwd;
}
else
{
header("location:jobs.php");
$_SESSION['uid'] = $_POST['uid'];
$_SESSION['pwd'] = $_POST['pwd'];
}

Ejercicios: Captulo 3 30

* El cdigo y las imgenes generadas por ese cdigo estn en ingls.


else
{
header("location:jobs.php");
$_SESSION['uid'] = $_POST['uid'];
$_SESSION['pwd'] = $_POST['pwd'];
}
}
else
{
echo "Your password is incorrect.";
include("userlink.html");
}
}
else
{
echo "The user id you entered does not exist.";
include("userlink.html");
}
mysql_close();
}
else
{
echo "You have to enter user id and password.";
include("userlink.html");
}
}
else
{
echo "Access Denied!";
exit;
}
?>

Guarda el archivo. Abre tu editor de texto y aade las siguientes lneas de cdigo en un archivo:

<?php
if(!isset($_SESSION['uid']))
{
echo "Not a session!!";
}
else
{
echo "<b>" . $_SESSION['uid'] . "</b>'s Session <br /><a href='logout.php'>Logout</a><hr />";
}

?>

Ejercicios: Captulo 3 31
Guarda el archivo como session.php en la pasta mysite. Abre otra vez un nuevo archivo en tu editor de
texto y aade las siguientes lneas de cdigo:

<?php
session_start();
session_destroy();

echo "You are logged out!!";


header("Refresh:3 ;url=home.php");

?>

Guarda el archivo como logout.php en la pasta mysite. Abre el archivo editlevel.php que ya has creado y
aade las siguientes lneas de cdigo, al principio del cdigo PHP (justo despus de empezar la tag
PHP):

session_start();
if(!isset($_SESSION['uid']))
{
echo "Access Denied!!";
exit;
}
else
{
include("session.php");

Aade tambin una llave de cierre { al final del cdigo PHP (justo antes del cierre de la tag PHP). Guarda
el archivo, abre el users.php, y haz el mismo cambio, el cdigo de arriba al principio y la llave de cierre al
final. Guarda el archivo y repite el procedimiento para los archivos jobs.php y deleteuser.php. A
continuacin, abre el searchuser.php y modifcalo as:

<?php
session_start();
include("session.php");
?>
<html>
<head>

<title>Search User</title>
</head>

<body>
<center>
<form method="get" action="searchuser.php">
Enter the String: <input type="text" name="search">
<input type="submit" name="submit" value="Search User">

Ejercicios: Captulo 3 32
</form>
</center>
<hr />
<h1>Results: </h1>
<?php
if(!isset($_SESSION['uid']))
{
echo "Access Denied!!";
exit;
}
else
{
if(isset($_REQUEST['submit']))
{
$search = $_GET['search'];
$terms = explode(" " , $search);
$query = "SELECT * FROM users WHERE ";
$i = 0;
foreach($terms as $each)
{
$i++;
if($i == 1)
$query .= "fname LIKE '%$each%' OR lname LIKE '%$each%' ";
else
$query .= "OR fname LIKE '%$each%' OR lname LIKE '%$each%' ";
}

mysql_connect("localhost", "root", "") or die("Problem with Connection!");


mysql_select_db("mysite");
$query = mysql_query($query);
$num = mysql_num_rows($query);

if($num >0 && $search!="")


{
echo "$num result(s) found for <b>$search</b>!!!";
while($row = mysql_fetch_assoc($query))
{
$id = $row['id'];
$email = $row['email'];
$fname = $row['fname'];
$lname = $row['lname'];
$name = $fname . " " . $lname;
$userid = $row['userid'];
$level = $row['rank'];

echo "<br /><h3>Name: $name (ID: $id) </h3> Email: $email <br /> User Id: $userid <br />
Level: $level";
}
}
else
echo "No results found!!";
}

Ejercicios: Captulo 3 33
else
echo "Please type one or more words.";
include("adminlink.html");
}
?>
</body>
</html>

Guarda el archivo. Ahora intenta abrir users.php sin hacer login, escribiendo localhost/mysite/users.php.
Te aparecer un mensaje como este:

Si haces login utilizando la pgina de login, vers una seccin como esta siempre que visites las pginas
principales, tales como Edit Level (Editar Nvel), Delete User (Apagar Usuario), Search User (Buscar
Usuario), All Users (Todos los Usuarios), etc. En vez de emma, podrs ver el id de usuario que utilizaste
para hacer login.

Si pinchas el enlace Logout (Salir), vers un mensaje como este y sers automticamente direccionado
para la pagina principal en tres segundos.

Ejercicios: Captulo 3 34
Ejercicio 9*
Crea un sitio web sencillo que tenga la funcionalidad Remember Me (Recurdame). En la pgina de login,
debe haber una caja de verificacin Remember Me. Si el usuario hace login despus de seleccionar la
caja de verificacin, debe ver un mensaje de Welcome userid ("Bienvenido userid"), junto con un enlace
Logout (Salir), donde el userid debe sustituir el id de usuario actual. Si el usuario cierra el browser sin
cerrar la sesin y abre otra vez la pgina de login, debe ser redirigido automticamente para la pgina
que muestra el mensaje de bienvenida. Si el usuario cierra el browser despus de cerrar la sesin, debe
ver la propia pgina de login. Si un usuario hace login sin seleccionar la caja Remember Me, debe ver un
mensaje de Welcome Guest User. You will be automatically logged out in 5 seconds. ("Bienvenido
Usuario Invitado. Sers desconectado automticamente en 5 segundos). Despus de 5 segundos, debe
verse la pgina de login. Al guardar la password como cookie, utiliza la encriptacin md5.

Solucin #9

Crea una pasta llamada cookie en XAMPP/htdocs. Abre tu editor de texto favorito y aade las siguientes
lneas de cdigo en un archivo:

<?php
if (isset($_COOKIE['userid']) && isset($_COOKIE['password']))
{
header('Location: welcome.php');

}
else
{
echo "<html>
<head>
<title>Login Form</title>
</head>
<body>
<h2>User Login </h2>
<form method='post' action='login.php'>
Username: <input type='text' name='myuid' id='myuid'><br>
Password: <input type='password' name='mypwd' id='mypwd'><br>
Remember Me: <input type='checkbox' name='rememberme'><br>
<input type='submit' name='submit' value='Login'>
</form>
</body>
</html>";
}
?>

Guarda el archive como loginform.php en la pasta cookie. Abre otra vez un nuevo archivo y aade las
siguientes lneas de cdigo:

<?php
$user = 'jsmith';
$pass = 'jjjj';

Ejercicios: Captulo 3 35

* El cdigo y las imgenes generadas por ese cdigo estn en ingls.


if (isset($_POST['myuid']) && isset($_POST['mypwd']))
{
$myuserid = $_POST['myuid'];
$mypassword = $_POST['mypwd'];

if ($myuserid == $user)
{
if($mypassword == $pass)
{

if (isset($_POST['rememberme']) == 'on')
{
/* Set cookie to last 12 hours */
$_SESSION['uid'] = $myuserid ;
$_SESSION['pwd'] = $mypassword;
setcookie('userid', $myuserid, time()+60*60*12);
setcookie('password', md5($mypassword), time()+60*60*12);

}
header('Location: welcome.php');
}
else
echo "Password is Invalid";

}
else
echo 'User id is Invalid';
}
else
echo 'You need to enter a user id and password.';
?>

Guarda el archivo como login.php en la pasta cookie. Abre otro archivo y aade las siguientes lneas de
cdigo:

<?php

if (isset($_COOKIE['userid']) && isset($_COOKIE['password']))


{
echo 'Welcome ' . $_COOKIE['userid'];
echo "<br /><a href='logout.php'>Logout</a>";
}
else
{
echo "Welcome Guest User. <br />";
echo "You will log out automatically in 5 seconds!!!";
header('Refresh:5 ; url=loginform.php');
}

?>

Ejercicios: Captulo 3 36
Guarda el archivo como welcome.php en la pasta cookie. Abre otro archivo nuevo y aade las siguientes
lneas de cdigo:

<?php

setcookie('userid', '', time()-60*60*12);


setcookie('password', '', time()-60*60*12);
echo "You are successfully logged out!!";
header('Refresh:3 ; url=loginform.php');

?>

Guarda el archivo como logout.php en la pasta cookie. Ahora abre tu browser y escribe
localhost/cookie/loginform.php:

Aqu, para hacer el proceso ms sencillo, hemos codificado el user id y la password como jsmith y jjjj,
respectivamente. En vez de codificar, puedes conectarte a una tabla de base de datos y comprobar si el
user id y la password son validos. En este caso, si se introduce cualquier user id que no jsmith, recibirs
un mensaje User id is invalid (El id de usuario es invalido). Si se introduce el user id jsmith y una
password que no sea jjjj, aparecer un mensaje Password is Invalid (La password es invlida). Ahora
introduce jsmith y jjjj, user y password, respectivamente, y haz log in sin sealar la caja Remember Me
(Recurdame). Te aparecer una pantalla como esta:

Despus de 5 segundos, el usuario ver el formulario de login. Ahora introduce el mismo user id y
pasword, y marca la caja de verificacin Remember Me y haz login. Obtendrs un mensaje como este:

Ahora cierra el browser sin pinchar Logout y abre otra vez el browser, introduce la direccin
localhost/cookie/loginform.php. Sers automticamente direccionado para la misma pantalla que se ve
ms arriba, es decir Welcome jsmith con el enlace Logout. Ahora pincha el enlace Logout y te aparecer
un mensaje You are successfully logged out!! (Te has desconectado con xito!!!). 3 segundos despus,
sers automticamente direccionado para el formulario de login.

Ejercicios: Captulo 3 37
Ejercicio 10*
Utilizando conceptos de OOP, crea una clase parent (padre) llamada Shapes (Formas) y tres clases child
(hijas) denominadas Triangle (Tringulo), Square (Cuadrado) y Circle (Crculo). En la funcin parent, crea
un constructor y funciones para obtener el nombre de la forma, definir y obtener el nmero de lados,
calcular el rea y el permetro. Anula el rea y el permetro utilizando funciones de clculo en las clases
Square y Circle. Muestra los mensajes:

"I am a shape.

I have no sides.

My area is areavalue.

My perimeter is pervalue."

para cada forma que sea forma, el areavalue y pervalue deben sustituir a la forma actual, el nmero de
lados, el rea de la forma y el permetro de la forma, respectivamente. Puedes codificar los valores de los
lados (a, b y c) para el tringulo, el lado (a) para el cuadrado y el radio (r) para el crculo.

Solucin #10

Abre tu editor de texto y aade las siguientes lneas de cdigo en un archivo:

<?php

class Shapes {
public $name;
public $side = 3;
protected $area;
protected $perimeter;

function __construct($newShape) {
$this->name = $newShape;
}

function getShape() {
return " I am a " . $this->name . ". <br />";
}

function setSide($newSide) {
$this->side = $newSide;
}

function getSide() {
return "I have " . $this->side . " sides. <br />";
}

function calculateArea($a, $b, $c) {


$p = ($a + $b + $c) / 2;
return "My area is " . sqrt($p * ($p - $a) * ($p - $b) * ($p - $c)) . ". <br />";

Ejercicios: Captulo 3 38

* El cdigo y las imgenes generadas por ese cdigo estn en ingls.


}

function calculatePerimeter($a, $b, $c) {


return "My perimeter is " . ($a + $b + $c) . ". <br />";
}

class Triangle extends Shapes {

class Square extends Shapes {

function calculateArea($a) {
return "My area is " . pow($a, 2) . ". <br />";

function calculatePerimeter($a) {
return "My perimeter is " . (4 * $a) . ". <br />";
}

class Circle extends Shapes {

function calculateArea($r) {
return "My area is " . (3.14 * $r * $r) . ". <br />";
}

function calculatePerimeter($r) {
return "My perimeter is " . (2 * 3.14 * $r) . ". <br />";
}

$shape1 = new Shapes("Triangle");


echo $shape1->getShape();
echo $shape1->getSide();
echo $shape1->calculateArea(3, 4, 5);
echo $shape1->calculatePerimeter(3, 4, 5);
echo "<br />";

$shape2 = new Square("Square");


echo $shape2->getShape();
$shape2->setSide(4);
echo $shape2->getSide();
echo $shape2->calculateArea(5);
echo $shape2->calculatePerimeter(5);
echo "<br />";

Ejercicios: Captulo 3 39
$shape3 = new Circle("Circle");
echo $shape3->getShape();
$shape3->setSide(0);
echo $shape3->getSide();
echo $shape3->calculateArea(5);
echo $shape3->calculatePerimeter(5);
echo "<br />";
?>

Guarda el archivo como shapes.php en la pasta XAMPP/htdocs. Abre tu browser y escribe la direccin
localhost/shapes.php. Tu pantalla aparecer as:

Ejercicio 11*
Crea una pgina web que pide al usuario para introducir una direccin de email como validacin. Utiliza
excepciones personalizadas, muestra un mensaje de error adecuado incluyendo el archivo y nmero de
lnea donde el error se origina.

Solucin #11

Abre tu editor de texto y aade las siguientes lneas de cdigo en un archivo:

<form method='post' action='validate.php'>


Email: <input type='text' name='email' id='email'><br /><br />
<input type='submit' name='submit' value='Validate'>
</form>

<?php

Ejercicios: Captulo 3 40

* El cdigo y las imgenes generadas por ese cdigo estn en ingls.


if(!isset($_POST['email']))
echo "Enter the email id to validate.";
else
{
echo " ";
$idToCheck = $_POST['email'];

class emailValidationException extends Exception


{
public function showError()
{
$errorMsg = 'Error on line ' .$this->getLine().' in '.$this->getFile()
.'. <br /> <b>'.$this->getMessage().' is not a valid email address</b>';
return $errorMsg;
}
}

try
{
if(filter_var($idToCheck, FILTER_VALIDATE_EMAIL) === FALSE)
{
throw new emailValidationException($idToCheck);
}
else
echo "<b>". $idToCheck ." is a valid email address</b>";

catch (emailValidationException $err)


{
echo $err->showError();
}
}
?>

Guarda el archivo como validate.php en la pasta XAMPP/htdocs. Abre tu browser y escribe la direccin
address localhost/validate.php. Tu pantalla aparecer as:

Coloca una direccin de email invlida en la caja de texto y pincha el botn Validate. Te aparecer un
mensaje como este:

Ejercicios: Captulo 3 41
Coloca una direccin de email vlida en la caja de texto y pincha el botn Validate. Te aparecer un
mensaje como este:

Ejercicios: Captulo 3 42

You might also like