Autor Tema: [Tutorial] Sesiones en PHP  (Leído 2362 veces)

Desconectado Xt3mP

  • PHPer@ Fijo
  • ***
  • Mensajes: 160
  • Karma: 18
  • Nuev@ PHPer@
    • Ver Perfil
[Tutorial] Sesiones en PHP
« en: 17 de Marzo de 2010, 01:06:50 am »
Antes que nada quiero decir que he buscado de manera moderada en el foro y no he encontrado algún tutorial que explique los conceptos básicos de las sesiones que mucha ayuda nos hacen (me incluyo) para diferentes aspectos, tanto como interacción de datos entre diferentes páginas sin POST ó GET como para facilitar a la hora de comprobar algo.

¿Qué es una sesion?
En lo que sería el área de programación web, una sesión se refiere a la interacción entre página>usuario asignando está un identificador único al usuario, haciendo uso de estas sesiones, lograrémos hacer un seguimiento del usuario durante toda la navegación en nuestra página.

¿Por qué creo que son mejores las sesiones que las cookies?
Fácil, ya que las cookies se pueden tener habilitadas en los navegadores web, ¿Pero qué pasa si no las tengo activadas? Pues perderíamos el rastro de la navegación del usuario, cuando las sesiones estarán fijas hasta que las cerremos.

¿Como iniciar una sesión?
Con el código "session_start()" que si no existe la sesión la crea, y si existe obviamente la retoma. Ahi varias variables en esto de iniciar una sesión ya que se le puede asignar un nombre o inclusive registrarla con cierto nombre, algo así:

Código: (php) [Seleccionar]
<?php
session_start
(); // Creamos la sesión
session_register("tu_sesion"); // Registramos una sesión en específico
session_name("tu_sesion"); // Nombramos la sesión
?>


¿Como saber el identificador de una sesión?
Pues nada mas y nada menos que con:
Código: (php) [Seleccionar]
<?php
echo "El ID de esta sesión es: ".session_id(); // El ID de esta sesión es: 0s542sd4455532s56543432545
// Dependiendo de la sesión.
?>


Al cerrar la sesión y crear una nueva el identificador cambiará.

¿Como poner sesión dependiendo la acción?
Un ejemplo casero de login sería el formulario así:

Código: (html) [Seleccionar]
<html><head><title>Formulario de sesion</title></head>
<body><form action="" method="POST">
Nombre: <input type="text" name="nombre" id="nombre><br><!-- Casilla de texto llamada nombre -->
Clave: <input type="password" name="pass" id="pass"><br><!-- Casilla de password llamada pass -->
<input type="submit" name="submit" value="Entrar"><!-- El boton que enviara el form -->
</form></body></html>

