Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/03/2015, 11:15
Viturbiko
 
Fecha de Ingreso: septiembre-2014
Mensajes: 72
Antigüedad: 9 años, 8 meses
Puntos: 0
Obtener datos de un usuario con $_SESSION

Hola, tengo una duda con PHP.

He creado una base de datos con MySQL y un sistema de registro que parece funcionar, pues cuando introduzco los datos en el formulario estos pasan a la base de datos. Ahora estoy intentando crear un sistema de Login, que reconoce bien a los usuarios registrados, pues cuando introduzco los datos consigo que salte la función displayThanks() con un mensaje de agradecimiento por loguearse.

Pero el tema que no tengo muy claro es el de los permisos y como mostrar la web a las personas registradas y que han conseguido acceder. Para empezar, quiero que el menú en el que aparecen las opciones de Iniciar Sesión o Registrarse desaparezcan para que se vean el nombre del usuario que ha accedido y una opción de Logout. Os pego parte del codigo que llevo hasta ahora, que he copiado de un libro de fundamentos de PHP.

Por una parte existe un script login.php, que tiene una función para procesar el formulario de logueo que es la siguiente:

Código PHP:
function processForm() { 
    
    
$requieredFields = array( "username""password" );
    
$missingFields = array();
    
$errorMessages = array();
    
    
$member = new Member ( array( 

        
"username" => isset($_POST["username"]) ? preg_replace"/[^ \-\_a-zA-Z0-9]/"""$_POST["username"] ) : "",
        
"password" => isset($_POST["password"]) ? preg_replace"/[^ \-\_a-zA-Z0-9]/"""$_POST["password"] ) : "",
    ) );
    
    foreach (
$requieredFields as $requieredField) { 
        
        if (!
$member->getValue($requieredField) ) {
            
            
$missingFields[] = $requieredField
            
        }
        
    }
    
    if (
$missingFields) { /
        
        
$errorMessages[] = '<p class="error">Por favor, asegúrese de haber rellenado todos los campos del formulario de entrada.</p>';
        
    } elseif ( !
$loggedInMember $member->authenticate() )  {/
        
        
$errorMessages[] = '<p class="error">El nombre de usuario o contraseña son incorrectos. Por favor, asegúrese de haberlos escrito correctamente.</';
        
    }
    
    if (
$errorMessages) { 
        
        
displayForm($errorMessages$missingFields$member); 
        
    } else {
        
        
$_SESSION["member"] = $loggedInMember
        
displayThanks();
        
    }
    

Por lo que creo entender, los datos la sesión se han guardado en $loggedInMember. Lo que yo quiero hacer ahora, es obtener de esos datos $_SESSION varios de los datos que hay guardados en la base de datos de MySQL, como el nombre de usuario, el nombre real u otros datos, pero no se como hacerlo.

En el menú en el que quiero que desaparezcan el iniciar sesión y el registrarse he escrito lo siguiente:

Código PHP:
<?php

                  session_start
();

                  
$usuario $_SESSION["member"];

                if(empty(
$usuario)) { 

                echo 
"<a href='login.php'> Iniciar sesión</a> <span style='color:#dde5f0'> | </span> <a href='registro.php'> Registrarse </a>";; 

                } else { 

                echo 
$usuario;

                } 
?> </p>
Intentando que se muestre el nombre de usuario en caso de que si esta iniciada la sesión, se escriba el nombre del usuario, y en caso contrario aparezcan los enlaces para iniciar sesión y registrarse.

El error que me aparece es el siguiente:



¿Qué hago mal? ¿Algún consejo?

Gracias y un saludo.