PHPComo usar la variable $_SESSION en PHP

Como usar la variable $_SESSION en PHP

-

- Advertisment -

La variable $_SESSION es una Superglobal en PHP, por tanto está disponible en cualquier parte de los scripts sin la necesidad de usar un global de llamada. está variable es muy similar a un $_COOKIE pero la diferencia es que se graba en el servidor y dura hasta que el navegador sea cerrado (no la pestaña de visualización, hablo de cerrar el navegador completo).

Esto es útil por ejemplo para carritos de compra, guardar cierta configuración solo para esa visita en especial, etc.

Si en alguna parte de un script (pagina1.php) guardamos un valor usando esa variable

$_SESSION['nickname']="Jhonnyf";

Esta variable estará disponible en cualquier otro script (pagina2.php, test.php, cualquierpagina.php) mientras el navegador NO SEA CERRADO se podrá tener acceso a los datos grabados ahí.

Como usarlo:

Lo primero es llamar a la función que Inicia/Continua la sesión y desde ahí ya puedes comenzar a grabar

session_start();
$_SESSION['nickname']  = 'Jhonnyf';

Luego de eso, en otro script debes volver a llamar a la función session_start(); y usar la variable previamente grabada.

Por ejemplo vamos a grabar un Nickname en un script y luego usarlo en otros 2 scripts

pagina1.php

<?php
session_start(); //Iniciamos o Continuamos la sesión
if (isset($_POST['txtusuario'])) //Si llego un Nickname vía el formulario lo grabamos en la sesión
{
	$_SESSION['nickname'] = $_POST['txtusuario']; //Nickname Grabado
}
if ($_SESSION['nickname']) //Si hay un nickname en la sesión actual, creamos una variable que será mostrada
{
	$grabado="El valor Grabado Previamente es: <strong>".$_SESSION['nickname']."</strong><br />
	<a href='pagina2.php'>pagina2.php</a>";
}
?>

<html>
<head>
</head>
<body>
<?php echo ($grabado); //El mensaje si hay nickname?>
<form action="" method="post">
Escribe tu Nickname: 
<input type="text" size="25" name="txtusuario" value="<?php echo $_SESSION['nickname'];?>"/>
<br />
<input type="submit" value="Grabar" />
</form>
</body>
</html>

pagina2.php

<?php
session_start(); //Iniciamos la sesión o la Continuamos
if ($_SESSION['nickname'])
{
	$grabado="El valor Grabado en <a href='pagina1.php'>pagina1.php</a> fue: <strong>".$_SESSION['nickname']."</strong><br />"; //Si existe un nickname generamos el mensaje
}
else
{
	$grabado="No has grabado ningún Nickname visita la <a href='pagina1.php'>pagina1.php</a>"; //Mensaje que no existe nada Grabado
}
?>

<html>
<head>
</head>
<body>
<?php echo ($grabado); ?>
</body>

Puedes verlo en funcionamiento en los siguientes enlaces:

https://www.elcodigofuente.com/ejemplos/pagina1.php
https://www.elcodigofuente.com/ejemplos/pagina2.php

Si entras primero en la pagina2.php no veras nada grabado ya que es la pagina1.php donde se graban los datos, y solo se eliminan los datos cuando cierras el navegador web.

Aquí los archivos para descargar:

Archivos adjuntos

