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>
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
