Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problemas con sesiones $_SESSION

Estas en el tema de Problemas con sesiones $_SESSION en el foro de PHP en Foros del Web. Hola a todos, estoy creando el sistema de usuario. Mi intención es que cuando un usuario esta creado en menú cambie. (php - mysql) y ...
  #1 (permalink)  
Antiguo 20/02/2014, 04:53
Avatar de biktorbasket  
Fecha de Ingreso: junio-2013
Mensajes: 42
Antigüedad: 10 años, 10 meses
Puntos: 2
Pregunta Problemas con sesiones $_SESSION

Hola a todos, estoy creando el sistema de usuario. Mi intención es que cuando un usuario esta creado en menú cambie. (php - mysql)

y creo que el error esa aquí, php no me da ningún error. Si alguien encuentra algún error perfecto, si está bien descarto esta opción y sigo buscándolo. Un saludo

Código PHP:

session_start
();

function 
autenticado(){
    if (isset(
$_SESSION["nombre_usuario"]) && isset($_SESSION["email_usuario"]) && isset($_SESSION["youtuber_usuario"])){
        return 
true;
    }else{
        return 
false;
    }



Código PHP:

 <li>
          <?php
            
if(isset($_SESSION["email_usuario"])){
              echo 
"<a href='subir.php'>Subir vídeo</a>";
            }else{
              echo 
"<a href='registrarse.php'>registrarse</a>";
            }
          
?>
        </li>
        <li>
          <?php
            
if(isset($_SESSION["email_usuario"])){
              echo 
"<a href='cerrarlogin.php'>Cerrar sesión</a>";
            }else{
              echo 
"<a href='login.php'>Iniciar sesión</a>";
            }
          
?>
        </li>
  #2 (permalink)  
Antiguo 20/02/2014, 06:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problemas con sesiones $_SESSION

En lo que has posteado no hay ni una línea que tenga relación con MySQL. Es todo PHP.

OFF-TOPIC

Movido a PHP
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 20/02/2014, 06:17
Avatar de biktorbasket  
Fecha de Ingreso: junio-2013
Mensajes: 42
Antigüedad: 10 años, 10 meses
Puntos: 2
Respuesta: Problemas con sesiones $_SESSION

Cierto, fallo mio :(
  #4 (permalink)  
Antiguo 20/02/2014, 06:28
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 12 años, 10 meses
Puntos: 17
Respuesta: Problemas con sesiones $_SESSION

A simple vista no ahi ningun error, has probado en hacer un
Código PHP:
Ver original
  1. print_r($_SESSION);
para ver si esas sesiones están activas?

Saludos
__________________
Twitter: @ed33x
  #5 (permalink)  
Antiguo 20/02/2014, 08:03
Avatar de biktorbasket  
Fecha de Ingreso: junio-2013
Mensajes: 42
Antigüedad: 10 años, 10 meses
Puntos: 2
Respuesta: Problemas con sesiones $_SESSION

Código PHP:
<?php
    print_r
($_SESSION);
 
?>

// RESULTADO Array ( )
No aparece ningún fatal error ni nada y al entrar con el email y contraseña el me devuelve a la página de incio, pero nada.

Este es el login:

Código PHP:
<?php
    
include('inc/head.php');
    include(
'inc/conexion.php');
    
$conexion conecta_base_datos();
    include(
'inc/nav.php');
?>

<div class="container registrarse">
    <div class="row">
        <div class="col-md-6 col-md-offset-3">
        
            <form action="inc/dologin.php" method="post" role="form">

                <?php 

                
if(isset($_GET["errorlogin"])){
                    echo 
'<div class="alert alert-danger alert-dismissable">';
                    if(
$_GET["errorlogin"]=="1"){
                        echo 
"No he recibido los datos de autentificación.";
                    }elseif(
$_GET["errorlogin"]=="2"){
                        echo 
"El email o contraseña estan vacias.";
                    }elseif(
$_GET["errorlogin"]=="3"){
                        echo 
"Error en base de datos";
                    }elseif(
$_GET["errorlogin"]=="4"){
                        echo 
"No existe un usuario con ese email.";
                    }elseif(
$_GET["errorlogin"]=="5"){
                        echo 
"La contraseña alamacenada no corresponde con el usuario.";
                    }elseif(
$_GET["errorlogin"]=="5"){
                        echo 
"Error desconocido :(.";
                    }
                    echo 
'</div>';
                }

                
?>

                <div class="form-group">
                    <label for="exampleInputEmail1">Email</label>
                    <input type="email" class="form-control" id="" placeholder="[email protected]" name="usuario_email">
                </div>

                <div class="form-group">
                    <label for="exampleInputPassword1">Contraseña</label>
                    <input type="password" class="form-control" id="" name="usuario_password">
                </div>

                <div class="checkbox">
                    <label>
                        <input type="checkbox"> Recordar sesión
                    </label>
                </div>

                <input type="submit" class="btn btn-default" value="Entrar" />

             </form>
        </div>
    </div>
</div>

<?php 
mysql_close
($conexion); 
include(
'inc/footer.php');
?>
y este inc/dologin.php

Código PHP:
<?php
    $conexion 
mysql_connect("localhost","root""");
    
mysql_select_db("videogamers");


    
// página que realiza el login del usuario
    // Compruebo si recibo los datos de login

    
if(!isset($_POST["usuario_email"]) || !isset($_POST["usuario_password"])){
        
header("location:../login.php?errorlogin=1");
    }elseif(
$_POST["usuario_email"]=="" || $_POST["usuario_password"]==""){
        
header("location:../login.php?errorlogin=2");
    }else{
        
//email y contraseña existen y no estan vácios.
        // busco si existe algun usuario en mi base de datos.
        
$ssql "select * from usuarios where usuario_email='" $_POST["usuario_email"] . "'";
        
// conecto a la base de datos
        
if(!$record_usuario mysql_query($ssql)){
        
header("location:../login.php?errorlogin=3");
        }else{
            if(
mysql_num_rows($record_usuario)!=1){
                
header("location:../login.php?errorlogin=4");
            }else{
                
$usuario_encontrado mysql_fetch_array($record_usuario);
                if (
$usuario_encontrado["usuario_password"] != md5($_POST["usuario_password"])){
                    
header("location:../login.php?errorlogin=5");
                }else{
                    
// es que la contraseña corresponde, luego realizo el login
                    // echo "continuo login";
                    //session_start(); sesión ya esta iniciada en conexion.php
                    // almaceno en la sesión los datos del usuario
                    
$_SESSION["email_usuario"] = $_POST["usuario_email"];
                    
$_SESSION["nombre_usuario"] = $usuario_encontrado["usuario_nombre"];
                    
$_SESSION["youtuber_usuario"] = $usuario_encontrado["usuario_youtuber"];
                    
// redirijo a la portada
                    
header("location:../index.php");

                }
            }
        }
    }



?>
  #6 (permalink)  
Antiguo 20/02/2014, 09:21
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 12 años, 10 meses
Puntos: 17
Respuesta: Problemas con sesiones $_SESSION

Claro como puedes ver no existen sesiones ya que en el dologin.php no has iniciado las sesiones con session_start(); en la linea 1.

Un saludo!
__________________
Twitter: @ed33x
  #7 (permalink)  
Antiguo 20/02/2014, 09:53
Avatar de biktorbasket  
Fecha de Ingreso: junio-2013
Mensajes: 42
Antigüedad: 10 años, 10 meses
Puntos: 2
Respuesta: Problemas con sesiones $_SESSION

Puse esto y el resultado es el mismo.

Código PHP:
<?php
    session_start
();
       
$conexion mysql_connect("localhost","root""");
    
mysql_select_db("videogamers");

Última edición por biktorbasket; 20/02/2014 a las 10:05 Razón: error
  #8 (permalink)  
Antiguo 20/02/2014, 11:54
Avatar de biktorbasket  
Fecha de Ingreso: junio-2013
Mensajes: 42
Antigüedad: 10 años, 10 meses
Puntos: 2
Respuesta: Problemas con sesiones $_SESSION

Sabeís si puede ser por culpa del xampp o algo? llevo 3 días y estoy bloqueado.
  #9 (permalink)  
Antiguo 20/02/2014, 12:10
Avatar de andinog  
Fecha de Ingreso: febrero-2012
Mensajes: 50
Antigüedad: 12 años, 2 meses
Puntos: 6
Respuesta: Problemas con sesiones $_SESSION

Hola biktorbasket

te sugiero que pruebes lo siguiente:


utilizar

session_write_close()

antes de realizar la redireccion mediante header('Location....

y luego de ésta, utilizar die()

es decir:

Código PHP:
Ver original
  1. header("location:../index.php");
  2. die();

Saludos!
__________________
"El que nada duda nada sabe"
Ser Programador
  #10 (permalink)  
Antiguo 20/02/2014, 12:19
Avatar de biktorbasket  
Fecha de Ingreso: junio-2013
Mensajes: 42
Antigüedad: 10 años, 10 meses
Puntos: 2
Respuesta: Problemas con sesiones $_SESSION

Me da el siguiente error:

Código PHP:
Parse errorsyntax errorunexpected 'header' (T_STRINGin C:xampphtdocsvideogamersincdologin.php on line 38 
lo he puesto con ; también y sigue sin aparecer la sesion en index.
  #11 (permalink)  
Antiguo 20/02/2014, 12:53
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 212
Antigüedad: 12 años, 10 meses
Puntos: 17
Respuesta: Problemas con sesiones $_SESSION

A ver;

1.- Se ingresan los datos en un formulario y se direcciona a dologin.php.
2.- Si es todo correcto entra en el else:

Código PHP:
Ver original
  1. }else{
  2.                     // es que la contraseña corresponde, luego realizo el login
  3.                     // echo "continuo login";
  4.                     //session_start(); sesión ya esta iniciada en conexion.php
  5.                     // almaceno en la sesión los datos del usuario
  6.                     $_SESSION["email_usuario"] = $_POST["usuario_email"];
  7.                     $_SESSION["nombre_usuario"] = $usuario_encontrado["usuario_nombre"];
  8.                     $_SESSION["youtuber_usuario"] = $usuario_encontrado["usuario_youtuber"];
  9.                     // redirijo a la portada
  10.                     header("location:../index.php");
  11.  
  12.                 }
3.- Como es correcto tendria que crear las sesiones y redireccionarte a index.php.

Si a llegado a ese punto el script que te direcciona pero no te crea esas tres sesiones prueba por ejemplo a crear una sesion con un valor estatico ejemplo:

Código PHP:
Ver original
  1. $_SESSION["test"] = "testing";

A ver si en index.php ( que tambien en primera linea iniciar las sesiones. ) y vuelve hacer un print_r a ver que resultados te da.

Saludos
__________________
Twitter: @ed33x
  #12 (permalink)  
Antiguo 20/02/2014, 13:12
Avatar de biktorbasket  
Fecha de Ingreso: junio-2013
Mensajes: 42
Antigüedad: 10 años, 10 meses
Puntos: 2
Respuesta: Problemas con sesiones $_SESSION

Parece que funciona, me da este resultado.

Código PHP:
Array ( [test] => testing 
Por algún motivo no crea las sessiones...

He añadido un echo al final de dologin.php ocultando la redirección y el resultado de

Código PHP:
echo $_SESSION["usuario_nombre"]; 
Aparece el nombre correcto (Administrador), hasta hay funciona, pero no se queda guardado para que aparezca en las demás páginas al redireccionarlo.

Última edición por biktorbasket; 20/02/2014 a las 13:23
  #13 (permalink)  
Antiguo 20/02/2014, 13:43
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: Problemas con sesiones $_SESSION

mira te explico como lo hago yo

primero que nada el usuario: al usuario en la base de datos le asigno un rangos o role: este valor es numerico de 1 hasta el que tu quieras
luego tengo una tabla donde guardo la descripción de cada rango osea el texto en nombre

usuario
administrador
editor
vendedor

hasta aquí todo va bien,

cuando el usuario se registra en la pagina automáticamente le asigna el rango mas bajo, (luego desde un panel de administrador yo puedo cambiarlo)

si el usuario hace loggin en el proceso de yo creo las variables de $_sesion['rango'] y $_sesion['rdesc'] y tambien $_sesion['logueado']="si";

con esto armo el filto de mi menu:

por ejemplo a la tienda solo puedes entrar usuario logueados, para eso yo creo la funcion:

Código PHP:
Ver original
  1. function logueado(){
  2.     if(isset($_SESSION['logueado'])){
  3.         if($_SESSION['logueado'] == 'si'){ return true; }
  4.     }else{
  5.         return false;
  6.     }
  7. }

y pregunto con este:

Código PHP:
Ver original
  1. if(logueado()==true){ contenido a mostrar el usuario loggeado}

aparte de esto existe partes del menu que solo puedo mostrar por ejemplo a editores:

Código PHP:
Ver original
  1. if($_sesion['rango']==8){ contenido a mostrar el usuario es un editor}

y en algunos lugares muestro mensajitos como :

Código PHP:
Ver original
  1. echo "Un usuario ".$_sesion['rdesc']." ha editado tu comentario";

y asi de sencillo controlo todo lo que ves y lo que no puedes ver... espero te ayude
  #14 (permalink)  
Antiguo 20/02/2014, 14:04
Avatar de biktorbasket  
Fecha de Ingreso: junio-2013
Mensajes: 42
Antigüedad: 10 años, 10 meses
Puntos: 2
Respuesta: Problemas con sesiones $_SESSION

La verdad es que es bastante interesante, justo ahora estoy aprendiendo php a fondo y creo que en mi página un sistema de rangos para usuarios le vendría bastante bien.

Me guardo tú comentario, GRACIAAAAS!!
  #15 (permalink)  
Antiguo 20/02/2014, 23:35
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Problemas con sesiones $_SESSION

bueno cuando lo tengas hecho me avisas a ver que tal te queda...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #16 (permalink)  
Antiguo 21/02/2014, 05:03
Avatar de biktorbasket  
Fecha de Ingreso: junio-2013
Mensajes: 42
Antigüedad: 10 años, 10 meses
Puntos: 2
Respuesta: Problemas con sesiones $_SESSION

Claro, si consigo arreglar el problema os pongo todo el código.
  #17 (permalink)  
Antiguo 21/02/2014, 15:34
Avatar de biktorbasket  
Fecha de Ingreso: junio-2013
Mensajes: 42
Antigüedad: 10 años, 10 meses
Puntos: 2
Respuesta: Problemas con sesiones $_SESSION

Solucionado, despues de 5 días el problema era del xampp que bloqueaba las sessiones. gracias por vuestra ayuda!! he aprendido mucho con vuestros comentarios ^^

Etiquetas: mysql, sesiones_en_php, 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 23:13.