In this tutorial, we’ll learn how to create a slick email signup form. This form will harness the full power of AJAX, meaning that we will submit data to the server, validate it, and receive a response – all without a single page refresh! Along the way, you should pick up some useful tips related to PHP and JavaScript, as well as general programming …
Ahora solo falta crear el controlador para las rutas de usuarios, dos en este caso:
GET /user/[user] para recuperar un usuario
PUT /user para crear un nuevo usuario
Lógicamente aún no hay nada de autenticación, por lo que cualquiera puede crear un usuario realizando una llamada PUT a la URL indicando userName, email y password.
Para comprobar la validez de los datos introducidos, usaremos joi. Usando las opciones de la ruta, indicaremos las reglas que deberá cumplir cada parámetro introducido. Así, para recuperar un usuario, se comprobará que user sea string, alfanumérico y que tenga una longitud de 3 a 20 caracteres:
Por último mostrar el código para crear un nuevo usuario. Primero se comprueba si existe un usuario con ese nickname o email. Si es así, se devuelve error usando boom, si no, se genera la contraseña encriptada (aquí no me he molestado mucho en ello, ya lo haré más adelante), y se crea el usuario usando el método create de moongose:
PHP viene por defecto configurado para desarrollo, pero en producción hay opciones que no son recomendables sobre todo por temas de seguridad. Cambiad en el php.ini las siguientes opciones para mejorar la seguridad en tu entorno de producción:
Desactiva el acceso a ficheros remotos: las funciones fopen, file_get_contents, y include permiten el acceso a ficheros remotos (http://host/..), lo cual puede dar problema en temas de seguridad. Si necesitas acceder a ficheros remotos puedes usar fsockopen o funciones de CURL.
allow_url_fopen = Off
Register globals: aunque ahora viene por defecto desactivado, en versiones anteriores de PHP, los parámetros de entrada se registraban como variables globales.
Modo seguro: PHP dispone de un modo seguro, en el que Apache solo puede acceder a ficheros de los que sea dueño, aunque nos puede dar problemas sobre todo cuando se trabaja en grupo, la tranquilidad que nos aporta pesa más que este inconveniente. Para ello usaremos una propiedad para que solo ejecute scripts que le pertenecen y otra permite acceso a los ficheros que pertenecen al grupo de Apache aun cual sea el dueño.
safe_mode = Off
safe_mode_gid = On
Acceso permitido a ficheros binarios: el modo seguro tampoco permite ejecutar ficheros binarios, pero se le puede indicar en que ruta si se pueden ejecutar.
safe_mode_exec_dir = /www/ejecutables
Acceso a variables de entorno: tampoco está permitido acceder a variables de entorno en el modo seguro, pero se puede inluir una lista (separada por comas) de prefijos que se permiten para estas variables.
max_execution_time = 30 ; Tiempo máximo de ejecución
max_input_time = 60 ; Tiempo máximo que trata la entrada
memory_limit = 16M ; Memoria máxima para la ejecución de un script
upload_max_filesize = 2M ; Tamaño máximo de un fichero para subir
post_max_size = 8M ; Tamaño máximo de un POST
Control de acceso a ficheros mediante Apache: aunque en este caso se debe configurar Apache, tampoco biene mal el contarlo. Se trata de evitar que Apache acceda a ficheros importantes, por ejemplo ficheros .inc, .sql.
<FilesMatch "\.(inc|.*sql)$">
Order allow,deny
Deny from all
</FilesMatch>
En 456 Berea Street nos muestran una forma muy interesante para poder mostrar tu página con diferentes hojas de estilo. Tiene el inconveniente de que solo admite dos estilos entre los que elegir.
El funcionamiento es sencillo, disponemos de dos directorios, cada cual con las hojas de estilo que nos interesa. Habrá un enlace a una página que cuando accedemos a ella nos cambiará de directorio, guardará el valor en una cookie y nos devolverá a la página a la página desde la que hemos hecho la llamada o a la raÃz si no existÃa esa página. Y luego en cada página deberemos obtener el valor del directorio de las cookies y usarlo para recuperar la hoja de estilo correspondiente.
El script que se encarga de cambiar de directorio es el siguiente:
Pues siguiendo con el modo en que se hace en la administración de WordPress, primero haremos el difuminado del color actual de la fila al color rojo y mientras se realiza el borrado en la tabla de la base de datos, haremos que parpadee el color de la fila. Cuando se haya realizado el borrado en la tabla de la base de datos, se eleminará la fila de la tabla HTML y se mostrará un mensaje de aviso de que se ha borrado de la BD.