Foros del Web » Programando para Internet » PHP »

Problema con Sesiones en PHP

Estas en el tema de Problema con Sesiones en PHP en el foro de PHP en Foros del Web. Hola: el problema que tengo ahora es que ya protegi mi sitio web con password y una variable de sesion para verificar si el usuario ...
  #1 (permalink)  
Antiguo 25/01/2007, 17:14
 
Fecha de Ingreso: enero-2007
Ubicación: Mérida, yucatan, mexico
Mensajes: 15
Antigüedad: 17 años, 2 meses
Puntos: 0
Pregunta Problema con Sesiones en PHP

Hola:
el problema que tengo ahora es que ya protegi mi sitio web con password y una variable de sesion para verificar si el usuario se autentifico o todo bien.
1.- Una pagina que pide el password y usuario.
2.- esta pagina llama a un script de control que valida que la dupla sea correcta con datos de una base de MySql.
3.-si el script de control determina que son correctos el usr y passwrd enconces se llama a la página principal con acceso restringido

usr /pass :-----: compruebo datos :----(si datos validos)---: Aplicacion :

Todo funciona como esperaba en mi máquina, en localhost pero a la hora de subirlo a host remoto sucede lo siguiente:
tecleo el usuario y password correctamente y se carga la página de control y ahi se queda. Nunca se va a la primera página.

el codigo del script es el siguiente:

//conecto con la base de datos
include "conexion.php";
$user= $HTTP_POST_VARS['TxtUser'];
$pass= $HTTP_POST_VARS['TxtPass'];

//Sentencia SQL para buscar un usuario con esos datos

$result=mysql_query("Select user, pass from users where user='$user' and pass='$pass'", $conexion);
$row=mysql_fetch_array($result);

//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa conbinación usuario/contraseña
if (mysql_num_rows($result)!=0){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
session_register("autentificado");
$autentificado = "SI";
header ("Location: ver1.php"); // ACA LLAMO a la pagina principal de la aplcacion segura
}else {
//si no existe le mando otra vez a la portada
header("Location: index.php");
}
mysql_free_result($result);

?>

de antemano agradesco su ayuda.
  #2 (permalink)  
Antiguo 25/01/2007, 18:23
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Re: Problema con Sesiones en PHP

session_register("autentificado"); esto ya es obsoleto, mejor usa $_SESSION['autentificado']="SI" y para accesar a el es $_SESSION['autentificado']=="SI".
Código PHP:
session_start();//inicia desde el principio
//conecto con la base de datos
include "conexion.php";
$user$_POST['TxtUser'];
$pass$_POST['TxtPass'];

//Sentencia SQL para buscar un usuario con esos datos

$result=mysql_query("Select user, pass from users where user='$user' and pass='$pass'"$conexion);
$row=mysql_fetch_array($result);

//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa conbinación usuario/contraseña
if (mysql_num_rows($result)!=0){
//usuario y contraseña válidos
//defino una sesion y guardo datos
$_SESSION['autentificado']="SI";
header ("Location: ver1.php"); // ACA LLAMO a la pagina principal de la aplcacion segura
}else {
//si no existe le mando otra vez a la portada
$session_destroy();//se destruye la sesión iniciada desde el principio
header("Location: index.php");
}
mysql_free_result($result); 
saludos.

si no te funciona dilo y le seguimos moviendo, jeje, estamos bien cerquita, eres la persona mas cercana que he visto por aqui.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.

Última edición por eits; 25/01/2007 a las 18:51
  #3 (permalink)  
Antiguo 26/01/2007, 09:56
 
Fecha de Ingreso: enero-2007
Ubicación: Mérida, yucatan, mexico
Mensajes: 15
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Problema con Sesiones en PHP

Que bien!!

estamos si que estamos bien cerca, eres de alguna escuela de valladolid? algun Tec o algo asi?

mira, le hice una modificacion agregando un script mas que lo que hace es abrir la sesion pero aun asi me pasa lo mismo, funciona en localhost pero en el servidor no funciona.


----------------- ENTRADA.PHP -------------------------
<?
//Conexion con la base
include "conexion.php";
$user= $HTTP_POST_VARS['TxtUser'];
$pass= $HTTP_POST_VARS['TxtPass'];

