Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Registro Exitoso y Login falla a veces - Problema en script php

Estas en el tema de Registro Exitoso y Login falla a veces - Problema en script php en el foro de PHP en Foros del Web. Buenas... como dice el título... cree un sencillo y muy común mecanismo de registro y luego de login, no le puse aún ningún método de ...
  #1 (permalink)  
Antiguo 04/04/2013, 13:31
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Registro Exitoso y Login falla a veces - Problema en script php

Buenas... como dice el título... cree un sencillo y muy común mecanismo de registro y luego de login, no le puse aún ningún método de seguridad, así que no se detengan en ese detalle por favor... el punto es:

A- Registra perfecto, guarda lo datos correctamente.

B- Cuando hago Login, hay ocasiones en los que me dice que el usuario no existe aún y que debo registrarlo, cosa que es mentira, ya que en la base de datos están los datos del usuario y no los reconoce, no se porque Regla de 3..

El error que sale es El nombre de usuario ingresado no esta registrado

Pongo los scripts de registro y de login para ver si estoy haciendo algun fallo conceptual o similar que puedan detecta... acepto sugerencias.

SCRIPT DE REGISTRO
Código PHP:

<?php
session_start
();

include(
"../link/connect.php");
require_once(
"../link/funciones.php");
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registrarse</title>
<link rel="stylesheet" type="text/css" href="../css/style-basic.css">
</head>

<body>


    <div class="liner">&nbsp;</div>
    <div id="container">
    
        <header>
            
            
        
            <div><img src="../img/grupo-editorial-atlas-libros-para-leer.jpg" /></div>
        
        </header>
        
        
        <section>
        
            <div id="login">
            
                <?php 
        
            
