
Este tema esta dirigido para los Ingenieros de Software o Informáticos que desarrollan paginas web con Php, aquí se habla de las Sesiones.
Una sesión es un mecanismo para persistir información en diferentes páginas web para identificar usuarios mientras estos navegan un sitio o app. Te preguntarás por qué las sesiones son necesarias en un sitio web. Para ver porqué las sesiones son necesarias, tenemos que viajar atrás y ver como esta diseñado el protocolo HTTP.
El protocolo HTTP es un protocolo sin estado, lo que significa que no hay forma de que un servidor recuerde a un usuario específico entre múltiples peticiones. Por ejemplo, cuando accedes a una página web, el servidor sólo es responsable de proveer el contenido de la página solicitada. Así que cuando accedes a otras páginas en el mismo sitio web, el servidor web interpreta cada petición separadamente, como si no estuvieran relacionadas unas con otras. No hay forma para el servidor de sane que cada petición fue originada por el mismo usuario.
<?php
ob_start("ob_gzhandler");
//Las funciones ob_start y
//ob_end_flush te permiten
//escojer en qué momento
//enviar el resultado de un
//script al navegador. Si
//no las utilizamos estamos
//obligados a que nuestra
//primera línea de código
//sea session_start() u
//obtendremos un error
session_start();
//conectamos a la base de
//datos
//rescatamos los valores
//guardados en la variable de
//sesión (si es que hay alguno,
// cosa que comprobamos con isset)
//y los asignamos a $carro.
//Si no existen valores, ponemos a false
//el valor de $carro
if(isset($_SESSION['theframes']))
$carro=$_SESSION['theframes'];else $carro=false;
//y hacemos la consulta
?>
<?php
if(!isset($_SESSION)){ session_start(); }
if(isset($_SESSION['theframes'])){
$carro=$_SESSION['theframes'];
}else{
$carro=false;
$MM_restrictGoTo = "../usuario.php";
header("Location: ". $MM_restrictGoTo);
exit;
}
if($carro){
foreach($carro as $k => $v){
$v['identificador'];
$v['logi'];
$QUIEN_existe =$v['user'];
$v['host'];
$v['auto'];
$v['code'];
$v['id'];
$v['mail'];
}
}
?>
<?php
// start a session
session_start();
// initialize a session variable
$_SESSION['logged_in_user_id'] = '1';
// unset a session variable
unset($_SESSION['logged_in_user_id']);
?>
<?php
// start a session
session_start();
// assume that we’ve initialized a couple of session variables in the other script already
// destroy everything in this session
session_destroy();
?>
<?php
/* establecer el limitador de caché a 'private' */
session_cache_limiter('private');
$cache_limiter = session_cache_limiter();
/* establecer la caducidad de la caché a 30 minutos */
session_cache_expire(30);
$cache_expire = session_cache_expire();
/* iniciar la sesión */
session_start();
echo "El limitador de caché ahora está establecido a $cache_limiter<br />";
echo "Las páginas de sesión examinadas caducan después de $cache_expire minutos";
?>
public function Logs($Linea,$FILE="nmovil"){
$file = fopen($FILE.".txt", "a");
fwrite($file, $Linea . PHP_EOL);
fclose($file);
}
public function Close($con){
return mysql_close($con);// or die(mysql_error());
}
public function Con(){
return $this->conexion;
}
public function Liberar_memory_select($select){
return mysql_free_result($select);// or die(mysql_error());
}
public function NOMBRES_DE_CAMPOS($select){
return mysql_fetch_assoc($select);// or die(mysql_error());
}
public function ID($insert){
return mysql_insert_id($insert);// or die(mysql_error());
}
public function QUERYS($consulta){
$resultado = mysql_query($consulta,$this->conexion);
if(!$resultado){
echo 'MySQL Error: ' .$consulta. mysql_error();
exit;
}
Flujo de login con Sesiones y Cookies
Vamos a ver rápidamente un flujo de login común para un sitio web para entender qué ocurre entre bambalinas.
Un usuario accede a la página de login de un sitio web. Después de enviar el formulario de login, un servidor en el otro extremo autentica la petición revalidando las credenciales que fueron introducidas. Si las credenciales introducidas por el usuario son válidas, el servidor crea una nueva sesión. El servidor genera un número aleatorio único, que es llamado identificador de sesión (session id en inglés). También crea un nuevo fichero en el servidor que es usado para almacenar información específica para dicha sesión. A continuación, el identificador de sesión es enviado de vuelta al usuario, junto con cualquier recurso que este hubiera solicitado. Entre bambalinas, el identificador de sesión es enviado en la cookie PHPSESSID en la cabecera de respuesta. Cuando el navegador recibe la respuesta del servidor, aparece el encabezado de la cookie PHPSESSID. Si el navegador permite las cookies, guardará esta cookie PHPSESSID, que almacena el identificador de sesión que el servidor ha pasado. El las subsecuentes peticiones, la cookie PHPSESSID es devuelta al servidor. Cuando el servidor recibe la cookie PHPSESSID, intentará inicializar una sesión con dicho identificador de sesión. Esto lo hacer cargando el fichero de sesión que fue creado previamente durante la inicialización de la sesión. Después inicializa la variable $_SESSION, que es un array super-global, con los datos almacenados en dicho fichero de sesión.
Iniciar una Sesión automáticamente
Si existe la necesidad de usar sesiones a lo largo de toda tu aplicación, también puedes optar por iniciar la sesión automáticamente sin necesidad de usar la función session_start.
Hay una opción el el archivo de configuración php.ini que te permite iniciar una sesión automáticamente para cada petición —session.auto_start. Por defecto, está fijada a 0, pero puedes fijarla a 1 para activar la función de auto inicio.
session.auto_start = 1
Por otro lado, si no tienes acceso al fichero php.ini, y estás usando el servidor web Apache, puedes fijar esta variable usando el fichero .htaccess.
php_value session.auto_start 1
Si añades la línea anterior al fichero .htaccess, iniciará una sesión automáticamente en tu aplicación PHP.
¿Cómo obtener un identificador de Sesión?
Como discutimos anteriormente, el servidor crea un número único para cada nueva sesión. Si quieres obtener el identificador de sesión, puedes usar la función session_id, como muestra el siguiente fragmento de código:
<?php
session_start();
echo session_id();
?>
Esto debería darte el identificador de sesión actual. La función session_id es interesante en porque también puede recibir un argumento— un identificador de sesión. Si quieres reemplazar el identificador de sesión generado por el sistema por el tuyo propio, puedes suministrarlo como el primer argumento de la función session_id.
<?php
session_id(YOUR_SESSION_ID);
session_start();
?>
Es importante hacer notar que la función session_id debe estar situada antes que la llamada a session_start cuando quieras iniciar una sesión con un identificador de sesión personalizado.