Crear sesiones usando cookies en un formulario en PHP

Si necesitamos controlar quiénes usan nuestro sistema, podemos tener un grupo de usuarios en una base de datos.

Para acceder al sistema, pedimos al usuario que se identifique, creando una sesión con los datos recibidos en el formulario de login, y guardamos cada dato del usuario en una cookie. La creación de cookies debe ser lo primero que se escribe, incluso antes que las cabeceras de HTML:

<?php
session_start();
$_SESSION['nombre'] = $_POST['Nombre'];
$_SESSION['apellido'] = $_POST['Apellido'];
?>

Cada vez que se accede al formulario, nos fijamos si existe la cookie. Si existe, mostramos el contenido de la página. Si no, invitamos a navegante a identificarse o a pedir la creación de un usuario nuevo:

<?php
session_start();
if (isset($_SESSION['Nombre])){
 echo "Hola, ";
 echo $_SESSION['nombre'];
 echo " ";
 echo $_SESSION['apellido'];
echo "<p>Contenido de la página, que se muestra sólo a los usuarios logueados</p>";
}else{
echo '<p>Todavía no ingresó al sistema.</p>
<p><a href="login.html">Acceder con un nombre de usuario y contraseña</a>
 o <a href="solicitar.html">Solicitar un usuario nuevo</a></p>';
}
?>

¿Cómo sabemos si el usuario está registrado y si ingresó correctamente su password? (Gracias a esta entrada en forosdelweb lo pude hacer sin dificultad)

<?php 
$usuario = $_POST['campousuario'];
$clave = $_POST['campoclave'];

include('abre_conexion.php'); // Se conecta a la base de datos

$query = "SELECT * FROM `usuarios` WHERE usuario = '$usuario'"; // Esta linea hace la consulta 
$result = mysql_query($query); // Almaceno el resultado de la consulta en la variable result

if( mysql_num_rows($result) == 0){
// mysql_num_rows <- esta funcion me imprime el numero de registro que encontro 
// si el numero es igual a 0 es porque el registro no existe, 
en otras palabras ese usuario no esta en la tabla.
echo "<p>El usuario no existe</p>";
echo "<a href='solicitar.html'>Solicitar un usuario</a>";}
else
{
//ese usuario ya esta registrado y entonces me fijo si el password es correcto
   while ($registro = mysql_fetch_array($result)){ 
      if ($registro['password']==$clave) { 
              echo "<h1>Bienvenido al sistema</h1>";
              echo "<h2>2016</h2>";
            } 
      else 
          { echo "<p>Contraseña incorrecta</p>";}
   }
}
include('cierra_conexion.php'); 
?>