Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Fallo en login

Estas en el tema de Fallo en login en el foro de PHP en Foros del Web. Hola, espero que me podais ayudar, ya no se que hacer... Hace un par de años hice una web con php y mysql con administrador ...
  #1 (permalink)  
Antiguo 19/04/2013, 10:42
Avatar de jorjo  
Fecha de Ingreso: abril-2007
Ubicación: España
Mensajes: 90
Antigüedad: 17 años
Puntos: 1
Exclamación Fallo en login

Hola, espero que me podais ayudar, ya no se que hacer...

Hace un par de años hice una web con php y mysql con administrador para el cliente.

Desde hace un mes, más o menos, el cliente me dijo que no podía entrar en el admin, toda la web va perfecta y el contenido de la base de datos se visualiza sin problemas.

El tema es que no puedo acceder con su usuario, he creado uno para mi directamente con phpMyAdmin y tampoco... ya no se que hacer, el código está bien y antes funcionaba a la perfección...

Cualquier ayuda será bienvenida.

Un saludo y gracias
  #2 (permalink)  
Antiguo 19/04/2013, 10:54
Avatar de ylellan  
Fecha de Ingreso: mayo-2010
Ubicación: en un lugar de Veracruz
Mensajes: 432
Antigüedad: 13 años, 10 meses
Puntos: 36
Respuesta: Fallo en login

podrias postaer un poco de codigo para ver como ayudar o que esta pasando
  #3 (permalink)  
Antiguo 19/04/2013, 11:17
Avatar de jorjo  
Fecha de Ingreso: abril-2007
Ubicación: España
Mensajes: 90
Antigüedad: 17 años
Puntos: 1
Respuesta: Fallo en login

Aquí va:

index.php
Código PHP:
<?PHP
include("funciones.php");
include(
"datos_bd.php");
include(
"usuarios.php");
include(
"utilidades.php");
include(
"ocasion.php");
include(
"novedades.php");
include(
"variables.php");
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">

<head profile="http://gmpg.org/xfn/11">
    <title>Administrador;</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link rel="shortcut icon" href="../web/favicon.ico">
    <link rel="stylesheet" type="text/css" href="../style.css" />

<script src="maxheight.js" type="text/javascript"></script>
    
    <script type="text/javascript" src="DD_belatedPNG.js"></script>
    <script type="text/javascript">
        DD_belatedPNG.fix('.main');
</script>
    
</head>
                        
<body onload="new ElementMaxHeight();">
<?php
$row 
ValidaSesiones($opcion$usuario$password$login);
$validat $row["validat"];
$error $row["error"];
?>
    <div class="main">
        <!--header-->
        <div id="header">
            <div class="container">

                <div class="menu">
                    <p><h2>Administrador</h1></p>
                </div>
                
            </div>
        </div>
        <!--header end-->
        <!--content -->
        <div class="content"><div class="side-bar-left maxheight">
    <div class="ind">
    
                        
        <div class="widget" id="login">

            <div style="margin: 5px 5px 5px 15px;">
                <?php TraerMenu($validat$error); ?>
            </div>

        </div>
          
            
    </div>
</div>
<div class="column-center maxheight">
    <div class="indent-center" style="background-color:#FFF">
        <div class="post" id="post-21">
            <div id="content-wrapper">

<!--/////////CONTENIDO/////////-->
            <div style="margin: 5px 5px 5px 5px; height:100%; background-color:#FFF">
                <?php TraerContenido($validat); ?>
            </div>
<!--/////////CONTENIDO/////////-->

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

    <!--content end-->
    <div id="footer">

    </div>
         <!--footer-->
    </div>