21 COMENTARIOS

  1. hola amigo:
    estoy aprendiendo PHP, ya tengo un carrito de la compra y me guarda todos mis datos bien con una variable de session;
    como se puede hacer para que, una vez utilizado esa variable de session, se vacie todo el contenido para nuevas compras, ya que al regresar al carrito me vuelve a mostrar lo que existe en la variable de session

    Podrías ayudarme?
    Gracias

    • simplemente luego de usar el carrito, destruye las variables que contiene la información con un unset,

      unset($session[‘carrito’])

      eso si, te recomiendo que todo el carrito sera un array en session y no usar todo session como si fuera un carrito, es decir, dentro de $session[‘carrito’] hacer mas array para toda la informacion referente.

    • Para hacer lo del carrito hay que crear una clase y usar serialize y unserialize para trasladar los valores cargados en el objeto de página en página… la clase sería algo así:

      class Carrito{
      //propiedades
      private $nPro; /*número de productos de la compra se entiende como el indice de los arreglos*/
      private $array_id_pro;
      private $array_nombre_pro;
      private $array_precio_pro;
      private $array_cant_pro;

      //métodos
      public function Carrito(){
      $this->num_productos=0;
      //echo “Carrito Instanciado”;

      }

      public function infoCarrito(){
      return ‘Hi I\’m the car’;
      }

      public function getnPro(){
      return $this->nPro;
      }

      //Introducir Producto
      public function putProducto($idpro,$nombrepro,$preciopro,$cantpro){
      $this->array_id_pro[$this->nPro]=$idpro;
      $this->array_nombre_pro[$this->nPro]=$nombrepro;
      $this->array_precio_pro[$this->nPro]=$preciopro;
      $this->array_cant_pro[$this->nPro]=$cantpro;

      //Luego de meter el producto incrementamos el índice del número de producto

      $this->nPro++;
      }
      public function borrarProducto($indicePro){
      $this->array_id_pro[$indicePro]=0; //pone el valor del codigo del producto en cero
      }
      public function showProductos(){
      $suma = 0;
      echo ‘

      Id
      Nombre producto
      Precio
      Cantidad
      Eliminar
      ‘;

      for ($i=0;$inPro;$i++){
      if(isset($this->array_id_pro[$i])>0){
      echo “”;
      echo “” . $this->array_id_pro[$i] .””;
      echo “” . $this->array_nombre_pro[$i].””;
      echo “” . $this->array_precio_pro[$i] . “”;
      echo “” . $this->array_cant_pro[$i] . “”;
      echo ““;
      echo “”;

      $suma += $this->array_precio_pro[$i];
      }
      }
      //muestro el total
      echo “TOTAL: $suma “;
      //total más IVA
      echo “IVA (12%): ” . $suma * 0.12 . “ “;
      echo “”;
      }

      }

  2. Hola. Tu ejemplo está muy bueno por su sencillez, pero quería pedirte ayuda porque a mí me da varios errores. Cuando lo corro por primera vez me dice que ‘txtusuario’ no está definido como index. Igual con ‘nickname’ no está definido como index. Después me dice que $grabado no está definido. Y por último, en el campo text del input me aparece “Notice: Undefined index: nickname in C:\localhost\SESSION\pagina1.php on line 21

    Los tres primeros los resolví agregando ‘isset’ y declarando $grabado = ‘ ‘ ,pero el del campo text no pude hacer nada.

    De todas maneras me da mucha curiosidad de por qué a ti sí te funciona bien y a mí no. ¿Será algo de la configuración de PHP en mi máquina?

    Gracias !!!

  3. Pido su ayuda, ya que usted conoce bastante de PHP, necesito pasar una variable entre distintas páginas .php, por favor podría enviarme un ejemplo de ello usando session_start() y $_SESSION[‘valor’], claro está usando method=”post”…

    Muchas gracias…

    Arturo Ramírez…

  4. Hola muy buen ejemplo, no habia encontrado nada!! este funciono, pero como puedo hacer para que al llenar mi carrito agarre el “id” y no que se agrege a todos los articulos lo mismo, muchas gracias

  5. Hola saludos, como puedo hacer para que no se repita la misma variable en un carrito de compras, sino que agarre el “id”, del articulo y aparezca la variable que le corresponde si me explico?

  6. Buenas, que tal

    Gracias por el ejemplo de código

    un detalle, el plugin que tienes para poner el código no permite copiar-pegar el código, ni ningúna de las funciones, por lo menos usando chrome no me ha dejado.

    Saludos

Agregue un comentario a carlos Cancelar respuesta

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí

Últimas Noticias

WordPress – Crear BBCODE o shortcode personalizados

Los BBCODES o "shortcode" son esas funciones que tiene Wordpress y que se usan con corchetes, que generalmente te...

WordPress – Enviar título de la página o campo oculto, en Contact Form 7

Problema: Tengo un cliente que tiene una web con muchos productos y en todas sus páginas usa el mismo formulario...

Laravel – Modo Debug según IP

En algunos casos se necesita el modo DEBUG según IP, por ejemplo cuando estamos en producción y tenemos un...

Reemplazar URLs cuando cambias de dominio en WordPress (también de http a https)

Cuando haces un cambio de dominio por alguna razón (antes te llamabas www.viejodominio.com y ahora www.nuevodominio.com) si bien ya...
- Advertisement -

Como ejecutar comandos Artisan desde consola Git

Voy a suponer que ya tienen instalado el composer y php de manera global y un proyecto en Laravel....

Ejecutar Composer y/o PHP de manera Global en Windows

Si por alguna razón al instalar Composer este no funciona desde cualquier ruta estando en linea de comandos (ya...

Debe leer

- Advertisement -

También podría gustarteRELACIONADA
Recomendada para usted