Foros del Web » Programando para Internet » PHP »

Problema con $_SESSION

Estas en el tema de Problema con $_SESSION en el foro de PHP en Foros del Web. Hola, tengo un sistema de Login y quiero que guarde algunas $_SESSION, me funcionan perfectamente la id_usuario, nick, pero al crear la de rango no ...
  #1 (permalink)  
Antiguo 29/06/2014, 08:39
 
Fecha de Ingreso: junio-2012
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 1
Problema con $_SESSION

Hola, tengo un sistema de Login y quiero que guarde algunas $_SESSION, me funcionan perfectamente la id_usuario, nick, pero al crear la de rango no me funciona, la tengo así:

Código PHP:
  // Comprobamos que los datos ingresados en el formulario coincidan con los de la BD
    
$sql mysql_query("SELECT * FROM usuarios WHERE nick='".$nick."' AND clave='".$clave."'");
    if(
$row mysql_fetch_array($sql)) {
      
$_SESSION['id_usuario'] = $row['id_usuario'];        // Creamos la sesion "id_usuario" y le asignamos como valor el campo id_usuario
      
$_SESSION['nick'] = $row["nick"];                    // Creamos la sesion "nick" y le asignamos como valor el campo nick
      
$_SESSION['rango'] = $row["rango"];                // Creamos la sesion "rango" y le asignamos como valor el campo rango
        
header("Location: /");
    } 
Mi Login.php es este:
Código PHP:
<?php
  
// Verificamos si la sesión se inicio
    
session_start();
    if(empty(
$_SESSION['nick'])) {
    echo
'
      <form action="Comprobar.php" method="post">
        <input type="text" name="nick" autocomplete="off" placeholder="Usuario">
        <input type="password" name="clave" autocomplete="off" placeholder="Contrase&ntilde;a">
        <input type="submit" name="enviar" value="Ingresar">
      </form>'
;
    } else {
      
header ('Location: /');
    }
?>
y el Comprobar.php es este:
Código PHP:
<?php
  
// Verificamos si la sesión se inicio
    
session_start();

  
// Incluimos nuestro archivo de conexión con la base de datos
    
include('Config.php');

  
// Comprobamos que se hayan enviado los datos del formulario
    
if(isset($_POST['enviar'])) {

  
// Comprobamos que los campos nick y clave no estén vacíos
    
if(empty($_POST['nick']) || empty($_POST['clave'])) {
      echo
'<a href="javascript:history.back();">El usuario o la contrase&ntilde;a no han sido ingresados, por favor intentalo nuevamente</a>';
    } else {

  
// Limpiamos los campos del formulario de posibles códigos maliciosos
    
$nick mysql_real_escape_string($_POST['nick']);
    
$clave mysql_real_escape_string($_POST['clave']);
    
$clave md5($clave);

  
// Comprobamos que los datos ingresados en el formulario coincidan con los de la BD
    
$sql mysql_query("SELECT * FROM usuarios WHERE nick='".$nick."' AND clave='".$clave."'");
    if(
$row mysql_fetch_array($sql)) {
      
$_SESSION['id_usuario'] = $row['id_usuario'];        // Creamos la sesion "id_usuario" y le asignamos como valor el campo id_usuario
      
$_SESSION['nick'] = $row["nick"];                    // Creamos la sesion "nick" y le asignamos como valor el campo nick
      
$_SESSION['rango'] = $row["rango"];                // Creamos la sesion "rango" y le asignamos como valor el campo rango
        
header("Location: /");
    } else {
    echo
'
      <a href="Login.php">Error al parecer algo anda mal, por favor intentalo nuevamente</a></div>'
;
    }
  }

  } else {
    
header('Location: Login.php');
  }
?>
Así estoy obteniendo y no resulta:
Código PHP:
<?php
include('Settings.php');
session_start();
if(isset(
$_SESSION['nick'])) {
echo
'Bienvenido '.$_SESSION["nick"].' '.$_SESSION["rango"].'';
}
?>
No entiendo que está mal, alguien que me pueda ayudar por favor
  #2 (permalink)  
Antiguo 29/06/2014, 08:56
 
Fecha de Ingreso: junio-2014
Ubicación: Sevilla
Mensajes: 22
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Problema con $_SESSION