</body>
</html>
funciones.php
Código PHP:
<?php
// VALIDA LA SESIÓN
function ValidaSesiones($opcion$usuario$password$login){
    
$validat "no";
    
$error "";
    if (empty(
$_SESSION['usuario'])){
        if (empty(
$login)){
            
$validat "no";
        }elseif (
$login == Entrar){
            
$usu = new Usuarios();
            
$row $usu->Validar($usuario);

            if(!empty(
$row['usuario'])){
                if((
$usuario==$row['usuario'])&&($password==$row['password'])){
                    
$validat "si";
                    
$_SESSION['usuario']=$row['usuario'];
                    
$_SESSION['password']=$row['password'];
                }elseif((
$usuario==$row['usuario'])&&($password<>$row['password'])){
                    
$validat "no";
                    
//Iniciamos la sesión...
                    
session_start();
                    
//Vaciamos la sesión...
                    
$_SESSION=array();
                    
//Destruimos las sesión...
                    
session_destroy();
                    
$error "Datos incorrectos";
                }
            }elseif(empty(
$row['usuario'])){
                
$validat "no";
                
//Iniciamos la sesión...
                
session_start();
                
//Vaciamos la sesión...
                
$_SESSION=array();
                
//Destruimos la sesión...
                
session_destroy();
                
$error "Datos incorrectos";
            }
        }
    }else{
        if (
$opcion=="logout"){
            
//Iniciamos la sesión...
            
session_start();
            
//Vaciamos la sesión...
            
$_SESSION=array();
            
//Destruimos la sesión...
            
session_destroy();
            
$validat "no";
        }else{
            
$validat "si";
        }
    }

    
//Devolvemos los datos...
    
$row["validat"] = $validat;
    
$row["error"] = $error;
    return 
$row;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////// TRAER MENU ///////////////////////////////////////////////////////////
function TraerMenu($validat$error){ ?>
<?php 
if ($validat == "no"){ ?>
    <table width="100%"  height="300px">    
        <tr>
            <td style="vertical-align:top"><br/><br/><br/>
                <table>
                    <?php if (!empty($error) || $error <> ""){ ?>
                    <tr><td colspan="4"><div style="color:#FF0000"><?php echo $error?></div></td></tr>
                    <?php ?>
                    <form name="login" method="post" action="index.php">
                    <tr><td>&nbsp;</td><td style="text-align:right">Usuario:</td><td>&nbsp;</td><td><input type="text" name="usuario" value="" size="15" maxlength="15"></td></tr>
                    <tr><td>&nbsp;</td><td style="text-align:right">Contrase&ntilde;a:</td><td>&nbsp;</td><td><input type="password" name="password" value="" size="15" maxlength="15"></td></tr>
                    <tr><td>&nbsp;</td><td></td><td></td><td style="text-align:right"><input type="submit" name="login" value="Entrar"></td></tr>
                    </form>
                </table>
            </td>
        </tr>
    </table>    
<?php }elseif ($validat == "si"){ ?>
    <table width="100%">
Parece ser un error del formulario... como si no enviase nada
  #4 (permalink)  
Antiguo 19/04/2013, 11:25
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Fallo en login

Y de donde sacas las variables para llenar la función ValidaSesiones(), por ningún lado se ve donde recoges dichas variables?
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 20/04/2013, 02:57
Avatar de jorjo  
Fecha de Ingreso: abril-2007
Ubicación: España
Mensajes: 90
Antigüedad: 17 años
Puntos: 1
Respuesta: Fallo en login

Cita:
Iniciado por Nemutagk Ver Mensaje
Y de donde sacas las variables para llenar la función ValidaSesiones(), por ningún lado se ve donde recoges dichas variables?
Se recogen del formulario en la función TraerMenu() de funciones.php, con lo que si están vacías no hace nada, pero en teoria cuando envías el formulario están todas llenas menos $opcion.

Un saludo
  #6 (permalink)  
Antiguo 20/04/2013, 06:59
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Fallo en login

Pues en el código que muestras no se ve por ningún lado $_POST o de perdida $_REQUEST, ni en el primer código ni en la función TraerMenu(), aparte, en el primer código tienes lo siguiente:
Código PHP:
Ver original
  1. $row = ValidaSesiones($opcion, $usuario, $password, $login);

De donde sale $opciones, $usuario, $password y $login? por ningún lado se ve, así no se te puede ayudar, porque solo andamos adivinando de donde bienen las variables, al menos eso espero y que no estes programando bajo registre_globals en ON...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 20/04/2013, 08:24
Avatar de jorjo  
Fecha de Ingreso: abril-2007
Ubicación: España
Mensajes: 90
Antigüedad: 17 años
Puntos: 1
Respuesta: Fallo en login

No se si te entiendo o no, en el código de funciones.php, si haces scroll abajo, sale la función TraerMenu() con el formulario y ahí están y se envían con el submit y method="post" las variables que tu me dices que no ves de donde salen

Un saludo
  #8 (permalink)  
Antiguo 20/04/2013, 11:40
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Fallo en login

Una cosa es como se envían las variables y otra como las recoges, en ningún momento se ve que hagas un $_POST['usuario'] o $_POST['password'], solo se ve una variable $usuario y $password pero nunca se ve como les asignas los valores a eso me refiero....
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #9 (permalink)  
Antiguo 20/04/2013, 12:31
Avatar de jorjo  
Fecha de Ingreso: abril-2007
Ubicación: España
Mensajes: 90
Antigüedad: 17 años
Puntos: 1
Respuesta: Fallo en login

Bueno, así ya funciona:

Código PHP:
<?PHP
include("funciones.php");
include(
"datos_bd.php");
include(
"usuarios.php");
include(
"utilidades.php");
include(
"ocasion.php");
include(
"novedades.php");
include(
"variables.php");
$usuario $_POST['usuario'];
$password $_POST['password'];
$login $_POST['login'];
$opcion $_POST['opcion'];
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Me parece raro que antes funcionara sin y ahora si, pero la cuestión es que ya va bien.

Muchas gracias Nemutagk!!
  #10 (permalink)  
Antiguo 20/04/2013, 12:35
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Fallo en login

Eso es porque programas bajo la configuración de registre_globals en ON, el cual es completamente DESACONSEJADO, de hecho, hoy en dia puede decirse que es irresponsable, ya que cualquier variable enviada ya sea por cookie, get o post se convierte automaticamente en variable, cuando se programa teniendo dicha configuración en ON se debe inicializar todas las variables vacías para evitar cualquier tipo de ataque al sistema, de hecho es pésima idea programar así ya que la mayoría de los servidores ya tiene como OFF dicha configuración y como te toco a ti, el sistema deja de funcionar...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #11 (permalink)  
Antiguo 22/04/2013, 09:56
Avatar de jorjo  
Fecha de Ingreso: abril-2007
Ubicación: España
Mensajes: 90
Antigüedad: 17 años
Puntos: 1
Respuesta: Fallo en login

Sin duda hay que actualizar y renovarse

Gracias otra vez!

Etiquetas: mysql
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 15:05.