Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] ¿Qué falla en este sistema de login?

Estas en el tema de ¿Qué falla en este sistema de login? en el foro de PHP en Foros del Web. Código PHP: <?php $conn  =  mysql_connect ( 'localhost' ,  'root' ,  '' )     or die( 'No se pudo conectar: '  .  mysql_error ()); mysql_select_db ( 'educamos' ) or die( 'No se pudo seleccionar la base de datos' ); ?> ...
  #1 (permalink)  
Antiguo 30/07/2015, 15:47
 
Fecha de Ingreso: diciembre-2014
Ubicación: Madrid
Mensajes: 274
Antigüedad: 9 años, 4 meses
Puntos: 5
¿Qué falla en este sistema de login?

Código PHP:
<?php
$conn 
mysql_connect('localhost''root''')
    or die(
'No se pudo conectar: ' mysql_error());
mysql_select_db('educamos') or die('No se pudo seleccionar la base de datos');
?>
<html>
<head>
<link href="css/css.css" rel="stylesheet"/>
</head>
<body>
<h1 align="center" style="color:#2491C9">Plataforma Educamos</h1>
<table width="30%" align="center" border="0">
<form name="form" method="get" action="index.php" enctype="text/plain">
<tr id="tr1-h">
<td align="center"><b>Introduce tus datos a continuación</b></td>
</tr>
<tr id="tr1">
<td align="center" valign="middle"><input type="text" placeholder="Usuario" id="CampoTexto" name="user"/></td>
</tr>
<tr id="tr1">
<td align="center" valign="middle"><input type="password" placeholder="Contraseña" id="CampoTexto" name="clave"/></td>
</tr>
<tr id="tr1">
<td align="center" valign="middle"><input type="submit" id="boton" value="Acceder"></td>
</tr>
</form>
</table>
<?php

