¡Advertencia!
Este tema no ha tenido respuestas en más de un mes. Recuerda que si deseas añadir una nueva debes cumplir con las normas de la web.
Estoy intento hacer un inicio de página donde solo trabaja con un Login (por ahora, después pienso hacer el registro). Tengo solo un usuario que cree en la Base de Datos y con ese intento ingresar. El problema esta en que tengo unos problemas en las líneas de código, me especifica dónde está el error, pero no reconozco exactamente cuál es el error.

Los errores que me da son estos:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: YES) in C:AppServwwwPaginaWeblogin.php on line 7


Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in C:AppServwwwPaginaWeblogin.php on line 8


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:AppServwwwPaginaWeblogin.php on line 14
Usuario o contraseña incorrectos

Este es el código que verifica si el usuario existe (este es el codigo del error):

https://gist.github.com/ElChulon/0bcc1d3949791c2b4381666f5288deed

Por las moscas, aquí dice si el usuario existe o no:

https://gist.github.com/ElChulon/e0a65005c2c06e824c706b07e01ea5d4

Por si sirve de ayuda, el inicio de la página web:

https://gist.github.com/ElChulon/b1178a473443537864782c191545799e

Espero no haber sido pesado, saludos.
Para empezar, el error lo tienes directamente en la conexión.

Archivo: https://gist.github.com/ElChulon/0bcc1d3949791c2b4381666f5288deed

7- $conexion = mysql_connect("localhost", "root", "root");


El primer warning que te da significa que no se ha podido realizar la conexión. Por ende, si la conexión falla, posteriormente también te fallará la selección de base de datos y la ejecucicón de la query.

Solución: Revisa que los datos de conexión son correctos y que tienes el servicio de MySQL arrancado.




Por otra parte, si tu web va a ser una web pública, te recomiendo que no hagas esto:

$usuario = $_POST["n_usuario"];
$password = $_POST["pwd"];
$sql = "SELECT id_usuario FROM usuario WHERE nombre_usuario = '$usuario' AND contrasenna = '$password'";
$comprobar = mysql_query($sql);


¿Qué está mal? Pues si te fjas, recoges los valores del formulario "n_usuario" y "pwd", los concatenas con la query y los ejecutas. Tal y como está ahora, cualquier persona podria hacerte una inyección SQL.

¿En qué consiste esa inyección?
Consiste, de forma bruta explicada, en que en tu formulario ponen caracteres especiales para romperte tu query. Por ejemplo, si yo en "username" escribo: ' UNION SELECT * FROM usuario; , tu query, al procesarlo, quedaría asi: SELECT id_usuario FROM usuario WHERE nombre_usuario = '' UNION SELECT * FROM usuario;.

Aunque no es la forma más correcta de explicarlo, si te fijas, podrían editar tu query y provocar errores o robarte datos.

Solución: Filtra siempre cualquier variable externa que acabe llegando a la base de datos (formularios, etc).




Y para finalizar finalizar finalizar. Si tu web va a ser pública, no uses MySQL y usa MySQLi, MySQL se va a declarar (si no lo está ya) como obsoleta. MySQLi es más rápida, segura y funcional. Además no es tan dificil de usar, en la mayoría de los casos te bastará con cambiar las sentencias que empiecen por mysal (mysql_connect, mysql_select_db, mysql_query) por "mysqli".

Manual: http://php.net/manual/es/book.mysqli.php

Habbo Old. Buenos momentos aquellos de cacería...

Para empezar, el error lo tienes directamente en la conexión.

Archivo: https://gist.github.com/ElChulon/0bcc1d3949791c2b4381666f5288deed

7- $conexion = mysql_connect("localhost", "root", "root");


El primer warning que te da significa que no se ha podido realizar la conexión. Por ende, si la conexión falla, posteriormente también te fallará la selección de base de datos y la ejecucicón de la query.

Solución: Revisa que los datos de conexión son correctos y que tienes el servicio de MySQL arrancado.




Por otra parte, si tu web va a ser una web pública, te recomiendo que no hagas esto:

$usuario = $_POST["n_usuario"];
$password = $_POST["pwd"];
$sql = "SELECT id_usuario FROM usuario WHERE nombre_usuario = '$usuario' AND contrasenna = '$password'";
$comprobar = mysql_query($sql);


¿Qué está mal? Pues si te fjas, recoges los valores del formulario "n_usuario" y "pwd", los concatenas con la query y los ejecutas. Tal y como está ahora, cualquier persona podria hacerte una inyección SQL.

¿En qué consiste esa inyección?
Consiste, de forma bruta explicada, en que en tu formulario ponen caracteres especiales para romperte tu query. Por ejemplo, si yo en "username" escribo: ' UNION SELECT * FROM usuario; , tu query, al procesarlo, quedaría asi: SELECT id_usuario FROM usuario WHERE nombre_usuario = '' UNION SELECT * FROM usuario;.

Aunque no es la forma más correcta de explicarlo, si te fijas, podrían editar tu query y provocar errores o robarte datos.

Solución: Filtra siempre cualquier variable externa que acabe llegando a la base de datos (formularios, etc).




Y para finalizar finalizar finalizar. Si tu web va a ser pública, no uses MySQL y usa MySQLi, MySQL se va a declarar (si no lo está ya) como obsoleta. MySQLi es más rápida, segura y funcional. Además no es tan dificil de usar, en la mayoría de los casos te bastará con cambiar las sentencias que empiecen por mysal (mysql_connect, mysql_select_db, mysql_query) por "mysqli".

Manual: http://php.net/manual/es/book.mysqli.php


Mi papá

El error en line 7 es que estaba colocando la contraseña incorrecta. Gracias por el manual MySQLi, cambie todos los MySQL. Investigaré mas sobre la conexión a base de datos para no cometer ese error con el cuál me pueden "inyectar" y estudiare más a fondo ese término. Lo había escuchado, pero ignorado.

Muchas gracias!!