Foros del Web » Programando para Internet » PHP »

PHP OO $_session

Estas en el tema de $_session en el foro de PHP en Foros del Web. Hola, empezé a ocupar las sesiones en PHP, y he seguido ejemplos, pero no me funciona. Resulta que en una página creo todo un IF ...
  #1 (permalink)  
Antiguo 24/08/2011, 09:16
 
Fecha de Ingreso: agosto-2011
Mensajes: 100
Antigüedad: 12 años, 8 meses
Puntos: 1
Pregunta $_session

Hola, empezé a ocupar las sesiones en PHP, y he seguido ejemplos, pero no me funciona.

Resulta que en una página creo todo un IF recibiendo información de un formulario y comparando con la BD para ver si coinciden, de ser así se almacenan los datos en la $_SESSION, así:

Código PHP:
Ver original
  1. <?php
  2. if($_POST['Entrar']){
  3.     $ok = "todo ok";
  4.     $usu = $_POST["txt_usuario"];
  5.     $pass = $_POST["txt_contrasena"];
  6.     $consultar = pg_query($con,"select * from usuario where nombre = '$usu' and clave = '$pass'");
  7.     $rs = pg_fetch_array($consultar);
  8.     if($usu == $rs["nombre"] && $pass == $rs["clave"]){
  9.         //todo el proceso de guardado
  10.     }else{
  11.         $ok = "no todo ok";
  12.     }
  13. }
  14. if($ok == "todo ok"){
  15.     $HT = $_SESSION['HT'];
  16.     $_SESSION['USUARIO'] = $usu;
  17.     sleep(3);
  18.     header('Location:home.php');
  19. }
  20. ?>

En la otra página (home.php) quiero mostrar el nombre del usuario que se conectó que estaría guardado en la $_SESSION así:

Código PHP:
Ver original
  1. <?php
  2. if (isset ($_SESSION['USUARIO']) ){
  3.     echo "bien";
  4.     echo $_SESSION['USUARIO'];
  5. }else{
  6.     echo "error";
  7. }
  8. ?>

Y resulta que no entra a este último IF y me tira error... ¿qué me falta?
  #2 (permalink)  
Antiguo 24/08/2011, 09:29
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: $_session

Concretamente te faltan dos paréntesis, en:
session_start();

Aprovecho para comentarte un par de cosas
1) Esto es un poco loco, no?:
Código PHP:
Ver original
  1. $ok = "todo ok";
No conoces las variables boolean? true y false

2) Esta línea te va a dar error si el usuario no está en la base de datos:
Código PHP:
Ver original
  1. if($usu == $rs["nombre"] && $pass == $rs["clave"]){
Ya que el fetch no devolverá ningún valor y al intentar hacer $rs['nombre'] te dirá que no existe el índice.

3) Esta línea no sé para qué está, se supone que estás creando ahora la sesión:
Código PHP:
Ver original
  1. $HT = $_SESSION['HT'];

Yo cambiaría algunas cosas:
Código PHP:
Ver original
  1. <?php
  2. if ($_POST['Entrar']) {
  3.     $ok = true;
  4.     $usu = $_POST["txt_usuario"];
  5.     $pass = $_POST["txt_contrasena"];
  6.     $consultar = pg_query($con, "select * from usuario where nombre = '$usu' and clave = '$pass'");
  7.     if (pg_fetch_array($consultar)) { // Esta función devuelve false si no hay ningún registro en la consulta
  8.         //todo el proceso de guardado
  9.     }else{
  10.         $ok = false;
  11.     }
  12.     if ($ok) { // $ok == true
  13.         $HT = $_SESSION['HT']; // La dejo, pero no sé para qué sirve.
  14.         $_SESSION['USUARIO'] = $usu;
  15.         sleep(3);
  16.         header('Location:home.php');
  17.     }
  18. }
  19. ?>

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #3 (permalink)  
Antiguo 24/08/2011, 12:44
 
Fecha de Ingreso: agosto-2011
Mensajes: 100
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: $_session

Gracias, eso me faltaba, los ().

Con relación al "switch" creo que es cosa de gustos, el mío cumple la función y el boolean también. Igual decidí un string porque después mando esa variable a otra página donde mostraría "todo ok"...

Y lo que tú dices que no va es porque no mostré todo el código completo :)

Gracias igual por tu ayuda.

Etiquetas: formulario, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:34.