Como Usar la Variable $_SESSION en php

4 marzo, 2013
Jhonnyf

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 util 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

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

Como Usarlo:

Lo primero es llamar a la funcion que Inicia/Continua la Sesion y desde ahi ya puedes comenzar a grabar

Luego de eso, en otro script debes volver a llamar a la funcion 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

pagina2.php

Puedes verlo en funcionamiento en los siguientes enlaces:

http://www.elcodigofuente.com/ejemplos/pagina1.php
http://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.

Aqui los archivos para descargar:

Archivos adjuntos

14 Comentarios. Dejar nuevo

Aldai Phizer
29 marzo, 2014 2:08 PM

U wont beleive how hard has been to find this solution. Many thnx

Responder
Aldai Phizer
29 marzo, 2014 2:10 PM

BTW, you need to change:
if ($_POST[‘txtusuario’])

with

if (isset($_POST[‘txtusuario’]))

Thnx again

Responder

yes, you’re right!

thank you

Responder

Excelente tutorial, me gusto mucho y me ha salvado, lo recomiendo mucho (Y). Gracias

Responder

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

Responder

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.

Responder
Robyir Loreto
2 enero, 2015 8:42 PM

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 “”;
}

}

Responder

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 !!!

Responder

muchas gracias ya me queda un poco mas claro la situacion respecto a esta variable global !! 😀

Responder
Arturo Ramírez
29 mayo, 2015 12:06 AM

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…

Responder

$_session[‘valor’] = ‘al valor que necesitas’

Responder

$valor = $_POST[‘valor’]; //valor que traes del post
$_SESSION[‘valor’] = $valor; //valor que le das a la variable session

Responder
Diana Fernandez
2 diciembre, 2016 7:35 PM

Hola muy interesante artículo. Cuál es la diferencia entre utilizar $_SESSION[] o usar $GLOBALS[]. Son similares?
Gracias.

Responder

excelente. gracias

Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *