El formulario de inicio de sesión no tomará información de inicio de sesión

Tengo una base de datos configurada con correo electrónico y contraseña, estoy tratando de usar el código a continuación para verificar el nombre de usuario (correo electrónico) y la contraseña para asegurarme de que sean correctos y, si lo son, enviarlos a / cms si no lo hacen. coincidencia, aparece un cuadro emergente. Sólo estoy recibiendo emergente para trabajar. ¿Puedes ver algún problema que podría estar causando eso?

session_start();

require_once("../mydbpassword.php");
if($_POST['username']) {

$username = $_POST['username'];
$password = $_POST['password'];

$sql = "SELECT * FROM agents WHERE email = '$username' AND pword = '$password'";
$result = mysqli_query($mysqli,$sql);

$email = $row['email'];
$pword = $row['pword'];

if(($username != $email) || ($password != $pword)) {
echo'<script type="text/javascript">
    window.alert("Your login information is wrong, try again!");
    window.location="/cms/login"
    </script>';
}
else {
$row = mysqli_fetch_assoc($result);
$_SESSION['admin'] = $row['$email'];
header("Location: /cmsS");
exit();

}
  }

preguntado el 01 de julio de 12 a las 00:07

Donde piensas $email y $pword ¿están definidos? Soy un Josh diferente, por cierto. :) -

@Josh - ver editar, ¿es eso lo que quieres decir? -

Cambiar if($_POST['username']) {a if(isset($_POST['username'])) { -

Guarda tus contraseñas segura. -

2 Respuestas

La variable podría estar configurada pero vacía.

if($_POST['username'])

by

if (!empty($_POST['username']))

Evite las inyecciones de MySQL, obtenga solo la contraseña.

$sql = "SELECT * FROM agents WHERE email = '$username' AND pword = '$password'";

by

$sql = 'SELECT password FROM agents WHERE email = "'.mysql_real_escape_string($username).'"';

Asociación adecuada de cadenas de MySQL

$result = mysqli_query($mysqli,$sql);

by

$result = mysqli_fetch_assoc(mysqli_query($mysqli,$sql));

Y un cheque que realmente tiene sentido

if ($password != $pword || empty($pword)) {
    echo'<script type="text/javascript">
    window.alert("Your login information is wrong, try again!");
    window.location="/cms/login"
    </script>';
}

Respondido 01 Jul 12, 01:07

Reemplacé todo aquí y sigo teniendo el mismo problema... cuando inicio sesión con el nombre de usuario y la contraseña correctos, sigo recibiendo la alerta de ventana que me dice que mi usuario/contraseña es incorrecto... - Josh

Al menos es un paso adelante. Quizás alguien más tenga una solución. - usuario1454661

Cambiar

$result = mysqli_query($mysqli,$sql);

A

$result = mysqli_fetch_assoc(mysqli_query($mysqli,$sql));

Además, tienes muchas cosas que necesitan ser reparadas. Como contraseñas hash, consultas seguras, un mejor sistema de redirección/error (js podría desactivarse o piratearse/cambiarse fácilmente).

Respondido 01 Jul 12, 00:07

Gracias. ¡Sigo recibiendo un error a pesar de que el usuario y la contraseña son correctos! ¿Sabes por qué? - Josh

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.