Nueva pregunta

Pregunta:

Fecha: 29-11-2017 14:07:09 (En Español)

Hola, buenas tardes, necesito saber como hacer para que con el siguiente codigo pueda loguearme con el email y no con el username[No resuelta]

<?php
ob_start();
session_start();
require('config/index.php');


if(isset($_SESSION['username'])):
    header('Location: mp.php');
	
else:
    
	if(isset($_POST['login'])):
        
		if(empty($_POST['username']) || empty($_POST['password'])):
            echo 'Hay datos en blanco';
        elseif(strlen($_POST['username']) > 30):
            echo 'El usuario no puede tener mas de 30 caracteres';
        
		else:
		
            $login = mysqli_query($connection, "SELECT * FROM username WHERE username = '".mysqli_real_escape_string($connection, $_POST['username'])."' AND password = '".mysqli_real_escape_string($connection, hash('ripemd160', $_POST['password']))."'");
            if($login1 = mysqli_fetch_assoc($login)):
			
			
                $_SESSION['username'] = $_POST['username'];
				$_SESSION['tipousu'] = $login1['tipousu'];
                header('Location: mp.php');
                echo 'Datos correctos';
            else:
                echo 'Datos incorrectos';
            endif;
        endif;
    endif;
endif;
?>
<form action="" method="post">
    <input name="username" type="text" placeholder="Introduce tu usuario"><br>
    <input name="password" type="password" placeholder="Introduce tu contraseña"><br>
    <input name="login" type="submit" value="Iniciar Session">
</form>

