• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
507
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Curso PHP Thales-CICAEjemplos prácticos.Login sencillo.En este ejemplo crearemos una pequeña aplicación de lo que comunmenterecibe el nombre de módulo de login.Será una aplicación insegura y muy sencilla, en temas posteriores la haremossegura y la iremos complicando. Ahora el objetivo básico es ver los pasos parala creación de este login.Pasos: - Diseño de la base de datos para el login. - Implementación de la tabla en SQL. - Creación del formulario para la entrada de los datos. - Realización del código que tratará la información recibida.Paso 1. Diseño de la base de datos para el login.En nuestro caso se trata de una aplicación sencilla, simplementenecesitaremos una tabla con los campos usuario y clave a la que llamaremoslogin.Paso 2. Implementación de la tabla en SQL.CREATE TABLE login ( usuario VARCHAR( 20 ) NOT NULL , clave VARCHAR( 20 ) NOT NUL );y para hacer las pruebas añado un par de entradas a la tabla:INSERT INTO login ( usuario , clave ) VALUES ( prueba, 123);INSERT INTO login ( usuario , clave ) VALUES( prueba2, 123456 ); 1
  • 2. Curso PHP Thales-CICAPaso3. Creación del formulario para la entrada de los datos.Será un formulario sencillo. Pasaremos los datos con POST y trataremos lainformación en la pagina tratar.php.El formulario será mostrado en la pagina login.php que contendrá el siguientecodigo:<html><title>Formulario de Login</title></head><body>FORMULARIO DE LOGIN:<form method="POST" action="tratar.php"> <table> <tr> <td width="8%">Usuario:</td> <td width="92%"><input type="text" name="user" size="20"></td> </tr> <tr> <td width="8%">Clave:</td> <td width="92%"><input type="text" name="pass" size="20"></td> </tr> </table> <p><input type="submit" value="Enviar" name="B1"> <input type="reset" value="Limpiar" name="B2"></p></form></body></html>Paso 4. Realización del código que tratará la información recibida.Lo primero que debermos hacer es meter la información del formulario envariables para facilitar el manejo de los datos:$user = $_POST[user]; // Leo de la variable $_POST y voy guardando$pass = $_POST[pass];Ahora $user y $pass contienen los datos, tendremos que comprobar ahora siesos datos son correctos, es decir si existe en la tabla un usuario con esenombre y esa clave.Lo que hacemos es hacer un select en la tabla con esos datos, si el resultadodel select es vacío, significa que no se ha encontrado ninguna entrada en latabla y por tanto esos datos son incorrectos. Si por el contrario obtenemosuna entrada significa que ese usuario es correcto. 2
  • 3. Curso PHP Thales-CICALa sentencia sql sería:$sql = "SELECT * FROM login WHERE usuario LIKE prueba AND clave LIKE 123 ";Dependediendo del resultado obtenido indicaremos al usuario si el proceso delogin fue correcto o no.Veamos ta el código completo del tratar.php<?// Conexión previa con la base de datos //$host = "localhost";$usuario = "prueba";$password = "pruebita";$bd = "aplicacion";if (! $link = mysql_connect($host,$usuario,$password) ) { echo "Error conectando a la base de datos."; exit(); } if (!mysql_select_db($bd,$link) ) { echo "Error seleccionando la base de datos."; exit(); }/* Nota: Tendreis que poner el host, user , pass y bd de vuestro servidor de base de datos */$user = $_POST[user];$pass = $_POST[pass];$sql = " SELECT * FROM login WHERE usuario LIKE ".$user." ";$sql .= " AND clave LIKE ".$pass." ";$result = mysql_query($sql,$link);if ( !$result ) // $result == null || $result == false , ojo false sin comillas { echo "Se produjo un error: ".mysql_error(); exit(); } 3
  • 4. Curso PHP Thales-CICAelse { if ( mysql_num_rows($result) > 0 ) { $row = mysql_fetch_array($result); echo "Bienvenido ".$row[usuario]; // Con $row[usuario] accedo al } // campo user de la tabla./* ...... Alternativa ...... $enc = false; while ($row = mysql_fetch_array($result) ) { $u = $row[usuario]; // Con $row[usuario] accedo al $enc = true; // campo user de la tabla. } if ($enc) { echo "Bienvenido ".$u; }*/ else { echo "Usuario Incorrecto"; echo "<br><br><a href=login.php>Volver</a>"; }}?>NOTA IMPORTANTE$host = "localhost";$usuario = "prueba";$password = "pruebita";$bd = "aplicacion";El usuario prueba con clave pruebita es un usuario, que habremos creado conel phpmyadmin, que tendrá privilegios sobre la base de datos aplicacion, quees la que contiene las diferentes tablas.No confundir este usuario con los posibles usuarios de la aplicación,prueba/pruebita es un administrador de la base de datos aplicación. 4
  • 5. Curso PHP Thales-CICAEjercicios resueltos.Ejemplo 1. Función que pasado un $link y un nombre de la base de datos detecte si esa base de datos existe o no.function detecta_bd ($link,$nombre_bd){ $result= mysql_list_dbs($link); // Consulto las bases de datos if ( $result == false) { echo "Se produjo un error: ".mysql_error(); exit(); } else { while ( $row = mysql_fetch_array($result) ) // Meto en una array las bd { $lista_bd[]=$row[Database]; } return in_array($nombre_bd,$lista_bd) ; // Devuelve true si la base de datos} // se encuentra en el sistemaImportante• En este ejercicio devolvemos true si se encuentra la base de datos pasada por parametro en el servidor y falso en caso contrario.• En caso de que la operación mysql_list_dbs($link) tenga un error, informaremos de que hubo un error y saldremos de la ejecución con el comando exit() puesto que no dispongo de la información necesaria, en este caso la de los nombres de las bases de datos en el sistema y por tanto no podré devolver ni cierto ni falso.• Para convertir un resultado en una array utilizo el siguiente código: while ( $row = mysql_fetch_array($result) ) { $lista_bd[]=$row[Database]; } Con row[Database] accedo al campo Database de cada fila del resultado, el cual voy añadiendo dinamicamente al array $lista_db[] 5
  • 6. Curso PHP Thales-CICAEjemplo2 . Función que imprime la lista de las bases de datos disponibles.function listar_db($link){ $result = mysql_query(SHOW DATABASES;,$link);if ($result == false) // Por si se producen errores en la query{ echo "Se produjo un error: ".mysql_error();}else{ while( $data = mysql_fetch_row($result) ) { $array[] = $data[0]; // Va añadiendo las entradas del resultado a la array } $tam = sizeof($array); // En array tendré ahora todas las entradas if ( $tam == 0) { echo "No se encontraron bases de datos en el servidor"; } else // Imprimo las bases de datos encontradas { echo "Se encontraron ".$tam." bases de datos en el servidor<br>"; for( $i = 0 ; $i < $tam ; $i++) { echo $array[$i]."<br>"; } }}}Importante:• Comprobar si el query se hizo correctamente y en caso contrario dvuelve un false, indicar que error se produjo con la función myqsl_error().• Para convertir un resultado en una array utilizo el siguiente código: while( $data = mysql_fetch_row($result) ) { $array[] = $data[0]; // Va añadiendo las entradas del resultado a la array } 6
  • 7. Curso PHP Thales-CICA Cada fila de resultado es introducida dinamicamente en la array Comprobar la importancia del [] del array y del [0] del data.• Para recorrer un array simplemente calculo su tamaño con la función sizeof y utilizo un sencillo bucle for. También podría haber utilizado lo siguiente: echo current($array)."<br>"; while ( next($array) ) { echo current($array)."<br>"; } y no hubiese necesitado conocer el tamaño del array. Notese que ya comprobé que tiene al menos un elemento, por lo que el primer current($array) delante del while no daría error. También podría hacerlo empezando desde el final: end ($array); // sitúo el puntero en el ultimo elemento del array echo current($array)."<br>"; while ( prev ( $array) ) { echo current($array)."<br>"; } 7