Y en el mismo archivo le pondrémos esto:
Código: (php) [Seleccionar]
<?php
if (isset($_POST[&#39;nombre&#39;])){
if($_POST[&#39;nombre&#39;] == "Xt3mP" && $_POST[&#39;pass&#39;] == "clave"){
session_register(&#39;user&#39;);
$_SESSION[&#39;logeado&#39;] = "SI";
$_SESSION[&#39;user&#39;] = $_POST[&#39;nombre&#39;];
echo "Bienvenido ".$_SESSION[&#39;user&#39;];
}else{
echo 
"Los datos son incorrectos";
}
}
// Cierre del isset
?>


En el código anterior indicamos que $_SESSION['logeado'] tiene el valor de SI y $_SESSION['user'] tiene el valor del usuario que en este caso es Xt3mP.

Error común.
Warning: Cannot send session cookie - headers already sent by (output started at /home/formulario.php:2) in /home/formulario.php on line 10

Aquí este error es por sintáxis, osea algúna línea en blanca ó por ejemplo, escribir algo antes de la etiqueta PHP en donde hacemos la sesión, para evitar esto borrémos líneas en blanco y agregemos al principio de todo esto:

Código: (php) [Seleccionar]
<?php
session_start
();
?>


Eliminar sesiones.
Esto es lo mas sencillo ya que lo hacemos así:
Código: (php) [Seleccionar]
<?php
session_destroy
();
?>


Aquí eliminamos las sesiones que estén activas, y para eliminar una sesión registrada harémos lo siguiente:
Código: (php) [Seleccionar]
<?php
session_unregister
(); // En donde el nombre de sesion va entre ( y )
?>


Esto es un poco acerca de las sesiones en un ambiente laboral básico, espero le entiendan.
« Última modificación: 17 de Marzo de 2010, 01:09:03 am por Xt3mP »
Código: (php) [Seleccionar]
<?php
$mundo 
$_POST[&#39;todos&#39;];
if ($mundo 1000000){ echo "Google: Sorry, los destruiré, comos muchos";
}else{
echo 
"Google: Bueno, mientras me adueño de más redes sociales los dejaré vivir"}
//Los estaré vigilando.
?>

Comunidad PHPeros

[Tutorial] Sesiones en PHP
« en: 17 de Marzo de 2010, 01:06:50 am »

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[Tutorial] Sesiones en PHP
« Respuesta #1 en: 17 de Marzo de 2010, 15:19:29 pm »
Despues de 20 tutoriales así ya cansa...

Perio... bien

Desconectado Xt3mP

  • PHPer@ Fijo
  • ***
  • Mensajes: 160
  • Karma: 18
  • Nuev@ PHPer@
    • Ver Perfil
Re:[Tutorial] Sesiones en PHP
« Respuesta #2 en: 17 de Marzo de 2010, 19:55:17 pm »
Pues de esos 20 tutoriales que jamás encontré por el buscador, ninguno es el tuyo, me he dado cuenta que tu solo criticas y criticas y no aportas nada, asi no llegarás a ningun lado, en fin, no pienso discutir con gente que no esta al nivel moral y que solo critica.
Código: (php) [Seleccionar]
<?php
$mundo 
$_POST[&#39;todos&#39;];
if ($mundo 1000000){ echo "Google: Sorry, los destruiré, comos muchos";
}else{
echo 
"Google: Bueno, mientras me adueño de más redes sociales los dejaré vivir"}
//Los estaré vigilando.
?>

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[Tutorial] Sesiones en PHP
« Respuesta #3 en: 17 de Marzo de 2010, 20:27:53 pm »
Pues de esos 20 tutoriales que jamás encontré por el buscador, ninguno es el tuyo, me he dado cuenta que tu solo criticas y criticas y no aportas nada, asi no llegarás a ningun lado, en fin, no pienso discutir con gente que no esta al nivel moral y que solo critica.
Quien dijo que yo hice un tuto así?

Y seguramente he hecho más aportes que tú, pero a diferencia tuya, no lo hago por fama, y más si es de un ...
en fín...

Desconectado Xt3mP

  • PHPer@ Fijo
  • ***
  • Mensajes: 160
  • Karma: 18
  • Nuev@ PHPer@
    • Ver Perfil
Re:[Tutorial] Sesiones en PHP
« Respuesta #4 en: 17 de Marzo de 2010, 21:39:27 pm »
¿Fama? Ahí si, quiero ser famoso, pero dime ¿Solo criticas? se dice que se es como se es en casa, en fin. Chaito amigo :P
Código: (php) [Seleccionar]
<?php
$mundo 
$_POST[&#39;todos&#39;];
if ($mundo 1000000){ echo "Google: Sorry, los destruiré, comos muchos";
}else{
echo 
"Google: Bueno, mientras me adueño de más redes sociales los dejaré vivir"}
//Los estaré vigilando.
?>

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[Tutorial] Sesiones en PHP
« Respuesta #5 en: 17 de Marzo de 2010, 22:18:19 pm »
Sí no haces una bien, se critica... :)

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[Tutorial] Sesiones en PHP
« Respuesta #6 en: 18 de Marzo de 2010, 03:02:31 am »
Concuerdo con west, hay muchos tutoriales de este tema, esto está más que explicado.
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado Farresito

  • PHPero Avanzado
  • ****
  • Mensajes: 385
  • Karma: 5
  • Sexo: Masculino
  • PimPamTomaC++
    • Ver Perfil
    • Farresito
Re:[Tutorial] Sesiones en PHP
« Respuesta #7 en: 11 de Abril de 2010, 11:54:53 am »
Buen tutorial :)

En cuanto pueda, te doy el Karma :)

Por cierto, no hay necesidad de discutir por esto; mejor ayudar a la comunidad que no quedarse tan ancho. Si se ha repetido, se comenta, pero qué más se quiere que poder compartir las ideas :) Quizás algunos entenderán más este tutorial; quizás otros no lo encuentren bien...

Saludos!
« Última modificación: 11 de Abril de 2010, 12:00:56 pm por Farresito »
“Lo mejor de los booleanos es que si te equivocas estás a un sólo bit de la solución correcta.”

-- Anónimo

"No temo a los ordenadores; lo que temo es quedarme sin ellos"

-- Isaac Asimov