Autoit en español
Aplicaciones con Autoit - Juan Antonio Villalpando
-- Tutorial de iniciación a Autoit --
Volver al índice del tutorial
____________________________
78.- Registrar usuarios y autentificarse para entrar en la aplicación.
- Para entrar en una aplicación un usuario debe previamente Registrarse con su nombre, clave y correo.
- Cuando te registres se te enviará un correo indicando que te has registrado.
- Para comprobar su fucionamiento es conveniente que pongas un correo verdadero.
- Una vez registrado cuando introduzca su nombre y clave, la pantalla se pondrá azul durante 2 segundos.
_______________________________________________________
1.- Necesitamos un hosting.
- En el tutorial anterior ya comentamos que debemos darnos de alta en un hosting.
317.- Hosting gratuito Hostinger.
_______________________________________________
2.- Creación de una base de datos y una tabla.
- Al final del tutorial mencionado anteriormente creamos una base de datos llamada u798509677_comun, con un usuario llamado u798509677_juan, la base de datos está en mysql.hostinger.es.
- Pues bien más adelante cuando veamos los archivos PHP tendremos que poner esta información para comunicarnos desde PHP con la base de datos:
// 1.- IDENTIFICACION nombre de la base, del usuario, clave y servidor
$db_host="mysql.hostinger.es";
$db_name="u78509677_comun";
$db_login="u78509677_juan";
$db_pswd="contraseña";
$link = mysql_connect($db_host, $db_login, $db_pswd);
- Dentro de esa base de datos vamos a crear una tabla llamada usuarios_datos.
- La forma de crearla la vimos en este tutorial:
390.- Listado de usuarios y claves en una Base de datos.
tabla_registrados.sql |
CREATE TABLE IF NOT EXISTS `usuarios_datos` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nombre` varchar(15) CHARACTER SET utf8 COLLATE utf8_spanish2_ci NOT NULL,
`clave` varchar(7) CHARACTER SET utf8 COLLATE utf8_spanish2_ci NOT NULL,
`correo` varchar(20) CHARACTER SET utf8 COLLATE utf8_spanish2_ci NOT NULL,
`fechahora` varchar(20) CHARACTER SET utf8 COLLATE utf8_spanish2_ci NOT NULL,
`ip` varchar(15) CHARACTER SET utf8 COLLATE utf8_spanish2_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; |
- Creamos una tabla llamada "registrados" con 6 campos:
id, nombre, clave, correo, fechahora, ip
- Ya tenemos la base de datos y la tabla preparadas para recibir datos.
_____________________________________________________
3.- Archivos PHP.
- También lo vimos en el tutorial: 390.- Listado de usuarios y claves en una Base de datos.
- Voy a modificar un poco ese archivos PHP que vimos en ese tutorial.
- Este archivo recibe mediante $_POST los datos que enviará AutoIt. Identificará la base de datos:
// 1.- IDENTIFICACION nombre de la base, del usuario, clave y servidor
$db_host="mysql.hostinger.es";
$db_name="u78509677_comun";
$db_login="u78509677_juan";
$db_pswd="contraseña";
$link = mysql_connect($db_host, $db_login, $db_pswd);
- AutoIt enviará Nombre, Clave y Correo.
- Luego el PHP devolverá una Respuesta de vuelta al AutoIt.
- Recuerda que al trabajar con este tipo de archivos debes tener cuidado con la comillas 'simples', las "dobles" y las comillas de `acento`
usuarios_registrados_autoit.php
|
<?php
// Juan Antonio Villalpando.
// KIO4.COM
// 1.- IDENTIFICACION nombre de la base, del usuario, clave y servidor
$db_host="mysql.hostinger.es";
$db_name="u798509677_comun";
$db_login="u798509677_juan";
$db_pswd="contraseña";
// 2.- CONEXION A LA BASE DE DATOS
$link = new mysqli($db_host, $db_login, $db_pswd, $db_name);
$datos = $_POST;
$eleccion = $_POST['eleccion'];
/////////////////////////////// REGISTRAR ////////////////////////////////////
if($eleccion == 'registrar'){
$Nombre=$datos['nombre'];
$Clave=$datos['clave'];
$Correo=$datos['correo'];
// 3.- FECHA DE ALTA
date_default_timezone_set('Europe/Madrid'); // Fecha del país
setlocale(LC_ALL,'es_ES');
$zone=3600*2 ;
$fechahora=gmdate("j/m/y H:i:s", time() + $zone);
// 4.- TOMAR LA IP DEL USUARIO
if (getenv("HTTP_X_FORWARDED_FOR")) {
$TuIP = getenv("HTTP_X_FORWARDED_FOR");
} else {
$TuIP = getenv("REMOTE_ADDR");
}
// 5.- INSERCIÓN DE DATOS
$query="INSERT INTO usuarios_datos (nombre, clave,correo,fechahora,ip) VALUES ('$Nombre','$Clave','$Correo','$fechahora','$TuIP')";
mysqli_query ($link, $query);
echo "Datos agregados a la base.";
mysqli_close($link);
////////// CORREO QUE SE ENVIARÁ AL REGISTRARSE ////////////////////////////////
$asunto = "Entrada en la aplicación de KIO4.COM";
$mensaje = "Bienvenido a nuestra aplicación, Nombre= ".$Nombre." y Clave= ".$Clave;
$decorreo="ejemplo@ejemplo.com";
if (mail($Correo, $asunto, $mensaje, $decorreo))
//if (mail($Correo, $asunto, $mensaje, "From: $Nombre <$decorreo>"))
{
echo("Mensaje enviado. ");
}
else
{
echo("Error en el envio!...");
}
///////////////////////////////// FIN DE CORREO ///////////////////////////////
}
/////////////////////////////// ENTRAR ////////////////////////////////////
if($eleccion == 'entrar'){
$Nombre=$datos['nombre'];
$Clave=$datos['clave'];
$res=mysqli_query($link, "SELECT nombre,clave FROM `usuarios_datos` WHERE `nombre`='$Nombre' AND `clave`='$Clave' ");
$row=mysqli_fetch_array($res);
$count = mysqli_num_rows($res);
if( $count >= 1 ) { // Si hay 1 o más Juan - 1234, es que el usuario y clave existen.
echo 'REGISTRADO';
} else {
echo 'NO EXISTE';
}
mysqli_close($link);
}
?>
|
- Cuidado con las mayúsculas y las minúsculas.
- Cuidado con POST y GET.
- Cuidado con las comillas 'simples', las comillas "dobles" y las comillas de `acento` |
_____________________________________________________
4.- Aplicación en AutoIt para registrarse y autenficarse.
- Enviará un mensaje al servidor remoto y mediante PHP insertará la información en MySQL. Además mediante print devolverá una respuesta.
- Registrará al usuario. Lo guardará en el base de datos MySQL. Le enviará un correo indicando que se ha registrado. Escribe un correo real para hacer las pruebas.
- Si se autentifica y está registrado la pantalla se pondrá azul.
Código para el AutoIt
|
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Registro - Juan A. Villalpando", 775, 262, 192, 132)
$Label1 = GUICtrlCreateLabel("Nombre: ", 32, 32, 59, 20)
$Label2 = GUICtrlCreateLabel("Clave: ", 32, 72, 45, 20)
$Label3 = GUICtrlCreateLabel("Correo: ", 32, 112, 51, 20)
$Input1 = GUICtrlCreateInput("juan", 120, 32, 137, 24)
$Input2 = GUICtrlCreateInput("1234", 120, 72, 137, 24)
$Input3 = GUICtrlCreateInput("correoreal@yahoo.com", 120, 112, 193, 24)
$Button1 = GUICtrlCreateButton("Pulsa para registrarte", 32, 168, 241, 65)
$Label4 = GUICtrlCreateLabel("Nombre:", 472, 32, 56, 20)
$input4 = GUICtrlCreateInput("juan", 560, 24, 121, 24)
$Label5 = GUICtrlCreateLabel("Clave: ", 472, 72, 45, 20)
$Input5 = GUICtrlCreateInput("1234", 560, 64, 121, 24)
$Button2 = GUICtrlCreateButton("Si ya estás registrado. Pulsa para entrar.", 464, 168, 297, 57)
$Label6 = GUICtrlCreateLabel("Label6", 448, 112, 309, 44)
GUISetState(@SW_SHOW)
; Juan A. Villalpando - KIO4.COM
#EndRegion ### END Koda GUI section ###
$Respuesta=""
While 1
$msg = GuiGetMsg()
$nombre = GUICtrlRead($Input1)
$clave = GUICtrlRead($Input2)
$correo = GUICtrlRead($Input3)
$nombre_entrar = GUICtrlRead($Input4)
$clave_entrar = GUICtrlRead($Input5)
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
; Botón REGISTRAR
Case $msg = $Button1
$datos = "eleccion=registrar" & "&nombre=" & $nombre & "&clave=" & $clave & "&correo=" & $correo
enviar()
; Botón ENTRAR
Case $msg = $Button2
$datos = "eleccion=entrar" & "&nombre=" & $nombre_entrar & "&clave=" & $clave_entrar
enviar()
if $Respuesta = "REGISTRADO" Then
GUISetBkColor(0x00FFFF) ; Pantalla azul durante 2 segundos.
Sleep(2000)
GUISetBkColor(0xFFFFFF)
EndIf
EndSelect
Wend
Exit
; Enviar MySQL
Func enviar()
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("POST", "http://kio4.esy.es/usuarios_registrados_autoit.php", False)
$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
$oHTTP.Send($datos)
; Recibir de MySQL
$Respuesta = $oHTTP.ResponseText
$Codigo = $oHTTP.Status
Beep(800,500)
GUICtrlSetData($Label6,$Respuesta)
EndFunc
|
- Según pulse un botón toma las variables "eleccion" y demás datos.
- Cuando "eleccion" llegue al PHP, éste realizará una de las operaciones según sea esa "eleccion" (registrar, entrar )
- La función enviar, envía los datos.
- Para enviar se utiliza la librería objeto de Windows winhttp.winhttprequest.5.5
- Los datos de los botones son enviados a la página PHP que los procesará.
- El código PHP realizará las operaciones pertinente según la elección y devolverá una Respuesta.
- La respuesta la envía el PHP mediante print.
- [También la podría enviar mediante echo].
- El AutoIt toma la información que le ha enviado print, mediante
$Respuesta = $oHTTP.ResponseText
_______________________________________________
- Propuesta.
- Cámbia el código PHP para que si el nombre viene vacío no realice ninguna acción.
if (isset($Nombre) ) {
- Aquí todo del código a partir de $datos = $_POST;
}
_________________
|