Una variable de sesión PHP se utiliza para almacenar información acerca de, o cambiar la configuración de una sesión de usuario. Las variables de sesión contienen información acerca de un solo usuario, y están disponibles para todas las páginas en una sola aplicación.
PHP variables de sesión
Cuando se trabaja con una aplicación, se abre, hacer algunos cambios y luego se cierra. Esto es muy parecido a una sesión. El equipo sabe lo que eres. Se sabe cuando se inicia la aplicación y cuando se termina. Pero en Internet hay un problema: el servidor web no sabe quién eres y lo que haces porque la dirección HTTP no mantiene estado.
Una sesión de PHP soluciona este problema que le permite almacenar la información del usuario en el servidor para su uso posterior (por ejemplo, nombre de usuario, artículos de compra, etc.) Sin embargo, la información de sesión es temporal y se eliminará después de que el usuario ha abandonado el sitio web. Si usted necesita un almacenamiento permanente es posible que desee almacenar los datos en una base de datos.
Sesiones de trabajo mediante la creación de una identificación única (UID) para cada visitante y variables de tiendas basado en este UID. El UID se almacena en una cookie o se propaga en la URL.
Inicio de una sesión PHP
<?php
session_start();
?>
A continuación los script para el inicio de sesión seguro en php.
login.php contiene el formulario de recepción de datos para el inicio de sesión.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Inicio de sesióon</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- styles -->
<link href="./assets/css/bootstrap.css" rel="stylesheet">
<link href="./assets/css/login.css" rel="stylesheet">
<link href="./assets/css/bootstrap-responsive.css" rel="stylesheet">
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="../assets/js/html5shiv.js"></script>
<![endif]-->
<!-- Fav and touch icons -->
<link rel="shortcut icon" href="./assets/ico/favicon.ico">
</head>
<body>
<div class="container">
<form class="form-signin" action="logeo.php" method="post">
<h3 class="form-signin-heading">Por favor, identifíquese</h3>
<input type="text" name="usuario" id="usuario" class="input-block-level" placeholder="Usuario" required autofocus >
<input type="password" name="password" id="password" class="input-block-level" placeholder="Contraseña" required>
<button class="btn btn-large btn-primary" type="submit">Entrar</button>
</form>
</div> <!-- /container -->
</body>
</html>
logeo.php contiene el script que procesa los datos de inicio de sesión.
<?php
/* Llamar a Cadena de Conexion*/
include ("functionConect.php");
conectar();
if($_POST && !empty($_POST['usuario']) && !empty($_POST['password']) )
{
//quitamos el posible SQLInjection del usuario
$usuario = mysql_real_escape_string($_POST['usuario']);
//sacamos el hash del password para que se compare ya encriptado
$password = md5(mysql_real_escape_string($_POST['password']));
//vemos si existen registros que coincidan
$query = mysql_query("SELECT * FROM user ".
"WHERE username = '{$usuario}' AND ".
"password = '{$password}' and status='1' ");
if(mysql_num_rows($query) == 1)
{
session_start();
$_SESSION['login'] = $usuario;
//generamos un token aleatorio para el usuario
$_SESSION['token'] = md5(rand().$_SESSION['login']);
//actualizamos el token para qu sean iguales el de la db
//y el de la sesión
mysql_query("UPDATE user SET ".
"token= '{$_SESSION['token']}' WHERE ".
"username = '{$_SESSION['login']}'");
//todo bien
header("Location: .index.php");
exit;
}
else {
//Destruimos la Sesion
Session_Start();
unset($_SESSION["login"]);
header("Location: login.php");
}
}
else
{
//Si hay campos vacios redirecciono
header("Location: login.php");
}
?>
archivo functionConect.php, contiene los datos de conexión a la base de datos mysql
<?php
function conectar()
{
$server=DB_HOSTNAME;//aqui va el nombre del servidor.
$user=DB_USERNAME;//nombre de usuario mysql del servidor.
$pass=DB_PASSWORD;//contraseña del usuario mysql.
$DB=DB_DATABASE;//nombre de la base de datos.
if (!$conexion=mysql_connect($server,$user,$pass))
{
echo "Error al conectar a la base de datos ".mysql_error();
exit();
}
if (!@mysql_select_db($DB,$conexion))
{
echo "Error al seleccionar la base de datos ".mysql_error();
exit();
}
}
?>
<?php
echo "Usuario autorizado";
?>