<a href="registro.php">Registrate</a>
Etiquetas: MySQL - PHP Votos: 0 - Respuestas: 15 - Vistas: 7 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 30-11-2017 11:15:52 Hola Omar,
    Por favor utiliza el BBCode apropiado para formatear el código que compartes.
    Realmente nos ayuda para que podamos ayudarte.

    Así a primer vista no necesitarías hacer nada pues tu tabla bien podría almacenar una dirección de correo en el campo username.

    Tienes algún caso de uso específico?
      Votos: 0 - Link respuesta
     
  • Fecha: 30-11-2017 16:38:03 Hola Ernesto gracias por responder, ahi agregue el BBCode asi se ve mejor, el tema es que la web ya esta tan grande, con mas de 70 archivos PHP donde esta inmensamente inundado de variables email y username, por eso pense que con solo cambiar la parte de logueo seria lo mas correcto y la menor perdida de tiempo en ese sentido, espero puedas ayudarme con ello, gracias   Votos: 0 - Link respuesta
     
  • Fecha: 02-12-2017 19:46:34 Deja ver la consulta mysql. No la puedo ver completa.   Votos: 0 - Link respuesta
     
  • Fecha: 03-12-2017 04:12:08
    $login = mysqli_query($connection, "SELECT * FROM username WHERE username = '".mysqli_real_escape_string($connection, $_POST['username'])."' AND password = '".mysqli_real_escape_string($connection, hash('ripemd160', $_POST['password']))."'");
      Votos: 0 - Link respuesta
     
  • Fecha: 03-12-2017 04:14:04 Andrei debes clickear dentro del recuadro arriba a la derecha la palabra "text" y te lo abre completo y asi vas a poder ver la consulta completa, Aguardo tu ayuda, Gracias

    $login = mysqli_query($connection, "SELECT * FROM username WHERE username = '".mysqli_real_escape_string($connection, $_POST['username'])."' AND password = '".mysqli_real_escape_string($connection, hash('ripemd160', $_POST['password']))."'");
      Votos: 0 - Link respuesta
     
  • Fecha: 03-12-2017 09:40:48 Primero: ¿Cuales son los campos de la tabla username?, por que si tienes un campo email solo es de cambiar la consulta

    Segundo: Como dijo Ernesto todo esta bien, puedes usar el campo de usuario como email
    Tercero: Podrías también agregar mas validaciones a tu script, filter var, seguridad etc..
    if (filter_var('user@correo.com', FILTER_VALIDATE_EMAIL)) { 
        echo 'VALIDO'; 
    } else {
        echo 'NO VALIDO';
    }
      Votos: 0 - Link respuesta
     
  • Fecha: 03-12-2017 10:47:30 Amigo te respondo sobre tus consultas
    ¿Cuales son los campos de la tabla username? = id, email, username, password y la tabla se llama username
    por que si tienes un campo email solo es de cambiar la consulta
    puedes usar el campo de usuario como email = lo hice y me da error = Notice: Undefined index: email in C:\wamp\www\combobox1\mensajeria\index.php on line 21

    cambie la consulta como me dijiste: de username a email= "SELECT * FROM username WHERE email = '".mysqli_real_escape_string($connection, $_POST['email'])."' AND password = '".mysqli_real_escape_string($connection, hash('ripemd160', $_POST['password']))."'"
      Votos: 0 - Link respuesta
     
  • Fecha: 04-12-2017 10:41:27 Para cambiar la consulta, se necesita tener un campo en tu tabla que se llame email. Puedes añadirla en tu base de datos. Ayudaria si pones tu codigo html tambien.   Votos: 0 - Link respuesta
     
  • Fecha: 04-12-2017 13:17:18 Amigo, como andas, ahí en la primera pregunta esta al final la parte HTML y en la tabla username si existe el campo email   Votos: 0 - Link respuesta
     
  • Fecha: 04-12-2017 15:07:42 En tu html tienes k cambiar el atributo name="username" a name="email"
    Tu consulta va ser asi: "SELECT * FROM username WHERE email = '".mysqli_real_escape_string($connection, $_POST['email'])."' AND password = '".mysqli_real_escape_string($connection, hash('ripemd160', $_POST['password']))."'"
      Votos: 0 - Link respuesta
     
  • Fecha: 04-12-2017 15:11:20 En tu placeholder puedes cambiarlo a algo asi: placeholder="Introduce tu Email" Espero te ayude ese codigo. Adelante hermano.   Votos: 0 - Link respuesta
     
  • Fecha: 05-12-2017 12:17:31 Hola amigo, gracias por responder, hice todo lo que me dijiste, cambie la consulta y cambie el html y me sale un error: Hay datos en blanco, eso me dice, debe haber algún problema con la validación de mas arriba, me das una mano?   Votos: 0 - Link respuesta
     
  • Fecha: 06-12-2017 11:23:24 Claro que si amigo. En tu codigo php cambia todos los $_POST["username"] por $_POST["email"]
    Eso debe soluccionar el error de la validacion.
      Votos: 0 - Link respuesta
     
  • Fecha: 06-12-2017 14:09:20 Amigo hice todo lo que me dijiste te adjunto el codigo para que lo veas con el cambio, y ahora no ingresa, no da ningun error pero no ingresa.
    <?php
    ob_start();
    session_start();
    require('config/index.php');
    
    
    if(isset($_SESSION['email'])):
        header('Location: mp.php');
    	
    else:
        
    	if(isset($_POST['login'])):
            
    		if(empty($_POST['email']) || empty($_POST['password'])):
                echo 'Hay datos en blanco';
            elseif(strlen($_POST['email']) > 30):
                echo 'El usuario no puede tener mas de 30 caracteres';
            
    		else:
    		
                $login = mysqli_query($connection, "SELECT * FROM username WHERE email = '".mysqli_real_escape_string($connection, $_POST['email'])."' AND password = '".mysqli_real_escape_string($connection, hash('ripemd160', $_POST['password']))."'");
                if($login1 = mysqli_fetch_assoc($login)):
    			
    			
                    $_SESSION['username'] = $_POST['username'];
    				$_SESSION['tipousu'] = $login1['tipousu'];
                    header('Location: mp.php');
                    echo 'Datos correctos';
                else:
                    echo 'Datos incorrectos';
                endif;
            endif;
        endif;
    endif;
    ?>
    <form action="" method="post">
        <input name="email" type="text" placeholder="Introduce tu usuario"><br>
        <input name="password" type="password" placeholder="Introduce tu contraseña"><br>
        <input name="login" type="submit" value="Iniciar Session">
    </form>
    
    <a href="registro.php">Registrate</a>
      Votos: 0 - Link respuesta
     
  • Fecha: 06-12-2017 15:16:02 La linea 25 debe ser asi: $_SESSION["email"] = $_POST["email"];   Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com