if (!empty($user) and !empty($pass))
{
//Creamos la sentencia SQL y la ejecutamos
$result=mysql_query("Select user, pass from users where user='$user' and pass='$pass'", $conexion);
$row=mysql_fetch_array($result);

if ($row[0]==$user and $row[1]==$pass) {
//session_start();
//$_SESSION["autentificado"]= "SI";
//header ("Location: ver1.php");

include "abrirsesion.php";

header ("Location: ver1.php");
}
else
{
echo "User or Password incorrect !";
}
}
else
{
if (empty($user))
echo "<b>No se especifico nombre de usuario</b><br>";
if (empty($pass))
echo "<b>No se tecleo password </b><br>";
echo "User or Password blank !";
}
?>

--------- abrirsesion.php --------------

<?
session_start();
session_register("autentificado");
$_SESSION["autentificado"]= "SI";
?>

-------- SEGURIDAD.PHP ----ESTE SCRIP LO INCLUDE DENTRO DE CADA PAGINA QUE QUIERO PROTEGER ------<?include ("seguridad.php");?> ------

<?
//Inicio la sesión
session_start();

//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO
if ($_SESSION["autentificado"] != "SI") {
//si no existe, envio a la página de autentificacion
echo " La página ha caducado ";
header("Location: index.php");
//ademas salgo de este script
exit();
}
?>
  #4 (permalink)  
Antiguo 26/01/2007, 10:53
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Re: Problema con Sesiones en PHP

aqui hice algunas modificaiones y te las explico un poco, a demás de que comente algunas partes para que veas la direfencia y quite otras que no van a servir, checalo y comentas.
ah!, se me olvidaba, como te dije antes el session_register ya no se utiliza es obsoleto por eso lo quite, en vez de ese esta la variable de session "$_SESSION[]"
Código PHP:
----------------- ENTRADA.PHP -------------------------
<?
session_start
();//primero inicias la session
//Conexion con la base
include "conexion.php";
//recuperas los datos del formulario pasados por post
$user$_POST['TxtUser'];
$pass$_POST['TxtPass'];
//se verificar si no estan vacias las variables
if (!empty($user) and !empty($pass))
{
    
//Creamos la sentencia SQL y la ejecutamos
    
$result=mysql_query("Select user, pass from users where user='$user' and pass='$pass'"$conexion);
    
#### esto de aqui abajo esta de mas ya que el mysql
    #### te devolvera los que coincidan con $user y con $pass
    /*$row=mysql_fetch_array($result);
        if ($row[0]==$user and $row[1]==$pass)
            {
                $_SESSION["autentificado"]= "SI";
                header ("Location: ver1.php");
            }
        else
            {
                echo "User or Password incorrect !";
            }*/
    ### lo mejor seria
    
$total=mysql_num_rows($result);//esto te devolvera el numero de registros encontrados
    //si total es mayor de 0 entonces hubo coincidencias y el usuario existe
    
if($total>0)
        {
            
//como hubo coincidencia registro al usuario
            
$_SESSION["autentificado"]= "SI";
            
//y lo redirecciono
            
header ("Location: ver1.php");
        }
    
// de lo contrario
    
else
        {
            
//le muestro el error
            
echo "User or Password incorrect !";
        }
}
//si estan vacias las variables
else
{
    if (empty(
$user))
        echo 
"<b>No se especifico nombre de usuario</b><br>";
    if (empty(
$pass))
        echo 
"<b>No se tecleo password </b><br>";
    echo 
"User or Password blank !";
    
## limpio el arreglo de la session por si tiene algo(aqui es opcional)
    ## en donde si es de ley q este en cuando termine la session en el logout
    
$_SESSION = array();
    
## se destruye la session iniciada al principio
    
session_destroy();
}
?>
-------- SEGURIDAD.PHP ----ESTE SCRIP LO INCLUDE DENTRO DE CADA PAGINA QUE QUIERO PROTEGER ------<?include ("seguridad.php");?> ------
<?
//Inicio la sesión
session_start();

//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO
if ($_SESSION["autentificado"] != "SI") {
//si no existe, envio a la página de autentificacion
##### OJO, no debe existir ningun tipo de salida en pantalla antes de un 
##### header, ya que la salida evita que se ejecute el header
##### a demás de que estas redireccionando y nunca se veria el mensaje.
//echo " La página ha caducado ";<--- a esto me refiero
header("Location: index.php");
//ademas salgo de este script
exit();
}
?>
saludos.

con respecto a tu otra pregunta estaba en el tec. de valladolid pero ya termine, casualmente el viernes de la semana pasada presente mi examen te titulación y tu ¿a q t dedicas?
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.

Última edición por eits; 26/01/2007 a las 11:00
  #5 (permalink)  
Antiguo 26/01/2007, 13:53
 
Fecha de Ingreso: enero-2007
Ubicación: Mérida, yucatan, mexico
Mensajes: 15
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Problema con Sesiones en PHP

agrege las modificaciones y si mejoró pero aun sigue dando el mismo error. se queda en Entrada.php y no hace el header.

te voy a enviar a tu correo un nombre de usuario y pass a ver si tu le encuentras algo.
  #6 (permalink)  
Antiguo 26/01/2007, 17:18
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Re: Problema con Sesiones en PHP

mira, el problema no es la session, eso lo hace perfectamente, el problema es que no te lo redirecciona, lo mejor sería que me pudieras mandar el index y entrada.php para que yo lo pueda revisar con mas calma.

te explico rapidamente, ¿por qué se que no es la session? porque puse el usuario y contraseña que me diste y muy cierto se quedo en Entrada.php pero luego a la url que me diste le agregué /ver1.php(que es a donde debe redirecionarte) y me mostro el contenido y como tienes validado la session eso quiere decir que si estoy autentificado por eso te digo que no es la session es el header.

espero los archivos para checarlos y ver que sucede.

pd. antes de loguearte trata de entrar a tu url/ver1.php y veras que no pasas y luego logueate y haces lo mismo para que veas y en cuanto al set_ini() no creo que sea por ahi la cosa.

saludos.

ah!!, se me olvidaba usa esto header("Location: ver1.php"); sin dejar espacio entre header y (...) es decir que así nooo header ("Location: ver1.php");
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.

Última edición por eits; 26/01/2007 a las 17:32
  #7 (permalink)  
Antiguo 26/01/2007, 17:57
 
Fecha de Ingreso: enero-2007
Ubicación: Mérida, yucatan, mexico
Mensajes: 15
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Problema con Sesiones en PHP

Bueno, ahi te va el index.php a ver que mas se puede hacer.

------------- INDEX.PHP ------------------

<!doctype html public "-//W3C//DTD HTML 4.01//EN">
<?php ?>
<html>

<div align="CENTER">
<head>
<title>CEOTEC DENTAL LAB</title>
<meta http-equiv="generator" content="PHP Designer 2005" />
</head>

<body background="AZULDIL.JPG" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000" onload="TxtUser.focus()" >
<img src="NADP.bmp" align="center" />

<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<h3> <p align="CENTER"> SISTEMA DE CONSULTA DE CASOS EN LABORATORIO </p> </h3>

<br />
<FORM METHOD="POST" ACTION="Entrada.php">
<h5>
User :
<input type="text" align="LEFT" size="15" maxlength="15" name="TxtUser" /><br><br>

Password :
<input type="password" align="LEFT" size="10" maxlength="LEFT" name="TxtPass" /><br /><br />

<input type="submit" VALUE=" Login " />

</body>
</html>
--------------------------------------------------------------------
por cierto, soy Licenciado en Ciencias de la Computación, egrese de la Fac. de Matematicas de la UADY, ya hace un buen rato pero no habia trabajado nunca con php hasta hace unos meses que empece a practicar un poco y salio este proyectito. Mi fuerte es mas el Visual Fox.

Suaodls.
  #8 (permalink)  
Antiguo 27/01/2007, 11:03
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Re: Problema con Sesiones en PHP

Cita:
Iniciado por eits Ver Mensaje
ah!!, se me olvidaba usa esto header("Location: ver1.php"); sin dejar espacio entre header y (...) es decir que así nooo header ("Location: ver1.php");
no se si viste esto y lo hayas checado, pero la verdad es que ya lo cheque en linux y en windows y me funciona, de todas maneras te dejo el index y entrada.php con algunos ajustes para que cheque a ver que tal, y sino funciona no desesperes le seguimos hasta que quede.

aqui el index
Código HTML:
<!doctype html public "-//W3C//DTD HTML 4.01//EN">
<html>

<!--<div align="CENTER"> este div no va y en todo caso iría dentro del <body></body>
y tendría que estar cerrado <div></div>-->
<head>
<title>CEOTEC DENTAL LAB</title>
<meta http-equiv="generator" content="PHP Designer 2005" />
</head>

<body background="AZULDIL.JPG" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000" onload="TxtUser.focus()" >
<img src="NADP.bmp" align="center" />

<!--esto esta mal no debe de existir dos o mas tags de body
<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">-->
<h3> <p align="CENTER"> SISTEMA DE CONSULTA DE CASOS EN LABORATORIO </p> </h3>

<br />
<FORM METHOD="POST" ACTION="Entrada.php">
<h5>
User :
<input type="text" align="LEFT" size="15" maxlength="15" name="TxtUser" /><br><br>

Password :
<input type="password" align="LEFT" size="10" maxlength="LEFT" name="TxtPass" /><br /><br />

<input type="submit" VALUE=" Login " />
</h5>
</FORM><!--te faltaba cerrar el h5 y el form-->
</body>
</html> 
aqui el de entrada
Código PHP:
<?
session_start
();//primero inicias la session
include ("conexion.php");//Conexion con la base
//recuperas los datos del formulario pasados por post
$user$_POST['TxtUser'];
$pass$_POST['TxtPass'];
//se verificar si no estan vacias las variables
if (!empty($user) && !empty($pass))
    {
        
//Creamos la sentencia SQL y la ejecutamos
        
$result=mysql_query("Select user, pass from users where user='$user' and pass='$pass'"$conexion);
        
$total=mysql_num_rows($result);//esto te devolvera el numero de registros encontrados
        //si total es mayor de 0 entonces hubo coincidencias y el usuario existe
        
if($total>0)
            {
                
//como hubo coincidencia, registro al usuario
                
$_SESSION["autentificado"]= "SI";
                
//y lo redirecciono
                
header("LOCATION: ver1.php");
                exit(); 
//salgo, ya no tiene caso continuar porque se llamo a otra página.
            
}
        
// de lo contrario
        
else
            {
                
//le muestro el error
                
echo "<b>User or Password Wrong !</b>";
            }
    }
//si estan vacias las variables
else
    {
        if (empty(
$user))
            {echo 
"User Blank !";}
        else
            {echo 
"<b>Password Blank !</b>";}
        
## limpio el arreglo de la session por si tiene algo(aqui es opcional)
        ## en donde si es de ley q este, es en donde termine la session(en el logout)
        
$_SESSION = array();
        
## se destruye la session iniciada al principio por no se autentifico al usuario
        
session_destroy();
    }
?>
checa a ver que tal.

saludos
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #9 (permalink)  
Antiguo 27/01/2007, 12:54
 
Fecha de Ingreso: enero-2007
Ubicación: Mérida, yucatan, mexico
Mensajes: 15
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Problema con Sesiones en PHP

MARE YASTA!!!

Listo mi estimado:

creo que el no haber cerrado algun tag por ahi o el doble "Body" me estaba perjudicando.
Ahora si quedo, muchas gracias gracias por tu ayuda, te debo unos salbutitos, jeje.

Te agregare a mi lista de Msnger si me lo permites.

Gracias
  #10 (permalink)  
Antiguo 27/01/2007, 13:26
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Re: Problema con Sesiones en PHP

pues, MARE BOXITO de nada(jeje, parece como si estuviera dando promocion), y pues si te lo CHAN permito, cuando quieras por eso tengo mi correo pa el que quiera jeje.

saludos y estamos pa ayudar en lo que necesites.

por cierto, el msn no me a pedido agregar un nuevo contacto, cualquier cosa puedes escribirme un mensaje privado aqui en el foro.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.

Última edición por eits; 27/01/2007 a las 13:35
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 07:39.