if (isset($_SESSION['k_username']) && isset($_SESSION["k_idcliente"])) 
            {
                
                echo 
"<p>Usted ya se ha registrado y logueado</p>";
        
            }
            else
            {
            
        
?>
        
         <h1>Registrarse</h1>
      
                  
               
                  <?php 
                  
function formRegistro(){
                  
?>
                  
                  <div id="caja-registro"> 
                  
                  <p>Por favor complete el siguiente formulario</p>
                  <form action="registro.php" method="post">
                  <table border="0" cellspacing="2" cellpadding="3">
                  
               <tr>
                <td width="196" align="right"><p>Nombres:</p></td>
                <td width="298"><input name="name" type="text" class="campos" size="25" /></span></td>
                
               </tr>
              
               <tr>
                 <td align="right"><p>Apellidos:</p></td>
                 <td><input name="lastname" type="text" class="campos" size="25" /></td>
                 
               </tr>
               
              
               
               <tr>
                 <td align="right"><p>N.&deg; de Documento:</p></td>
                 <td><input name="ci" type="ci" class="campos" size="20" maxlength="10" /></td>
                 
               </tr>
               
              
              <tr align="center">
                <td colspan="2"><input type="submit" class="btnForm" value="Registrar" /></td>
                </tr>
            </table>
           
            
            
                </form>
             
             </div>
            <?php
            
}
            
// verificamos si se han enviado ya las variables necesarias.
            
if (isset($_POST["name"])) {
                
                
$nombre reem($_POST["name"]);
                
$apellido reem($_POST["lastname"]);
                
$ci$_POST["ci"];
                
$email $_POST["email"];
                
                
//creamos el nombre del usuario compuesto por el nombre y el apellido
                
$usuariostrtoupper($nombre." ".$apellido);
                
                
// Hay campos en blanco
                
if($nombre==NULL $apellido==NULL $ci==NULL){
                    echo 
"<div class='wrong'>
                        <img src='../img/wrong.png' width='22' height='22' />
                        <span style='font-size:14px; color:#FFF;'>Debe llenar todos los campos</span>
                        </div>"
;
                    
formRegistro();
                }else{
                    
                        
$checkuser mysql_query("SELECT ci FROM usuarios WHERE ci='$ci'");
                        
$user_exist mysql_num_rows($checkuser);
                        if (
$user_exist>0/*|$username_exist>0*/) {
                            echo 
"<div class='wrong'>
                        <img src='../img/wrong.png' width='22' height='22' />
                        <span style='font-size:14px; color:#FFF;'>Este usuario ya fue registrado</span>
                        </div>"
;
                            
                            
formRegistro();
                            
                            
                        }else{
                    
                        
                            
                    
                        
$query 'INSERT INTO usuarios (id_usuario, usuario, password, nombre, apellido, ci, fecha)
                            VALUES (\''
.$ci.'\',\''.$usuario.'\',\''.$ci.'\',\''.$nombre.'\',\''.$apellido.'\',\''.$ci.'\',\''.date("Y-m-d").'\')';
                           
mysql_query($query) or die(mysql_error());
                           
                           
                           echo 
"<span style='font-size:18px; color:#00CC00;'>GRACIAS POR REGISTRARSE.</span>";
                           echo 
"<p style='font-size:14px; color:#00CC00;'><a href='../index.php'>&raquo;Por Favor, ingrese con su usuario y contraseña. CLICK AQU&Iacute;</a></p>";
                        }
                        
                }
                      
                      
            }else{
                
formRegistro();
            }
            
?>
         
        
        <?php
     
}
?>
            
            
           
            
        
        </div>
        </section>
        
        
        
        
    </div>
        
        
         




</body>
</html>

SCRIPT DE LOGIN
Código PHP:

<?php
include("../link/connect.php");
require_once(
"../link/funciones.php");
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>

<body>

<?php
        
        
if($_POST){
            
            
$name reem(strtoupper($_POST["username"]));
            
            
$clave $_POST["password"];
            
//$fecha= date("d-m-y H:i");
            
            //echo getdate();
            
unset($_POST); //Se destruye el array $_POST
            
            
if($name){
                
                
//EL ERROR CONCEPTUAL O DE SCRIPT TIENE QUE ESTAR POR AQUI
                
$sql_login="SELECT * FROM usuarios WHERE usuario LIKE '".$name."'";    //siempre esta en mayusculas el nombre de usuario    
                
$resultado_login=mysql_query($sql_login$conn)or die("Error query ".mysql_error());
                
$res=mysql_num_rows($resultado_login);
                
                    
                if(
$res == 1){
                    
$fila_usuario=mysql_fetch_array($resultado_login);
                    
                    if(
$fila_usuario['password']== $clave){
                                         
                        
session_start();
                        
$_SESSION["k_username"] = $fila_usuario["nombre"].", ".$fila_usuario["apellido"];
                        
$_SESSION["k_idcliente"] = $fila_usuario["id_usuario"];
                                                
                        
                            echo 
"<p style='font-size:14px; color:#FF0000;'>CORRECTO</p>";                    
                        
//header("Location: ../clients/principal-clients.php");
                        
                                            
                                         
                                     
                    
}else{
                                               
                        echo 
"<p style='font-size:14px; color:#FF0000;'>El password no es valido!!</p>";
                                                         
                        
            
                        }
//fin verificacion de correcto logueo a traves del password
                         

                         
                    
                     
                    
                
}else{
                    echo 
"<p>El nombre de usuario ingresado no esta registrado</p>";
                    
                }
                
                
            
            }else{
                echo 
"<p>Ingrese un nombre de usuario</p>";
            }
            
            
            
        }else{
            
            
header("Location: ../index.php");
        }
        
        
?>

</body>
</html>
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #2 (permalink)  
Antiguo 04/04/2013, 13:42
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Registro Exitoso y Login falla a veces - Problema en script php

mmm, lo único que se me ocurre es que existan 2 usuarios con el mismo nombre de usuario en la base de datos, porque solo validas si no existe la misma ci, lo mejor es usar un UNIQUE index en la DB
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 04/04/2013, 13:49
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Registro Exitoso y Login falla a veces - Problema en script php

Imprimir la consulta (con echo) y ejecutarla en PhpMyAdmin suele ser muy útil para encontrar errores.
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 04/04/2013, 14:00
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Registro Exitoso y Login falla a veces - Problema en script php

Es que es ese el problema, y lo que me dicen tiene lógica... pero en ocasiones hago un registro de empleados interno de prueba, porque es para una intranet, y hay algunos que me reconoce sin problemas, y otros que no... incluso haciendo copy paste desde los datos insertados en la BD... y no se si es un error conceptual de la validación.

Voy a mirar como hacer lo del UNIQUE ya que se supone que un Numero de Documento de Identidad es irrepetible...

El error en sí no me salta del MYSQL es decir, no pasa por una cuestion de sintaxis propiamente según veo, sino de que lo que escribo en un campo no lo interpreta así al hacer la consulta.. pero no está demás hacer esas pruebas Triby...

Una cosa tan simple que me desconcierta... OMG... mientras resuelvo esto, voy a consultar como hacer sobre los UNIQUE y los PRIMARY KEY ya que el id_usuario es Primary y debería ser UNIQUE o no... ese tipo de dudas al foro de MYSQL...
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #5 (permalink)  
Antiguo 04/04/2013, 14:04
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Registro Exitoso y Login falla a veces - Problema en script php

No se si sera este error lo que lo produzca

estas declarando session_start en el script de login despues de imprimir codigo html .
  #6 (permalink)  
Antiguo 04/04/2013, 14:20
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Registro Exitoso y Login falla a veces - Problema en script php

Cita:
Iniciado por webankenovi Ver Mensaje
No se si sera este error lo que lo produzca

estas declarando session_start en el script de login despues de imprimir codigo html .
muy importante también, yo suelo dejar esa funcion en la primera línea, o en el archivo de conexiones.

@loncho_rojas recuerda que el PK siempre es Unique , en cuanto al nombre de usuario no se si deberías tenerlo como Uniqu, pero puede que 2 empleados se llamen juan, y que se registren con el mismo nombre de usuario, así evitas eso.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #7 (permalink)  
Antiguo 04/04/2013, 14:30
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Registro Exitoso y Login falla a veces - Problema en script php

Ya descubrí el triste error

Es muy noob pero bue, lo que puede llegar a hacer el mal uso..

Pasa que en el registro tengo 4 campos que llenar... Nombre, Apellido, CI e Email en el formulario...

Por lo general en el nombre la gente escribe cronológiamente así:

NOMBRE:JUAN DEL PUEBLO
APELLIDO:

epa!! abajo tenía un campo llamado apellido, y bueno, no voy a escribirlo de nuevo, voy a hacer copy paste

y quedaría así

NOMBRE: JUAN-->[espacio en blanco que no copie]
APELLIDO:DEL PUEBLO

Por ende el nombre se graba con ese espacio de más a veces, y al intentar cocatenar
Código PHP:
//creamos el nombre del usuario compuesto por el nombre y el apellido 
$usuariostrtoupper($nombre." ".$apellido); 
luego en vez de:
JUAN[espacio]DEL[espacio]PUEBLO

...queda:
JUAN[espacio][espacio]DEL[espacio]PUEBLO

con 2 espacios.. es simple, pero jodido... como pudiera eliminar ese error en mi script segun sus puntos de vista?...

Asi está correcto o no?

Código PHP:
$nombre reem(trim($_POST["name"])); 
$apellido reem(trim($_POST["lastname"])); 
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...

Última edición por loncho_rojas; 04/04/2013 a las 14:39
  #8 (permalink)  
Antiguo 04/04/2013, 14:45
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Registro Exitoso y Login falla a veces - Problema en script php

con trim suele bastar, no se que hace esa función reem

sé que pediste que no te indicaran asuntos de seguridad, pero ten en cuenta que filtrar sql inyetion también podrá evitarte dolores de cabeza futuros, como nombres: Joao Da'silva (con ése apostrofe ), ese nombre si me jodío hace años
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #9 (permalink)  
Antiguo 04/04/2013, 14:52
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Registro Exitoso y Login falla a veces - Problema en script php

La funcion REEM() lo que haces es convertir acentos y ciertos caracteres especiales en su alias HTML como por ejemplo á=&aacute; | ü=&uuml; y así... lo de inyecciones es mi proximo paso, solo que en la parte básica ya me daba errores así que no le agregué aún nada por eso...

Muchas gracias, a veces hablando de esto se encuentran esos pequeños e invisibles errores que tanto dolor de cabeza dan.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...

Etiquetas: falla, formulario, html, login, mysql, registro, select, sql, usuarios, variables
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 01:10.