entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Reconocer sesión de usuario en php

Tengo una página llamada zona (archivo php ) donde quiero colgar varios artículos, pero quiero que para poder ver los artículos de esa página, los usuarios deban de estar logados & registrados en mi bbdd.
Por lo que cual he metido en formulario en la página zona donde le pido al usuario el email y la password.
Incluyo unicamente el form del archivo php donde se hace la llamada a la página encargada de acceder a la bbd

 <?php 
    echo 'Bienvenido:  ';
    if (isset($_SESSION['email'])) {
        echo '<b>'.$_SESSION['email'].'</b>.('.$_SESSION['fp_username'].')';
        echo '<p><a href="logout.php">Logout</a></p>';
    }else{

        echo ' <form id="formulario" action="validar_usuario3.php" method="post">

           <label for="email"> E-mail </label>
           <br >
           <input type="text" name="email" id="email" class="required email" >
           <br >
           <label for="telefono"> Password </label>
           <br >
           <input type="password" name="password" id="password" class="required" >
           <br>

       <input type="submit" id="enviar" value="Enviar" >

        </form>
                <p><a href="registrar.php">Alta como nuevo usuario </a></p>';
        }

Como os he comentado , este formulario llama a un php que se llama validar_usuario3, encargado de coger el email y la password y comprobar en la bbdd que existe

El código de este php es el siguiente :

<?php session_start();

$dbhost = "localhost";
$dbuser = "corbachu";
$dbpass = "Xxxx";
$conx = mysql_connect($dbhost, $dbuser, $dbpass);

 mysql_select_db("corbachu_percy", $conx)or die ('Error al seleccionar la Base de Datos: '.mysql_error());;

if(trim($_POST['email']) != "" && trim($_POST['password']) != "")
{

$sql = 'SELECT password, email, username FROM usuarios WHERE email=\''.$email.'\' and password=\''.$password.'\'';
$result = mysql_query($sql);

    if($row = mysql_fetch_array($result)){  

    if($row['password'] == $password){
            $_SESSION['fp_username'] = $row['username'];
            $_SESSION['email'] = $row['email'];
            var_dump ($result);
            echo 'Has sido logueado correctamente '.$_SESSION['fp_username'].' <p>';
            echo '<a href="zona.php">Index</a></p>Ingreso exitosooooooooo, ahora sera dirigido a la pagina principal , esperemos con la sesión.
            <SCRIPT LANGUAGE="javascript">
            location.href = "zona.php";
            </SCRIPT>';
        }else{

            echo 'Datos incorrectos o contraseñas incorrectas;)';
        }
    }else{
        echo 'datos incorrectos :)';
    }
    mysql_free_result($result);
}else{
    echo 'Debe especificar un usuario y password';
}

El problema que tengo es que, una vez accede a la bbdd y comprueba que el email y la password son correctas , cuando vuelve a la página zona.php no sabe que el usuario que está en la sesión , como si no se hubiera logado. He probado a poner sessionstart() en el archivo zona.php pero me da un error de código.

Muchas gracias por vuestra ayuda

0voto

Peter comentado

Le cambie el título a la pregunta para que sea especifica.

Saludos.

1 Respuesta

0voto

carlossevi Puntos63520

Debes empezar con session_start() para "Iniciar una nueva sesión o reanudar la existente". (Documentación).

Dices:

He probado a poner sessionstart() en el archivo zona.php pero me da un
error de código.

¿Qué error?

0voto

carlossevi comentado

No tengo tu archivo para comprobarlo, pero según el texto que has copiado, entre <!DOCTYPE HTML> y el inicio de la línea no hay ningún espacio, pero delante de <? session_start(); sí que parece haber: ` dos espacios o un tabulador o algo. ¿Estás seguro de que el primer caracter del fichero es el<`?

0voto

gonzalss comentado

Lo he puesto ahora así

  <?php session_start();?>
<!DOCTYPE HTML>
<HTML>

Con el resultado : Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home3/corbachu/public_html/zona.php:1) in /home3/corbachu/public_html/zona.php on line 1

0voto

carlossevi comentado

Sigue pareciendo que en la primera línea hay algún caracter delante del <. ¿Te has asegurado que el primer caracter de todo el fichero es el signo <?

0voto

gonzalss comentado

Tenias razón era por el espacio .
Ahora funciona perfectamente
Muchas gracias amigo

0voto

carlossevi comentado

Me alegro que te funcione. En el futuro intenta leer más despacio los comentarios ya que esta misma solución te la di como 10 comentarios más arriba y podíamos haber ahorrado algo de tiempo =)

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta