Foros del Web » Programando para Internet » PHP »

Problemas con sesion en php?

Estas en el tema de Problemas con sesion en php? en el foro de PHP en Foros del Web. Estimados amigos buenos dias tengo un problema con el inicio de sesion en mi sistema. Los archivos que utilizo y coloco antes de cada pagina ...
  #1 (permalink)  
Antiguo 13/01/2014, 07:04
 
Fecha de Ingreso: junio-2009
Ubicación: Bolivia
Mensajes: 96
Antigüedad: 14 años, 10 meses
Puntos: 0
Problemas con sesion en php?

Estimados amigos buenos dias tengo un problema con el inicio de sesion en mi sistema. Los archivos que utilizo y coloco antes de cada pagina del sistema son los siguientes, se detallan en el siguiente codigo:
<?php
require_once('librerias/control_sesion.php');
include ('conn.php');
?>

control_sesion.php tiene el siguiente codigo:
Código PHP:
session_start();
    if (!isset(
$_SESSION['logueado']) || $_SESSION['logueado'] !== true
    {
        
header('Location: index.html');
        exit;
    } 
y conn.php tiene el siguiente codigo:
Código PHP:
        $hostname_Conn "localhost";
    
$database_Conn "db_datos";
    
$username_Conn "correspondencia";
    
$password_Conn "tyuio34";    
    
$conn mysql_connect($hostname_Conn$username_Conn$password_Conn) or trigger_error(mysql_error(),E_USER_ERROR); 
    
mysql_select_db($database_Conn,$conn) or die("Error (select): No se puede conectar a la BD");
    
date_default_timezone_set("America/caracas"); 
El problema es que tengo que actualizar una pagina manualmente cada cierto tiempo, en una pantalla maestra. En mi caso en index.php, y lo raro es que me bota del sistema utilzando require_once('librerias/control_sesion.php');
include ('conn.php'); en el codigo, quisiera saber porque y cual es el error?
Gracias de antemano y saludos
  #2 (permalink)  
Antiguo 13/01/2014, 07:33
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Problemas con sesion en php?

¿Qué quiere decir con que lo bota del sistema? ¿qué cuando recarga te redirecciona a ese index.html?

Veo que ahí tenes un header para hacer una redirección, me pregunto si creas en algún momento las sesiones, de lo contrario siempre te redireccionara.
  #3 (permalink)  
Antiguo 13/01/2014, 08:02
 
Fecha de Ingreso: junio-2009
Ubicación: Bolivia
Mensajes: 96
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problemas con sesion en php?

Esitmado el problema es que se bloquea todo y los archivos del menu no aparecen, es como me hubiera botado del sistema.
Saludos y gracias
  #4 (permalink)  
Antiguo 13/01/2014, 09:00
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 36
Respuesta: Problemas con sesion en php?

En que lugar de tu sistema tu cargas los valores para $_SESSION['logueado']?
  #5 (permalink)  
Antiguo 13/01/2014, 11:09
 
Fecha de Ingreso: junio-2009
Ubicación: Bolivia
Mensajes: 96
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problemas con sesion en php?

Utilizo autentificacion.php, cuyo codigo es el siguiente:
Código PHP:
Ver original
  1. <?php
  2.     include("conn.php");
  3.     //funciones requeridas   
  4.     session_start();     
  5. /*
  6. Nombre: DevolverIP
  7. Objetivo: Devolver el IP de la maquina a nivel local
  8. Fecha:13/11/2013
  9. */
  10. $errorMessage = '';
  11. function DevolverIP()
  12.     {
  13.         if( $_SERVER['HTTP_X_FORWARDED_FOR'] != '' )
  14.         {
  15.             $client_ip =
  16.                 ( !empty($_SERVER['REMOTE_ADDR']) ) ?
  17.                 $_SERVER['REMOTE_ADDR']
  18.                 :
  19.                 ( ( !empty($_ENV['REMOTE_ADDR']) ) ?
  20.                    $_ENV['REMOTE_ADDR']
  21.                    :
  22.                    "unknown" );
  23.  
  24.             $entries = split('[, ]', $_SERVER['HTTP_X_FORWARDED_FOR']);
  25.  
  26.             reset($entries);
  27.             while (list(, $entry) = each($entries))
  28.             {
  29.                 $entry = trim($entry);
  30.                 if ( preg_match("/^([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)/", $entry, $ip_list) )
  31.                 {
  32.                     // http://www.faqs.org/rfcs/rfc1918.html
  33.                     $private_ip = array(
  34.                         '/^0\\./',
  35.                         '/^127\\.0\\.0\\.1/',
  36.                         '/^192\\.168\\..*/',
  37.                         '/^172\\.((1[6-9])|(2[0-9])|(3[0-1]))\\..*/',
  38.                         '/^10\\..*/');
  39.  
  40.                     $found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);
  41.  
  42.                     if ($client_ip != $found_ip)
  43.                     {
  44.                         $client_ip = $found_ip;
  45.                         break;
  46.                     }
  47.                 }
  48.             }
  49.         }
  50.         else
  51.         {
  52.             $client_ip =
  53.                 ( !empty($_SERVER['REMOTE_ADDR']) ) ?
  54.                 $_SERVER['REMOTE_ADDR']
  55.                 :
  56.                 ( ( !empty($_ENV['REMOTE_ADDR']) ) ?
  57.                    $_ENV['REMOTE_ADDR']
  58.                    :
  59.                    "unknown" );
  60.         }
  61.         return $client_ip;
  62.     }
  63. /*
  64. Fecha: 13/11/2013
  65. Nombre: GuardarIngresosSistema
  66. Parametros:
  67. $usuario: Nombre de usuario
  68. $ip: Ip de la pc
  69. $pc: Nombre de la pc
  70. $ban: si ingreso o no, 1 si ingreso y 0 sino ingreso
  71. Objetivo: guardar datos de ingreso al sistema a traves de otra pc
  72. */
  73. function GuardarIngresoSistema($usuario,$ip,$pc,$ban)
  74. {
  75.     $dFechaRegistro = date("Y-m-d");
  76.     $dHoraRegistro = date("H:i:s");
  77.     $consulta  =  "INSERT INTO ta_ingreso";
  78.     $consulta .=  "(id_ingreso,nombre_usuario,ip_pc,nombre_pc,fecha_ingreso,hora_ingreso,ban_ingreso) ";
  79.     $consulta .= "VALUES('',";
  80.     $consulta .= "'" . $usuario . "','" . $ip . "','".$pc."',";
  81.     $consulta .= "'" . $dFechaRegistro . "','" . $dHoraRegistro . "','" . $ban . "')";       
  82.     //echo $consulta."</br>";          
  83.     $sql = mysql_query($consulta);             
  84.    
  85.     if ($sql <= 0)
  86.     {        
  87.          echo MensajeErrorBD();
  88.          echo "</br>";
  89.          echo "Error al tratar de registrar datos de ingreso al sistema"."</br>";          
  90.     }  
  91.      
  92. }
  93.  
  94.      
  95.      
  96.      
  97.      
  98.      
  99.        
  100.       //include("funciones.php");  
  101.       //require_once('librerias/control_sesion.php');    
  102.     //echo'<script type="text/javascript" src="scripts/hijax.js">';
  103.     //session_start();
  104.    
  105.     /* establecer el limitador de caché a 'private' */
  106.     //session_cache_limiter('private');
  107.     //$cache_limiter = session_cache_limiter();
  108.    /* establecer la caducidad de la caché a 30 minutos */
  109.    ///session_cache_expire(30);
  110.    //$cache_expire = session_cache_expire();
  111.    //session_start();        
  112.  
  113.    //Obteniendo el numero de IP de la maquina
  114.     $ip = DevolverIP();
  115.     //Obteniendo el nombre de la maquina
  116.     $pc = gethostbyaddr("$ip");
  117.    
  118.          
  119.     if (isset($_POST['txUsuario']) && isset($_POST['txPassword']))
  120.     {
  121.        
  122.        
  123.         $username = $_POST["txUsuario"];
  124.         $password = $_POST["txPassword"];
  125. //      $password = md5($password);
  126.         mysql_select_db ($database_Conn,$conn);
  127.         $sql = "SELECT * FROM ta_usuarios WHERE c_usuario='$username' AND c_password='$password' AND d_fecha_salida IS NULL";
  128.         $rst = mysql_query($sql,$conn) or die(mysql_error());
  129.         $row = mysql_fetch_array($rst);
  130.         $user1 = $row['c_usuario'];
  131.         $pswd1 = $row['c_password'];
  132.         // revisar si pswd y usuario son correctos...
  133.         if ($_POST['txUsuario'] === $user1 && $_POST['txPassword'] === $pswd1 )//&& $_POST['fecha_fin'] === NULL)
  134.         {
  135.             // establecer la sesion
  136.            
  137.             $_SESSION['andromeda'] = true;         
  138.             //Ingresando datos                 
  139.             //tipo de usuario en var session nivel
  140.             //1-> administrador
  141.             //2-> usuario
  142.             $_SESSION['nivel'] = $row['n_tipo'];
  143.             //nombre completo de usuario
  144.             $_SESSION['usuario'] = $row['c_nombres'];
  145.             $_SESSION['id_usuario'] = $row['n_id'];        
  146.             $_SESSION['administrador'] = $row['n_super_usuario'];          
  147.             $_SESSION['gerencia'] = $row['n_cod_ger']; 
  148.                    
  149.             $_SESSION['rol'] = $row['n_doble_rol'];
  150.             $_SESSION['derivar'] = $row['n_derivar'];
  151.             $_SESSION['ver'] = $row['n_solo_ver'];
  152.             $_SESSION['finalizar'] = $row['n_finalizar'];
  153.             $_SESSION['adicionar_externa'] = $row['n_adicionar_corres_ext'];                       
  154.             $_SESSION['reactivar'] = $row['n_reactivar_correspondencia'];
  155.             $_SESSION['editar_finalizacion'] = $row['n_editar_finalizacion'];
  156.            
  157.             $_SESSION['codigo_sucursal'] = $row['n_cod_suc'];
  158.            
  159.            
  160.            
  161.             //para el nombre de usuario en el sistema tenemos
  162.             //$_SESSION['nick'] = $row['c_usuario'];           
  163.             header('Location: pendientes.php');        
  164.             GuardarIngresoSistema($_POST['txUsuario'],$ip,$pc,'1');        
  165.             exit;
  166.         }
  167.         else         
  168.         {
  169.            
  170.             $errorMessage = 'Error, usuario inhabilitado,usuario y/o contraseña incorrectos ';
  171.             GuardarIngresoSistema($_POST['txUsuario'],$ip,$pc,'0');        
  172.             //echo"$password";
  173.             //. $password;            
  174.             //$errorMessage = 'Error, usuario y/o contraseña incorrectos '.$pswd1;                                                                           
  175.         }
  176.     }
  177. ?>
  178. <html>
  179. <head>
  180. <title>Autentificaci&oacute;n de usuario</title>
  181. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  182. </head>
  183. <body>
  184. <?php
  185. if ($errorMessage != '')
  186. {
  187. ?>
  188. <p align="center"><strong><font color="#FF0000"><?php echo $errorMessage; ?> haga clic <a href="index.html">aqui</a> para intentar nuevamente </font></strong></p>
  189. <?php
  190. }
  191. /*echo'</script>';*/
  192. ?>
  193. </body>
  194. </html>
  #6 (permalink)  
Antiguo 13/01/2014, 11:11
 
Fecha de Ingreso: junio-2009
Ubicación: Bolivia
Mensajes: 96
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problemas con sesion en php?

y para salir el siguiente archivo logout.php
Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.     //verifica si el que ingresa está logueado o no
  4.     if (!isset($_SESSION['andromeda']) || $_SESSION['andromeda'] !== true)
  5.     {
  6.         header('Location: index.html');
  7.         exit;
  8.     }
  9.     header('Location: index.html');
  10. ?>
Al actualizar manualmente se pierden las variables de sesion.
saludos y gracias por tu atencion
  #7 (permalink)  
Antiguo 13/01/2014, 11:14
 
Fecha de Ingreso: junio-2009
Ubicación: Bolivia
Mensajes: 96
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problemas con sesion en php?

Y el control_sesion.php lo cambie por lo siguiente:

Código PHP:
Ver original
  1. <?php
  2.     //control de sesion ...
  3.     //session_destroy();
  4.     session_start();
  5.     if (!isset($_SESSION['andromeda']) || $_SESSION['andromeda'] !== true)
  6.     {
  7.         //session_destroy();
  8.         header('Location: index.html');
  9.         exit;
  10.     }
  11.     //fin control de sesion...
  12. ?>
  #8 (permalink)  
Antiguo 13/01/2014, 12:00
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 10 años, 11 meses
Puntos: 2
Respuesta: Problemas con sesion en php?

Como consejo, aunque no aporte mucho... Siempre ejecuta la función session_start() antes de todo el código. En tu caso antes del include.

Otra cosa, ¿por qué rediriges a una página html? ¿Para que quieres un session_start() si al fin y al cabo vas a redirigir a un html que no tiene php que lo use?
  #9 (permalink)  
Antiguo 13/01/2014, 12:33
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 36
Respuesta: Problemas con sesion en php?

Aun me esta costando entenderte:

1. Quien es: index.html -> infiero que sea tu pagina inicial, donde los usuarios se autentifiquen?

2. Revise todo tu codigo y por ningun lado encuentro el lugar donde $_SESSION['logueado'] obtenga un valor.!?

Tu estas preguntado que: Si $_SESSION['logueado'] esta vacio o es diferente de Verdadero entonces que haga tal cosa.... pero es que en ningun lugar tu variable toma valor...

Revisa esto.
  #10 (permalink)  
Antiguo 13/01/2014, 13:11
 
Fecha de Ingreso: junio-2009
Ubicación: Bolivia
Mensajes: 96
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problemas con sesion en php?

Gracias Alexis...el index.html es donde se loguean los usuarios, la pagina inicial y lo ultimo que publique es el archivo control_sesion.php que utilizo, donde utilizo
$_SESSION['andromeda'], gracias por vuestra ayuda, salu2

Etiquetas: html, mysql, select, sql
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 17:36.