mysql no me responde un query

JORDANMEN

Bovino maduro
#1
estoy aprendiendo a hacer consultas a mysql per nopuedo cuando tiene passord, la consulta es $result = mysql_query("select * from user
where username='$username'
and passwd = password('$passwd')");

al tratar por horas me meti en phpmyadmin he intentarlo de ahi y tampoco, si solo pongo en username si me devuelve pero si lo intento con password no

soy root
cuando hago el query desde phpmyadmin
SELECT * FROM `user` WHERE passwd=password('oooooo')
me devuelve

MySQL ha devuelto un valor vacío (i.e., cero columnas). ( La consulta tardó 0.0011 seg )
SELECT *
FROM `user`
WHERE passwd = password( 'oooooo' )
LIMIT 0 , 30

eso es cuando el passwd esta encriptado con password('')

pero cuando no esta encriptado si me devuelve

el query es

SELECT * FROM `user` WHERE passwd='oooooo'

el resultado es

username passwd
Editar Borrar jordan2 oooooo

debo señalar que tendo variosusuarios con la contraseña oooooo pero no me devuelve ni uno

¿como hago cuando tengo que autentificar a un usuario? ¿no es un fallo de seguridad tener los passwor sin encriptar??

¿como debo hacer?
¿pq como password no?
 
#2
Revisa que los passwords almacenados en la bd estén encriptados con la misma función que utilizas al consultarlos, porque parece que los de la bd no están encriptados ya que cuando consultas sin aplicarle la función password($string) al password sí te devuelve un resultado.

Es decir que tu consulta de inserción de datos debió ser algo parecido a esto:

$usuario = $_GET['usuario']
$password = $_GET['password']

$query = "INSERT INTO usuario(usuario, password) VALUES($usuario, PASSWORD($password))"

También sería bueno que especificaras el usuario en tu consulta, ya que puede ser que dos o más usuarios tengan el mismo password, es poco probable pero puede ocurrir. Por ejemplo, si tienen flojera de pensar en uno y ponen cosas como 123 o abc lo cual es algo común. La consulta que menciono quedaría algo así:

SELECT * FROM usuario WHERE usuario=$usuario AND password=PASSWORD($password)
 

JORDANMEN

Bovino maduro
#3
pondre todos los datos

login.php
Código:
<?
 require_once("book_sc_fns.php");
 do_html_header("Administración");

 display_login_form();

 do_html_footer();
?>
aqui estan la funciones nesesarias

Código:
function login($username, $passwd)
// comprueba el nombre del usuario y el password con la base de datos
// si sí, devuelve verdadero
// si no devueelve falso
{
  // conectar a la base de datos
  $conn = db_connect();
  if (!$conn)
    return 0;

  // comprobar que el nombre de usuario sea único
  $result = mysql_query("select * from admin
                         where username='$username'
                         and password =( '$passwd')");
  if (!$result)
     return 0;

  if (mysql_num_rows($result)>0)
     return 1;
  else
     return 0;
}

function display_login_form()
{
  // dispaly form asking for name and password
?>
  <form method="post" action="admin.php">
  <table bgcolor=#cccccc>
   <tr>
     <td>Nombre Usuario:</td>
     <td><input type=text name=username></td></tr>
   <tr>
     <td>Contraseña:</td>
     <td><input type=password name=passwd></td></tr>
   <tr>
     <td colspan=2 align=center>
     <input type=submit value="Log in"></td></tr>
   <tr>
 </table></form>
<?
}
esto nos lleva a admin.php
Código:
<?
session_start();
// incluye los archivos de función para esta aplicación
require_once("book_sc_fns.php");


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

if ($username && $passwd)
// están intentando hacer logging in
{
    if (login($username, $passwd))
    {
      // si se encuentran en la base de datos registrar la id de usuario
      $admin_user = $username;
       session_register("admin_user");
    }
    else
    {
      // login incorrecto
      do_html_header("Problema:");
      echo "No has podido hacer logged in.
            Debes estar logueado para ver esta página.<br>";
      do_html_url("login.php", "Login");
      do_html_footer();
      exit;
    }
}

do_html_header("Administración");
if (check_admin_user())
  display_admin_menu();
else
  echo "No estás autorizado a entrar en el área de administración.";

do_html_footer();

?>
asi que despues de muchos intentos lo empece a hacer desde phpmyamin y el resultado es esto
Código:
MySQL ha devuelto un valor vacío (i.e., cero columnas). ( La consulta tardó 0.0013 seg )
SELECT  * 
FROM admin
WHERE username =  'jordy'
AND  PASSWORD  = PASSWORD(  'popopo'  ) 
LIMIT 0 , 30
solo tengo 2 usuarios en esa base de datos
uno es admin con pass oooooo y el otro es jordy con clave popopo y losdoa no devuelven valor cuano se hace el query, si en ala columna password lo dejo como texto normal sin encriptar con el valor PASWORD asi si me develve pero la gracia es que cuando se registren proteger esos datos
 

JORDANMEN

Bovino maduro
#4
ya lo resolvi, era la base de datos la tenia con limite de 16 caracteres y a la hora de registrar lo hacia pero mochaba informacion, hora la puse en 60 caracteres y se soluciono
 
Arriba