Ver Mensaje Individual
  #9 (permalink)  
Antiguo 13/05/2016, 03:57
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: Login solo me permite acceso con el último usuario de mi base de datos.

Bueno, si en lugar de reemplazar lo que tenías en el primer post con lo que te propusieron, es comprensible. Tu código inicial tiene un error de lógica. Y de los evidentes.

Vamos a ver si se entiende...

Primero: No basta con que copies la consulta, si luego pretendes buscar los mismos campos en el resultado, los cuales en realidad no existen más. La query ahora sólo verifica si usuario y PWD ya están registrados, porque NO NECESITA hacer otras comparaciones con ellos.
¿Se entiende?
SI los encuentra, eso es suficiente, ya que la comparación la hace en la BASE.

Luego, lo que debes hacer es simplemente ver si los encontró... nada más, y eso sucederá cuando la cantidad que cuente la query sea igual a UNO (1).

Ergo, NO NECESITAS recorrer un array (que fue tu primer error desde el principio), sino recuperar el UNICO REGISTRO que la nueva query devuelve.

Basicamente, hacer algo como:
Código PHP:
Ver original
  1. <?php
  2.  
  3. include 'conexion_educamadrid.php';
  4. $usuariook = $_POST['autor'];
  5. $passok = $_POST['password'];
  6. $consulta = $conexion->query("SELECT count(*) existe FROM autores WHERE autor ='$usuariook' and password ='$passok'")
  7.         or die("Ha fallado la conexion");
  8. $registro = $consulta->fetch_assoc();
  9. $usuariook = $registro['existe'];
  10.  
  11. if ($existe == 1) {
  12.     session_start();
  13.     $_SESSION["verificado"] = "si";
  14.     header("Location: menuadmin.php");
  15. } else {
  16.     header("Location: accesoadmin.php?error=si");
  17. }
  18. ?>

Tu error inicial fue siempre que RECORRÍAS el resultado de TODOS los usuarios registrados sin hacer nada con ellos y quedando el puntero en el ultimo registro, con lo que el último valor que se tomaba era el último registro encontrado. Luego pretendías validar ESOS valores contra el que se estaba logueando... en lugar de validar los valores ingresados en los que YA existían en la base.
Tu código sólo podría funcionar si el usuario que se loguease fuese EXCLUSIVAMENTE el último registrado, y NUNCA otro.
Sencillamente no estabas analizando el código que escribiste.

No porque un código no tenga errores de sintaxis significa que está bien escrito. Además debe cumplir con la lógica que se desea construir. Y eso no estaba sucediendo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 13/05/2016 a las 05:21