Debes poner al principio del SCRIPT PHP session_start();
No veo ningún fallo lo que si te recomiendo es que empieces a usar las funciones mysqli.
Asegúrate de que el select que estas usando esta bien. También puedes probar a cambiar fetct_array por fetch_object en vez de llamar a las tablas así: $row["tabla"] serias así $row->tabla
Yo lo veo mas cómodo y con menos fallos y deberías para tu seguridad web usar mysqli_real_escape_string() para que no te hagan inyecciones.
  #3 (permalink)  
Antiguo 29/06/2014, 09:19
 
Fecha de Ingreso: junio-2012
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Problema con $_SESSION

Gracias Gold por responder, pero aun así sigue sin funcionar, si el error fuese del session_start(); por la posición no obtendría el $_SESSION["nick"]
  #4 (permalink)  
Antiguo 29/06/2014, 11:17
Avatar de eccorposse  
Fecha de Ingreso: diciembre-2009
Ubicación: Beijing
Mensajes: 69
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con $_SESSION

Observa que estas obteniendo de
Código PHP:
Ver original
  1. $_SESSION["rango"]

Código PHP:
Ver original
  1. var_dump($_SESSION["rango"]);
  #5 (permalink)  
Antiguo 29/06/2014, 15:31
 
Fecha de Ingreso: junio-2014
Ubicación: Sevilla
Mensajes: 22
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Problema con $_SESSION

Como te han contestado prueba a ver que obtiene la variable.
Lo siento no me había fijado en que si tenias los session_start();

Mi solución es como te he dicho que usaras el mysql_fetch_object();
Creo que funciona mucho mejor que el array.
Si como dices haces bien el SELECT no deberías tener problemas.
Esto es cuestión de probar cosas hasta que salga algo. Yo hace poco tuve problemas con los SELECT después de llevar 6 años dedicándome a esto...
Y lo solucione con el mysql_fetch_object();
Pruébalo y me cometas. Te dejo la foma de uso:

Código PHP:
<?php
session_start
();
$con mysql_connect("host","user","pass");
$select mysql_query("SELECT column1,column2 FROM database WHERE column3='".mysql_real_escape_string($_POST["ejemplo"]."'",$con);
$sel mysql_fetch_object($select);
$_SESSION["session1"] = $sel->column1;
?>
Por favor pruébalo así y me cuentas si te ha funcionado.
  #6 (permalink)  
Antiguo 29/06/2014, 18:58
 
Fecha de Ingreso: junio-2012
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Problema con $_SESSION

Cita:
Iniciado por eccorposse Ver Mensaje
Observa que estas obteniendo de
Código PHP:
Ver original
  1. $_SESSION["rango"]

Código PHP:
Ver original
  1. var_dump($_SESSION["rango"]);
Gracias por la ayuda, el resultado me sale así mira: string(1) "1" sabes como puedo dejar solo el "1"
  #7 (permalink)  
Antiguo 30/06/2014, 00:18
Avatar de eccorposse  
Fecha de Ingreso: diciembre-2009
Ubicación: Beijing
Mensajes: 69
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con $_SESSION

Eso significa que $_SESSION["rango"] tiene como valor 1 y que si se esta guardando.

Este es un ejemplo de un var_dump de prueba a $_SESSION:
array(1) { ["usuario"]=> string(5) "milo"}

Por supuesto ese es solo var_dump($_SESSION) con el que obtendras todas las sesiones iniciadas var_dump($_SESSION["rango"]) especificas la sesion.

El string(#) no lo puedes cambiar, pero su valor es 1 que es lo que estamos buscando y no te preocupes que el 1 es el valor de esa string que esta dentro del array $_SESSION['rango'].

Otra cosa coloca session_start() al principio del codigo antes de hacer cualquier cosa:
Código PHP:
Ver original
  1. <?php
  2. include('Settings.php');
  3. if(isset($_SESSION['nick'])) {
  4. echo'Bienvenido '.$_SESSION["nick"].' '.$_SESSION["rango"].'';
  5. }
  6. ?>

Si sigue sin funcionar debugea tu codigo imprimiendo todas las sesiones y mantente en linea. Un saludo.

Etiquetas: session
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 03:12.