if(isset($_GET['enter'])){
    
$user $_GET['user'];
    
$clave $_GET['clave'];

    
$query mysql_query ("SELECT * FROM usuarios WHERE user = '$user' AND clave = '$clave'",$conn);
    
$conta mysql_num_rows($query);

    if(
$conta == '0'){
        echo 
"Mal";
    }else{
        echo 
"Bien";
    }
?>
</body>
</html>
Los echos del final no trabajan. Por cierto, ¿cómo se podría hacer que cuando los datos sean erróneos se muestre un mensaje en otra parte de la página? Gracias
  #2 (permalink)  
Antiguo 30/07/2015, 15:53
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Respuesta: ¿Qué falla en este sistema de login?

El error es este:

Código PHP:
Ver original
  1. if($conta == '0'){

Debería ser

Código PHP:
Ver original
  1. if($conta === 0){
__________________
¿Te sirvió la respuesta? Deja un +1
  #3 (permalink)  
Antiguo 30/07/2015, 16:01
 
Fecha de Ingreso: diciembre-2014
Ubicación: Madrid
Mensajes: 274
Antigüedad: 9 años, 4 meses
Puntos: 5
Respuesta: ¿Qué falla en este sistema de login?

Pues la verdad es que no funciona. Aquí adjunto el SQL.

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `usuarios` (
  2.   `id` INT(3) NOT NULL,
  3.   `nombre` VARCHAR(1000) NOT NULL,
  4.   `user` VARCHAR(255) NOT NULL,
  5.   `clave` VARCHAR(255) NOT NULL
  6. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
  #4 (permalink)  
Antiguo 30/07/2015, 16:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿Qué falla en este sistema de login?

Tu código espera la existencia de una variable $_GET['enter'] pero no existe por ningún lado, no la definiste en el formulario y por ende aunque lo envíes jamás se ejecutará dicho bloque.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 30/07/2015, 18:46
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: ¿Qué falla en este sistema de login?

Y deberias pasar los datos por post o sino cualquiera podrá ver en la url el usuario y la contraseña de la persona que está haciendo el login.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #6 (permalink)  
Antiguo 31/07/2015, 06:12
 
Fecha de Ingreso: diciembre-2014
Ubicación: Madrid
Mensajes: 274
Antigüedad: 9 años, 4 meses
Puntos: 5
Respuesta: ¿Qué falla en este sistema de login?

Gracias. Por cierto, ¿este código funcionaría para lo que quiero?
Código PHP:
Ver original
  1. if(isset($_GET['boton'])){
  2.     $user = $_GET['user'];
  3.     $clave = $_GET['clave'];
  4.         $rol = mysql_query ("SELECT rol FROM usuarios WHERE user = '$user' AND clave = '$clave'",$conn);
  5.     $query = mysql_query ("SELECT * FROM usuarios WHERE user = '$user' AND clave = '$clave'",$conn);
  6.     if (!$query) {
  7. echo 'Usuario no existente'
  8.     }else{
  9.         if ($rol == 'A') {
  10.             header('Location: localhost/educamos/alumno');
  11.         }else{
  12.             header('Location: localhost/educamos/profesor');
  13.         }
  14.     }
Lo que quiero es que el usuario se meta y, si su rol es A, que vaya a alumno y, si no, que será P, que vaya a profesor.
  #7 (permalink)  
Antiguo 31/07/2015, 06:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ¿Qué falla en este sistema de login?

Seré curioso, pero ¿para qué pones la primera, si la segunda obtiene todo?
Estás consultando la misma tabla, con las mismas condiciones, ergo, la segunda obtiene el campo "rol" de neuvo...:
Código PHP:
Ver original
  1. $rol = mysql_query ("SELECT rol FROM usuarios WHERE user = '$user' AND clave = '$clave'",$conn);
  2. $query = mysql_query ("SELECT * FROM usuarios WHERE user = '$user' AND clave = '$clave'",$conn);

Por otro lado, esto:
Código PHP:
Ver original
  1. if (!$query)
Sólo evalúa que la ejecución de esa consulta no haya devuelto un error, no que haya devuelto registros, que no es lo mismo.
Esa validación daría TRUE si la query vuelve vacía...

Código PHP:
Ver original
  1. if ($rol == 'A')
$rol no es un valor, es un result. Eso no te dará el resultado que quieres.

Deberías consultar el manual para ver como se recuperan los valores devueltos en un result. Es un error demasiado básico.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 31/07/2015, 06:38
 
Fecha de Ingreso: diciembre-2014
Ubicación: Madrid
Mensajes: 274
Antigüedad: 9 años, 4 meses
Puntos: 5
Respuesta: ¿Qué falla en este sistema de login?

¿Y cómo podría expresar lo que he comentado antes? Gracias.

Cita:
Lo que quiero es que el usuario se meta y, si su rol es A, que vaya a alumno y, si no, que será P, que vaya a profesor.
  #9 (permalink)  
Antiguo 31/07/2015, 06:51
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 11 meses
Puntos: 261
Respuesta: ¿Qué falla en este sistema de login?

Cita:
Iniciado por diegoguerrero Ver Mensaje
¿Y cómo podría expresar lo que he comentado antes? Gracias.
Cita:
Lo que quiero es que el usuario se meta y, si su rol es A, que vaya a alumno y, si no, que será P, que vaya a profesor.
Por ejemplo con un if...
Código PHP:
if($rol == 'A')
{
    
// ir a alumno
}
elseif(
$rol == 'P')
{
   
// ir a profesor
}
else
{
   
// ir a login

También se pordría hacer con un switch
Código PHP:
switch ($rol) {
    case 
'A':
        
// ir a alumno;
        
break;
    case 
'P':
        
// ir a profesor
        
break;
    default:
        
// ir a login;

Saludos,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #10 (permalink)  
Antiguo 31/07/2015, 06:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ¿Qué falla en este sistema de login?

Pues es medio obvio... Eso lo evalúas a partir de lo que obtienes en esta consulta:
Código MySQL:
Ver original
  1. FROM usuarios
  2. WHERE user = '$user' AND clave = '$clave'

Pero partiendo de la base que los campos que describes:

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `usuarios` (
  2.   `id` INT(3) NOT NULL,
  3.   `nombre` VARCHAR(1000) NOT NULL,
  4.   `user` VARCHAR(255) NOT NULL,
  5.   `clave` VARCHAR(255) NOT NULL

Puede verse que no tienes ningun campo que determine qué rol tiene el usuario.
¿No te parece que te está faltando o un campo o una tabla? Claro, a menos que nos estés escondiendo información de la tabla, caso en el que no podremos ayudarte...

Por lo pronto, lo primero que debes entender es cómo validar si una consulta devuelve registros.
PHP manual: mysql_num_rows()

Además, entender cómo leer los valores del registro obtenidos en la query:
PHP manual: mysql_query()
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 31/07/2015, 11:06
 
Fecha de Ingreso: diciembre-2014
Ubicación: Madrid
Mensajes: 274
Antigüedad: 9 años, 4 meses
Puntos: 5
Utilizar campo de Mysql en PHP

Puede que suene básico, pero me explicaré con un ejemplo.

Quiero mostrar el nombre de un usuario cuando se loguea (por ejemplo Fernández, Carlos). Ese usuario está en el campo name de una tabla de MySQL. Para mostrarlo arriba como 'Identificado como Fernández, Carlos', ¿cómo lo haría? Es decir, quiero ver un campo de un registro de MySQL en PHP.
  #12 (permalink)  
Antiguo 31/07/2015, 11:19
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Utilizar campo de Mysql en PHP

bueno realizas la consulta basado en la sesion y lo muestras, seria algo asi:

consulta:
Código PHP:
Ver original
  1. <?php
  2.  
  3. $ver = $db->query("SELECT * FROM usuarios WHERE usuario = '$_SESSION[user]'");
  4. $row_ver = $ver->fetch_assoc();
  5. //este es solo un ejemeplo
  6. ?>

donde quieras que se vea:
Código PHP:
Ver original
  1. <?php echo $row_ver['nombre']; ?>

claro hay muchas maneras de hacerlo, pero esta seria una de ellas
__________________
[email protected]
HITCEL
  #13 (permalink)  
Antiguo 31/07/2015, 11:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Utilizar campo de Mysql en PHP

Podrías haber continuado la pregunta en el otro tema, y no abrir un hilo para básicamente lo mismo

http://www.forosdelweb.com/f18/que-f...6/#post4731104
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campo, login, mysql, registro, tabla
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 18:14.