Foros del Web » Programando para Internet » PHP »

No se si tengo un problema con sessiones

Estas en el tema de No se si tengo un problema con sessiones en el foro de PHP en Foros del Web. Hola nuevamente, les comento que tengo un problema particular. Tengo un php en el cual inicio session normalmente y todo funciona lindo, agrego un link ...
  #1 (permalink)  
Antiguo 19/10/2013, 20:40
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Pregunta No se si tengo un problema con sessiones

Hola nuevamente, les comento que tengo un problema particular. Tengo un php en el cual inicio session normalmente y todo funciona lindo, agrego un link para ir a "agregar nota" que es este:

Código PHP:
include('config.php'); 
@
session_start();
if(
$_SESSION['logueado']!='SI'){
header('location: index.php');
exit(); 
Código HTML:
Menu: <a href="../">cancelar</a> <br /><br />
Hola <?=$_SESSION['usuario']?><br />
<form method="post" action="">
Para:<br />
<input type="text" name="para"/><br />
Asunto:<br />
<input type="text" name="asunto"/><br />
Mensaje:<br />
<textarea name="texto"></textarea>
<br /><br />
<input type="submit" name="add" value="agregar"/>
</form> 
Y hasta todo lindo, saluda al usuario y me permite ver los datos de el, pero el problema surge cuando decido cancelar el ingreso de datos y en el inicio de la pagina me sale esto: "Notice: Undefined variable: fila in... on line..."

Pero tengo la variable definida, por que pasa esto?

Gracias
__________________
Zreep
  #2 (permalink)  
Antiguo 19/10/2013, 20:42
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 2 meses
Puntos: 96
Respuesta: No se si tengo un problema con sessiones

y el codigo donde esta la variable fila?
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #3 (permalink)  
Antiguo 19/10/2013, 20:51
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: No se si tengo un problema con sessiones

Perdon, en el otro script. Osea, el problema pasa cuando vuelvo al otro script.

ejemplo:

Código PHP:
$fila $stmt->fetch();       
   if(
$fila 0){.... 
No se si se entendio. Tengo dos archivos, ver.php y agregar.php, en problema pasa en ver.php que es donde esta definida la variable $fila.
__________________
Zreep
  #4 (permalink)  
Antiguo 19/10/2013, 22:02
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: No se si tengo un problema con sessiones

ya encontre el problema, estoy repitiendo una variable que es $fila...
Pero como esta todo en PDO tengo que hacer un pregunta, por que no me trae los datos?

Código PHP:
if(isset($_SESSION['logueado']) && $_SESSION['logueado'] == "SI"){
$stm $con->prepare("SELECT * FROM usuario WHERE nombre=:logg");
$stm->execute(array(':logg'=>$_SESSION['nombre']));
$fila $stmt->fetch(); 
Si me tra el nombre del usuario, pero nada mas...
__________________
Zreep
  #5 (permalink)  
Antiguo 20/10/2013, 00:27
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: No se si tengo un problema con sessiones

$fila es una variable común y corriente que desaparece al finalizar la ejecución del script, lo que realmente necesitas es definir un elemento en la variable de sesión, ejemplo:

Código PHP:
Ver original
  1. // Te faltaba esta comparación, para asegurarte de que sí existe el usuario en la tabla
  2. if($stm->num_rows == 1) {
  3.     // También, al asignar fila tenías $stmt, sobrando la t final
  4.     $_SESSION['fila'] = $stm->fetch();
  5. }

Con eso ya puedes acceder en otros scripts a $_SESSION['fila']

Por cierto, quita la @ que está antes de session_start(), te puede causar muchos mas problemas de los que corrige "camufla".
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 21/10/2013, 15:20
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: No se si tengo un problema con sessiones

Hola Triby esto seria mas o menos asi?

Código PHP:
try {
    
$con = new PDO('mysql:host=localhost;dbname=basee','root','passs');
    }
catch (
PDOException $e){
    echo 
"Failed to get DB handle: ".$e->getMessage()."";
    exit;

Código PHP:
@session_start();

if(isset(
$_POST['enviar'])){
    if(!empty(
$_POST['user'])){
       
$stmt $con->prepare("SELECT * FROM usuario WHERE pass=:pass");
       
$stmt->execute(array(':pass'=>$_POST['user']));
       
$fila $stmt->fetch();       
            if(
$fila 0){
             
$_SESSION['logueado'] = "SI";
             
$_SESSION['usuario']  = $fila['nombre'];
            } else {
                echo 
'<div style="color: red; text-align: center;">Dato incorrecto</div>';
            }
    }

Código PHP:
if(isset($_SESSION['logueado']) && $_SESSION['logueado'] == "SI"){
    
$stm $con->prepare("SELECT * FROM usuario WHERE nombre=:logg");
    
$stm->execute(array(':logg'=>$_SESSION['usuario']));
    
//$fila = $stm->fetch();
    
if($stm->num_rows == 1) {
    
// También, al asignar fila tenías $stmt, sobrando la t final
    
$_SESSION['fila'] = $stm->fetch();

Código HTML:
datos del usuario... Hola <?=$_SESSION['usuario']?>, tu correo es: <?=$fila['mail']?> 
Me da error. Y no entendi bien el punto que me habias dicho!
__________________
Zreep
  #7 (permalink)  
Antiguo 21/10/2013, 17:11
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: No se si tengo un problema con sessiones

No, más bien es así:

Código PHP:
Ver original
  1. // Quitando la @ de session_start()
  2.  
  3. if(isset($_POST['enviar'])){
  4.     if(!empty($_POST['user'])){
  5.          $stmt = $con->prepare("SELECT * FROM usuario WHERE pass=:pass");
  6.          $stmt->execute(array(':pass'=>$_POST['user']));
  7.          // Antes de leer la consulta debes saber si se encontró el usuario
  8.          if($stmt->num_rows == 1) {
  9.                // OK, se encontró solo un usuario
  10.                $_SESSION['logueado'] = "SI";
  11.                $_SESSION['usuario']  = $stmt->fetch();
  12.           } else {
  13.               echo '<div style="color: red; text-align: center;">Dato incorrecto</div>';
  14.           }
  15.      }
  16. }

Sigo sin entender tu planteamiento de usar $_POST['user'] para compararlo con la contraseña en la tabla de usuarios, pero mientras tú te entiendas, supongo que está bien.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 21/10/2013, 17:16
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: No se si tengo un problema con sessiones

Gracias Triby, voy a probarlo. Es tema de que uso $_POST es por que me piden que el administrador pueda ingresar usando las llaves de sus empleados. No quiere usar usario y contraseña, solo una llave en la cual pueda ver las ventas que ingresaron. Es por eso.
__________________
Zreep
  #9 (permalink)  
Antiguo 21/10/2013, 17:29
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: No se si tengo un problema con sessiones

me da este error, Notice: Undefined property: PDOStatement::$num_rows in...
__________________
Zreep
  #10 (permalink)  
Antiguo 21/10/2013, 19:41
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 2 meses
Puntos: 96
Respuesta: No se si tengo un problema con sessiones

para contar filas se usa rowCount
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #11 (permalink)  
Antiguo 21/10/2013, 20:42
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: No se si tengo un problema con sessiones

Cierto... no sé de donde saqué la idea de que estabas usando mysqli!
__________________
- León, Guanajuato
- GV-Foto
  #12 (permalink)  
Antiguo 21/10/2013, 20:54
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 2 meses
Puntos: 96
Respuesta: No se si tengo un problema con sessiones

Cita:
Iniciado por Triby Ver Mensaje
Cierto... no sé de donde saqué la idea de que estabas usando mysqli!
Cita:
Iniciado por zreep
Pero como esta todo en PDO tengo que hacer un pregunta, por que no me trae los datos?
Asi parece amigo, a cualquiera le puede pasar :D
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.

Etiquetas: variable
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 18:01.