Windows 7 – Recuperar Contraseña
01/03/2012PHP: Las Sesiones
04/03/2012Vamos a la parte interesante que todo programador quiere oir.... conectarse a una Base de Datos.
Vamos a simular un caso práctico para que resulté más claro.
Intentaremos realizar un login sobre una página web, que atacará a una base de datos mysql.
Recordemos que aquí el método del formulario será POST ya que al pasar datos más confidenciales no nos interesa que se lean en la url y es recomendable que viajen internamente.
Así que recuperaremos la información via $_POST.
Ingredientes iniciales: Necesiaremos introducir un USUARIO que tendrá como valor de formulario "nick" y una CONTRASEÑA cuyo valor de formulario será "pass".
Lo primero que debemos comprobar es que las variables existan y sean diferentes de null, utilizando el método $_POST
-
span style="color:#FF0000;">'nick''nick''pass''pass'
Lo siguiente será crear una variable para conectarnos a la base de datos. Será preciso facilitarle el nombre del servidor, un usuario con permisos, la contraseña y la base de datos, que veremos que tenemos varios métodos para informar.
METODO 1
Creamos una variable donde mediante la instrucción mysqli, le pasamos como parámetros el servidor, el usuario y su contraseña.
La siguiente linea, nos permitirá seleccionar la base de datos con la que queramos trabajar.
-
span style="color:#FF0000;">"localhost","root","12345"'dbpruebalvg');
METODO 2
este método nos permite facilitar en el mismo comando todos los parámetros (incluida la base de datos)
-
span style="color:#FF0000;">"localhost","root","12345");
VALIDAR LA CONEXIÓN
¿Cómo comprobamos si hay problemas con la conexión?
Al validar el usuario, deberemos comprobar que la conexión es correcta, y los query que hagamos serán únicamente si la conexión es correcta
-
span style="color:#FF9933; font-style:italic;">// compruebo si hay un número de error
-
'Error de conexión: '
QUERY A LA BASE DE DATOS
Una vez la conexión es correcta a la base de datos, el siguiente paso será realizar una consulta o query a la base de datos.
si alguien ha trabajado con Visual Studio u otro programa, es fácil, escribes el nombre del objeto, y después un punto, y tendrás un listado de las diferentes opciones.
En PHP, en lugar de un punto, utilizamos una flecha, o al menos se parece "->"
con nuestro objeto conexión inicial $obj, haremos una query que volcaremos en una variable que de momento no tendrá una forma práctica para manipular.
-
/* REALIZO EL SELECT CON LOS PARÁMETROS QUE LE PASO*/"select * from users where nick=\""'nick']."\" and pass=\""'pass']."\"");
Para averiguar si la query ha devuelto un número de filas, deberemos trabajar con $resultado, que ahora contiene el resultado de la consulta.
Si lo que queremos es validar si hay un usuario con una contraseña en la base de datos, la query nos debería devolver 1 registro o fila, por lo que validaremos el número de filas.
Si es igual a 1, estaremos validados como usuario, si no, y aquí ojo a la buena praxis. No diremos que el usuario existe pero que la contraseña es incorrecta, sino que el mensaje que debemos mostrar en caso de error es "EL USUARIO O LA CONTRASEÑA NO SON CORRECTOS". No debemos facilitar el trabajo a los posibles intrusos.
-
span style="color:#008000;">/*podría usar también la expresión if ($numfilas) sin el ==0 */"<p><h3>Usuario "'nick']." Validado</h3></p>""<P><h3>El Usuario o la Contraseña no son correctos</h3></P>";
-
}
OBTENER Y TRABAJAR CON LOS DATOS DEL QUERY
Finalmente, si queremos trabajar con los datos que hemos solicitado en el query, lo que debemos hacer es volcarlos en una variable que podamos manipular. ¿Cómo? Pues con un array asociativo.
traducción al cristiano: ¿Os acordais que tenemos los datos en una variable $resultado que tenía una forma que no podíamos manipular?
Pues vamos a volcar los datos de $resultado en un Array que llamaremos $datos.
y una vez en $datos ya somos capaces de trabajar con Arrays.
-
span style="color:#008000;">/*ARRAY ASOCIATIVO, ASIGNO LOS VALORES OBTENIDOS A UN ARRAY *///SI QUEREMOS VER QUE CONTIENE $datos
-
'id']."<br/>"'nick']."<br/>"'rank']."<br/>"'name']."<br/>"'surname']."<br/>"'email']."<br/>"'pass']."<br/>";