Ir al contenido

Buscar en La Comunidad

Mostrando resultados por etiquetas 'mysql'.

  • Buscar Por Etiquetas

    Añade etiquetas separadas por comas.
  • Buscar Por Autor

Tipo de Contenido


Foros

  • Contacto con el staff
    • Novedades / Anuncios del foro
    • Sugerencias
    • Problemas relacionados con el foro
  • Zona general de charla
    • Presentaciones
    • Charla
    • Zona de Humor, Curiosidades y Otros
    • Mascotas Vagos
    • Noticias del Mundo
    • Tecnología
    • Ayuda y consultas de carácter general
  • Zona GNU/Linux
    • Ayuda, consultas y soporte GNU/Linux
    • Distribuciones GNU/Linux
    • Repositorios. Software GNU/Linux
    • Personalización
    • Raspberry Pi
    • Arduino
    • Manuales / Tutoriales / Guías GNU/Linux
    • Programación
    • Noticias GNU/Linux
    • Hablando de GNU/Linux
  • Zona Gaming
    • Juegos GNU/Linux
    • Noticias Gamer
    • Charla Gamer
  • Zona Móvil
    • Ayuda y soporte para dispositivos móviles
    • Apps Móviles
    • Manuales / Tutoriales / Guías Móviles
    • Roms para dispositivos Móviles
    • Noticias sobre dispositivos Móviles
    • Hablando sobre dispositivos Móviles
  • Zona Mozilla
    • Ayuda, consultas y soporte Mozilla
    • Aplicaciones Mozilla
    • Roms Firefox OS
    • Manuales / Tutoriales / Guías Mozilla
    • Noticias Mozilla
    • Hablando de Mozilla
  • Microsoft
    • Papelera del Foro

Encontrar resultados en...

Encontrar resutados que...


Fecha de Creación

  • Start

    Fin


Última Actualización

  • Start

    Fin


Filtrar por numero de...

Joined

  • Start

    Fin


Grupo


Página Web


Diaspora


Pump


GNU Social


Google +


Twitter


Facebook


Xmpp


Skype


Steam


Desura


MediaGoblin


Youtube


Vimeo


Picasa


Flickr


Email


Lugar


Intereses

Encontramos 6 resultados

  1. Saludos amigos. Si tenemos un servidor montado en casa y nuestro proveedor de internet no nos facilita una IP fija tendremos la necesidad de saber en todo momento nuestra IP pública. Vamos a montar un servicio tipo no-ip o DynDNS. El servicio consta de dos partes, una en nuestro ordenador y por otra parte necesitaremos un servidor de internet, por ejemplo, si no tenemos un servicio de hosting, https://www.hostinger.es/ , nos ofrece de forma gratuita todo lo que necesitamos, 2 GB de almacenamiento, php y bases de datos MySQL. EN NUESTRO ORDENADOR Tengo que aclarar que lo que explico a continuación lo he hecho bajo un sistema linux. En primer lugar crearemos un directorio en el servidor de nuestro pc, yo lo he llamado curl, la ruta sería /var/www/html/curl. Abrimos nuestro editor de texto favorito y escribimos #!/bin/bash pepe=$(dig +short myip.opendns.com @resolver1.opendns.com) curl -d "value1=pepico&value2=$pepe" http://midominio.com/curl/index.php Lo guardamos con el nombre 1.sh, por ejemplo, y le damos permisos de ejecución. En la última linea cambiar midominio.com por el de nuestro servidor de hosting, también, donde vemos value1=pepico. cambiamos el nombre por el que queramos. Este script lo que hace averiguar nuestra ip pública y enviarla, junto a un nombre de usuario a nuestra página index.php del servidor de hosting mediante el método post. Ahora vamos a editar crontab para que nuestro script se ejecute cada dos horas. Abrimos un terminal y escribimos sudo gedit /etc/crontab y en crontab añadimos esta línea 0 */2 * * * root /var/www/html/curl/1.sh guardamos y cerramos. Como hemos dicho, ésto hará que nuestro script se ejecute cada dos horas. Ya hemos terminado en nuestro PC, ahora iremos a nuestro servidor de hosting. EN NUESTRO SERVIDOR DE HOSTING Deberemos crear una base de datos MySQL con nombre curl, con una tabla llamada datos y 4 columnas, id (int, primary key, auto_increment), nombre (varchar 50), ip (varchar 50) y fecha (timestamp, CURRENT_TIMESTAMP). Ahora vamos a crear la página index que recogerá los datos que le hemos enviado antes por el script bash y los introducirá en nuestra base de datos. Paso previo es crear también una página conex. conex.php <?php // hostname o ip del servidor de Base Datos $bd_host='localhost'; // nombre de usuario $bd_usuario='usuario'; // la contraseña para la BBDD $bd_password='contraseña'; // nombre del BBDD $bd_base='curl'; $conexion = new mysqli($bd_host, $bd_usuario, $bd_password, $bd_base); if ($conexion->connect_errno) { echo "No se pudo conectar a la Base Datos: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; } ?> index.php <?php include("conex.php"); if($_POST) { $queryInsert = "INSERT INTO datos (nombre, ip) VALUES ('".$_POST['value1']."', '".$_POST['value2']."');"; $resultInsert = mysqli_query($conexion, $queryInsert); if($resultInsert) { echo "<strong>Se ingresaron los registros con exito</strong>. <br>"; } else { echo "No se ingresaron los registros. <br>"; } } ?> Con esto ya tenemos nuestra última ip metida en la base de datos. Ahora vamos a crear dos sencillas páginas para saber cual es nuestra actual ip pública de nuestro PC, buscar.php y encontrado.php. buscar.php <html> <head> <title>Entrada de enlaces</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head> <body> <form action="encontrado.php" method="post"> Nombre:<br> <input type="text" name="nombre"><br><br> <input type="submit" value="Submit"> </form> </body> </html> Nos mostrará un sencillo formulario donde debemos poner nuestro nombre de usuario que está en el script bash. encontrado.php <html> <head> <title>Entrada de enlaces</title> <meta charset="UTF-8"> </head> <body> <?php include("conex.php"); $consulta = "SELECT nombre, ip, DATE_FORMAT(fecha, 'Con fecha: %d/%m/%y y hora: %H:%i:%s') AS fecha FROM datos WHERE nombre = '" . $_POST["nombre"] . "' ORDER BY id DESC LIMIT 1"; $resultado = $conexion -> query($consulta); echo "<span style='color: blue;'>Extracción de último dato ...</span> <br><br>"; while($fila = $resultado -> fetch_array()) { echo "Usuario: " . $fila["nombre"] . "<br>"; echo "Última IP asignada: " . $fila["ip"] . "<br>"; echo "" . $fila["fecha"] . "<br><hr>"; } mysqli_free_result($resultado); mysqli_close($conexion); ?> </body> </html> Nos mostrará la última ip pública que tenemos asignada y a que fecha y hora se captó. Extracción de último dato ... Usuario: pepico Última IP asignada: 11.111.11.111 Con fecha: 29/04/17 y hora: 18:00:02 Todo esto está bien, pero queremos algo mas, no tener que ir a un formulario para saber nuestra ip, lo que queremos es poner en el navegador una dirección y que nos redireccione a nuestro servidor local, una dirección tipo "midominio.com/pepico". Recordad que pepico era nuestro usuario con el que se guardaban las ip de nuestro servidor local. Bien, como al poner esa dirección en el navegador, el directorio pepico no existe, el servidor nos enviará un error 404, página no encontrada. Vamos a crear una página de error 404 tuneada por nosotros. Antes de nada vamos a tener que tocar el archivo .htaccess para que cuando se de el error 404 nos muestre nuestra página 404. Abrimos el archivo .htaccess y añadimos la linea ErrorDocument 404 /404.php Con esto le decimos que cuando se produzca el error 404 nos muestre la página 404.php. Ahora vamos a crear la página 404.php, que a continuación diré lo que hace. 404.php <html> <head> <title>Entrada de enlaces</title> <meta charset="UTF-8"> <script language="JavaScript"> function enviar() { document.form.submit(); } </script> </head> <body onload="enviar()"> <?php $url = "{$_SERVER['REQUEST_URI']}"; $resultado = str_replace("/", "", $url); ?> <form method="POST" action="curl/redireccionar.php" name="form"> <p><input type="text" value="<?php echo $resultado; ?>" name="nombre"></p> <p><input type="submit" value="Enviar" name="B1"></p> </form> </body> </html> Esta página lo que hace es eliminar de la dirección web todo lo que vaya antes de la barra "/", en nuestro caso quedaría pepico y lo envía directamente a otra página que luego vamos a crear, redireccionar.php, la cual estará dentro del directorio curl. redireccionar.php <html> <head> <title>Entrada de enlaces</title> <meta charset="ISO-8859-1" /> </head> <body> <?php include("conex.php"); $consulta = "SELECT nombre, ip, DATE_FORMAT(fecha, 'Con fecha: %d/%m/%y y hora: %H:%i:%s') AS fecha FROM datos WHERE nombre = '" . $_POST["nombre"] . "' ORDER BY id DESC LIMIT 1"; $resultado = $conexion -> query($consulta); if ($fila = $resultado -> fetch_array()) { echo "<script language=\"javascript\">window.location.href=\"http://" . $fila["ip"] . "\";</script>"; } else { echo "NO encontrado"; } mysqli_free_result($resultado); mysqli_close($conexion); ?> </body> </html> Esta página lo que hace es buscar en la base de datos la última ip registrada del usuario que queremos, en este caso pepico, y nos redirecciona directamente a esa ip. Si ese usuario no existe o nos equivocamos al escribir la dirección, la página actuará como una página 404 y nos mostrará un mensaje de "no encontrada". Todo el proceso, desde que pones la dirección en el navegador hasta que te redirecciona a la ip de tu servidor local es limpio y automático. Bueno, espero que le sirva a alguien de ayuda. Saludos.
  2. Bueno papilos hoy hago éste tutorial de como instalar un servidor web en nuestro equipo. Ésto más que nada sirve para practicar, tal vez administrar algo muy pequeño, sólo dejaré una configuración básica, de acuerdo a la máquina que tengamos y el acceso a internet. Qué es LAMP? LAMP es el acrónimo usado para describir un sistema de infraestructura de internet que usa las siguientes herramientas: Linux, el sistema operativo; En algunos casos también se refiere a LDAP. Apache, el servidor web; MySQL/MariaDB, el gestor de bases de datos; Perl, PHP, o Python, los lenguajes de programación. La combinación de estas tecnologías es usada principalmente para definir la infraestructura de un servidor web, utilizando un paradigma de programación para el desarrollo. Archivos que vamos a utilizar: *Apache: /etc/httpd/conf/httpd.conf *PHP: /etc/php/php.ini *MySQL/MariaDB: /etc/mysql/my.cnf Instalación de los paquetes necesarios: Apache: pacman -S apache Base de Datos: pacman -S mariadb Base de datos Opcional método gráfico : pacman -S mysql-workbench PHP: pacman -S php php-apache Configuración de Apache: - Una vez instalado el paquete apache prácticamente ya se encuentra listo para ser usado, pero obviamente tenemos el archivo de configuración httpd.conf que se encuentra en el directorio: /etc/httpd/conf/ - En éste caso usaré la configuración default, pero en otro momento veremos que más podemos hacer con apache, ya que me resultó cómodo, asi que los archivos HTML se encuentran en el directorio /srv/http. - Asi que vamos hasta dicho directorio y vamos a crear un archivo .html con el siguiente código dentro: <html> <head> <title>Bienvenido a Apache!</title> </head> <body> <h2>Funcionando correctamente!</h2> </body> </html> - Lo guardamos con el nombre index.html y para corroborar que quedó funcionando el server apache, vamos a iniciar el servicio httpd de la siguiente manera (como root): systemctl start httpd.service - Abrimos el navegador y escribimos: http://127.0.0.1 o http://localhost y voila! - Ahora en el caso que quieran que inicie justo a la pc escribimos: systemctl enable httpd.service - Y listo! el servicio httpd iniciará con el sistema cada vez que enciendan el equipo. Configuración de mariadb: - Antes de utilizar el script de instalación de mariadb, vamos a setear la base de datos de ésta manera: mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql (Wiki link: https://wiki.archlinux.org/index.php/MySQL) - Luego ejecutamos el script de instalación: mysql_secure_installation y vamos siguiendo los pasos y configurando lo que necesitamos. - Luego de haber finalizado el script podemos crear un usuario y darle todos los privilegios de la siguiente manera: * Recuerda colocar el password que colocaste cuando configuraste el script. - Listo! Ya queda configurada mariadb con un usuario agregado con todos los privilegios. Configuración de PHP: - Ahora lo que vamos hacer es configurar Apache junto a PHP. Es una configuración básica, pero como dije más arriba, es para practicar, luego ustedes pueden ir personalizando lo que necesiten. - Vamos a editar el archivo /etc/httpd/conf/httpd.conf y vamos a comentar la línea: #LoadModule mpm_event_module modules/mod_mpm_event.so <- quedando de ésa forma con el "#" delante. Y vamos a agregar la línea: LoadModule mpm_prefork_module modules/mod_mpm_prefork.so debajo. - Ahora vamos a buscar dentro del mismo archivo la línea: LoadModule dir_module modules/mod_dir.so y debajo de ésa agregamos la siguiente: LoadModule php7_module modules/libphp7.so - Nos fijamos que se encuentre la línea: Include conf/extra/php7_module.conf - También vamos a decirle a PHP que usamos mysql también asi que vamos a editar el archivo php.ini que se encuentra en /etc/php y descomentamos la línea eliminando el ";" que se encuentra delante: extension=mysqli.so Guardamos y salimos. - Y finalmente vamos a crear un archivo por ejemplo: info.php y agregamos ésta líena dentro del mismo: <?php phpinfo(); ?> - Guardamos los cambios, ejecutamos: systemctl restart httpd - Abrimos navegador e ingresamos a: localhost/info.php - En el caso de que no se visualice nada, vamos a editar nuevamente el archivo httpd.conf y vamos a la parte de "AddType" y aquí vamos a descomentar un addtype y colcamos éste: AddType application/x-httpd-php .php Quedando así: - Finalmente reiniciamos los servicios: systemctl restart httpd systemctl restart mysqld - Listo! Recuerden que los comandos systemctl se pueden usar así: * Ejecutar inmediatamente: systemctl start httpd * Detener inmediatamente: systemctl stop httpd * Ejecutar al inicio del sistema: systemctl enable httpd * Deshabilitar el servicio del inicio: systemctl disable httpd * Visualizar estado del servicio: systemctl status httpd (ésto nos da un parámetro genial para ver si tenemos algún error para darnos idea como solucionarlo). Espero que les sirva y que tengan una linda experiencia! Abrazo de gol!
  3. Saludos. Os voy a mostrar como desde un sensor de humedad y temperatura DHT11 conectado a la placa Arduino se puede enviar vía wifi a un servidor web los datos de humedad y temperatura y almacenarlos en una base de datos en los intervalos de tiempos que deseemos. Materiales utilizados: Una placa Arduino (yo he utilizado la Uno). Un módulo wifi HLK-RM04. Un sensor de temperatura DHT11. 7 cables Dupont. Conexiones: Pin RX del módulo HLK-RM04 a pin TX de Arduino. Pin TX del módulo HLK-RM04 a pin RX de Arduino. Pin 5V del módulo HLK-RM04 a pin 5V de Arduino. Pin GND del módulo HLK-RM04 a pin GND de Arduino. Pin datos del DHT11 a pin 2 de Arduino. Pin VCC del DHT11 a pin 3,5V de Arduino. Pin GND del DHT11 a pin GND de Arduino. Software necesario: El código para la placa Arduino. Dos páginas web php, una para conectar a la base de datos y otra para introducir los datos en ésta. Una base de datos Mysql. Código para Arduino: #include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(57600); dht.begin(); } void loop() { boolean has_request = false; int h = dht.readHumidity(); int t = dht.readTemperature(); if (Serial.available()) { while(Serial.available()) {char c = Serial.read();} has_request = true; } if (has_request) { Serial.println("HTTP/1.1 200 OK"); Serial.println("Content-Type: text/html"); Serial.println("Connection: close"); String sr = "<!DOCTYPE HTML>\n"; sr += "<html>\n"; sr += "Humedad: "; sr += h; sr += (" %\t"); sr += "<br />\n"; sr += "Temperatura: "; sr += t; sr += (" ºC "); sr += "<br />\n"; sr += "<form name=\"formulario\" action=\"http://localhost/arduino/wifi/temperatura/intro.php\" method=\"post\">"; sr += " <input type=\"hidden\" name=\"humedad\" value=\""; sr += h; sr += "\" />"; sr += " <br/>"; sr += " <input type=\"hidden\" name=\"temperatura\" value=\""; sr += t; sr += "\" />"; sr += " <br/>"; sr += "</form>"; sr += "<script>"; sr += "document.formulario.submit();"; sr += "</script>"; sr += "</html>"; Serial.print("Content-Length: "); Serial.print(sr.length()); Serial.print("\r\n\r\n"); Serial.print(sr); has_request = false; } } intro.php: <!DOCTYPE html> <html> <head> <meta content="text/html; charset=UTF-8" http-equiv="content-type"> <title></title> <script language="JavaScript"> var totalTiempo=60; var url="http://192.168.1.254:8080"; function updateReloj() { document.getElementById('CuentaAtras').innerHTML = "Se volverán a tomar datos en "+totalTiempo+" segundos"; if(totalTiempo==0) { window.location=url; }else{ totalTiempo-=1; setTimeout("updateReloj()",1000); } } window.onload=updateReloj; </script> </head> <body> <? $humedad = $_POST['humedad']; $temperatura = $_POST['temperatura']; if (!isset($humedad)){ echo "Datos no recibidos. Error"; } else { include("conex.php"); if(mysql_query("INSERT INTO datos (humedad, temperatura) VALUES ('$humedad', '$temperatura')")) { echo "<p align='center'><b><font color='#000000' face='Arial, Helvetica, sans-serif' size='3'>Los datos han sido introducidos correctamente:<br> Humedad: $humedad<br> Temperatura: $temperatura<br> </p>"; echo "<h2 id='CuentaAtras' align='center'></h2>"; } else { echo "<p align='center'><b><font color='#000000' face='Arial, Helvetica, sans-serif' size='5'>Ha habido problemas. Vuelva a intentarlo</b></p>"; } } ?> </body> </html> conex.php: <? $link = mysql_connect("localhost" ,"usuario","contraseña") or die("no se da conectado"); mysql_select_db("hutem",$link) or die("no se da seleccionado"); ?> Base de datos Mysql: Nombre base de datos: hutem Nombre de tabla: datos 4 campos: id, humedad, temperatura, fecha (con la propiedad timestamp, para saber cuando se introdujeron los datos) Consideraciones previas: Al módulo Wifi HLK-RM04 le he asignado una ip fija en mi red, la 192.168.1.254 y el puerto 8080. Explicación cómo funciona: La placa Arduino recoge los datos de humedad y temperatura que le proporciona el sensor y crea una sencilla página html con un formulario con estos datos que mediante javascript se autoejecuta. En el navegador de nuestro PC ponemos la dirección 192.168.1.254:8080, entonces se inicia la comunicación con el módulo wifi y nos es enviada la página web mencionada anteriormente. Como el formulario enviado se autoejecuta, nos envía a la página intro.php, donde se introducen los datos recibidos en la base de datos y comienza una cuenta atrás de 60 segundos y volver a la dirección 192.168.1.254:8080 y así tener un bucle e ir almacenando los datos cada 60 segundos. Por supuesto esta cantidad de segundos se pueden variar y poner el tiempo que queramos. Bueno, espero que le sirva a alguien. Saludos.
  4. Saludos.... Os voy a mostrar como hacer un control de acceso vía Wifi utilizando la placa arduino, mas un poco de código php, javascript y base de datos Mysql. De esta manera podemos loguearnos desde cualquier dispositivo que este conectado a internet, un pc, una tablet, un teléfono, etc, sin necesidad de que nuestra placa Arduino este conectada por cable a nuestro PC. Materiales utilizados: Una Placa Arduino (yo he utilizado la nano) Un módulo wifi HLK-RM04 12 cables dupont Una pantalla lcd I2C 16X2 Un módulo led rgb Conexiones: Pin SCL del lcd --> Pin A5 de Arduino Pin SDA del lcd --> Pin A4 de Arduino Pin VCC del lcd --> Pin 5 voltios de Arduino Pin GND del lcd --> Pin GND de Arduino Pin V-G del led -->Pin GND de Arduino Pin R del led --> Pin 11 de Arduino Pin G del led --> Pin 10 de arduino Pin B del led --> Pin 9 de Arduino Pin Rx del módulo HLK-RM04 --> Pin Tx de Arduino Pin Tx del módulo HLK-RM04 --> Pin Rx de Arduino Pin GND del módulo HLK-RM04 --> Pin GND de Arduino Pin 5v del módulo HLK-RM04 --> Pin 5v de Arduino Software necesario: El código para Arduino (se mostrará mas abajo). Una página php para introducir el código y verificarlo (se mostrará mas abajo). Una página php para conectar con la base de datos donde están los usuarios y los códigos de acceso (se mostrará mas abajo). Una base de datos Mysql donde se guardarán los usuarios y los códigos de acceso (se explicará mas abajo). El sistema lo que hace es mostrar en la pantalla del lcd la frase "ESPERANDO DATOS" mientras el led está en color azul parpadeante. Cuando ponemos desde la página web el código, si éste es correcto la pantalla lcd muestra "Saludos + nombre de usuario" y el led se pone de color verde. Si el código es incorrecto, no existe, la pantalla muestra "Sin acceso. Código erróneo" y muestra el led de color rojo. A los 5 segundos se resetea y vuelve a mostrar "ESPERANDO DATOS" con led azul parpadeante. Cabe decir que se puede ampliar para que, por ejemplo, accione un relé para abrir una puerta o lo que se os ocurra. Código para la placa arduino: #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); int redPin = 11; int greenPin = 10; int bluePin = 9; void setup() { Serial.begin(57600); pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); lcd.begin(16,2); lcd.backlight(); lcd.setCursor(4,0); lcd.print("ESPERANDO"); lcd.setCursor(6,1); lcd.print("DATOS"); while(!Serial.available()) { digitalWrite(bluePin, HIGH); delay(500); digitalWrite(bluePin, LOW); delay(500); } } String f = ""; void loop() { boolean has_request = false; String in = ""; if (Serial.available()) { in = ""; while (true) { while (Serial.available() == false) {} in += (char)(Serial.read()); if (in.endsWith("\r\n")) { has_request = true; break; } } } if (has_request) { char i1 = in.indexOf("GET /mensaje?f="), i2; if (i1 != -1) { i2 = in.indexOf(" ", i1+15); f = in.substring(i1+15, i2); } if (f == "aaa") { lcd.clear(); lcd.setCursor(3,0); lcd.print("SIN ACCESO"); lcd.setCursor(1,1); lcd.write("CODIGO ERRONEO"); digitalWrite(bluePin, LOW); digitalWrite(greenPin, LOW); digitalWrite(redPin, HIGH); pagina(); } else { lcd.clear(); lcd.setCursor(4,0); lcd.print("SALUDOS"); lcd.setCursor(1,1); f.replace("+", " "); lcd.print(f); digitalWrite(bluePin, LOW); digitalWrite(greenPin, HIGH); digitalWrite(redPin, LOW); pagina(); } has_request = false; } delay(5000); digitalWrite(greenPin, LOW); digitalWrite(redPin, LOW); software_Reset() ; } void pagina() { Serial.println("HTTP/1.1 200 OK"); Serial.println("Content-Type: text/html"); String sr = "<!DOCTYPE HTML>\n"; sr += "<html>\n"; sr += "<head>\n"; sr += "<meta http-equiv='Refresh' content='0;url=http://192.168.1.11/arduino/wifi/acceso/index.php'>\n"; sr += "</head>\n"; sr += "<body>\n"; sr += "</body>"; sr += "</html>"; Serial.print("Content-Length: "); Serial.print(sr.length()); Serial.print("\r\n\r\n"); Serial.print(sr); } void software_Reset() { asm volatile (" jmp 0"); } Comentario del código: Incluimos las librerías necesarias para que todo funcione correctamente. Indicamos todos los pines necesarios. Iniciamos la comunicación a 57600 baudios. Apagamos todos los colores del led y encendemos el lcd. Le decimos al lcd que muestre en pantalla "ESPERANDO DATOS" y que el led parpadee en color azul cada medio segundo. Si se inicia la comunicación serial y ésta envía "aaa" (previamente enviada por la página php) el lcd imprime "Sin acceso. Código erroneo" y el led se pone en rojo fijo. Si la página php no envía ese carácter y envía otra cadena, ésta sera el nombre de usuario, que previamente ha sido confirmada desde la base de datos al meter el código, entonces la pantalla de lcd mostrará "Saludos (nombre del usuario)" y el led se pondrá en color verde fijo. Una vez recibida la información la placa Arduino mando unos comandos (página web) para que se vuelva a mostrar el teclado (mas abajo imagen). Tanto como si el código es bueno o erróneo, a los 5 segundos se resetea y vuelve a mostrar en pantalla "ESPERANDO DATOS" y el led de color azul parpadeante. Código pagina principal php: <html> <head> <title>teclado en pantalla</title> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <META name="robots" content="NOINDEX,NOFOLLOW"> <script language="JavaScript" type="text/javascript"> // Comprueba Navegador y Plataforma del pc var clientPC = navigator.userAgent.toLowerCase(); // Coge info cliente var clientVer = parseInt(navigator.appVersion); // Coge versión navegador var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1)); var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1) && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1) && (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1)); var is_moz = 0; var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1)); var is_mac = (clientPC.indexOf("mac")!=-1); function imprm(bot) { var txtarea = document.getElementById('ta'); var tecla = new Array('1','2','3','4','5','6','7','8','9','0'); txtarea.value+=tecla[bot]; txtarea.focus(); return; } function imprM(bot) { var txtarea = document.getElementById('ta'); var teclaM = new Array txtarea.value+=teclaM[bot]; txtarea.focus(); return; } var capa1 var capa2 var ns4 = (document.layers)? true:false var ie4 = (document.all)? true:false var ns6 = (document.getElementById)? true:false function teclado() { if (ns4) { capa1 = document.c1 capa2 = document.c2 } if (ie4) { capa1 = c1.style capa2 = c2.style } if (ns6) { capa1 = document.getElementById('c1').style capa2 = document.getElementById('c2').style } } function muestra(obj) { if (ns4) obj.visibility = "show" else if (ie4) obj.visibility = "visible" else if (ns6) obj.visibility = "visible" } function oculta(obj) { if (ns4) obj.visibility = "hide" else if (ie4) obj.visibility = "hidden" else if (ns6) obj.visibility = "hidden" } function borrar() { var txtarea = document.getElementById('ta'); if ((clientVer >= 4) && is_ie && is_win) { var txtSeleccion = document.selection.createRange().text; if (document.selection) { if (!txtSeleccion) { txtarea.focus(); var Sel = document.selection.createRange(); Sel.moveStart ('character', -txtarea.value.length); curPos = Sel.text.length; txtarea.value=txtarea.value.substr(0,txtarea.value.length-1); return(curPos); } txtarea.focus(); var Sel = document.selection.createRange(); document.selection.createRange().text = ""; Sel.moveStart ('character', -txtarea.value.length); curPos = Sel.text.length; return(curPos); } } else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0)) { var selLargo = txtarea.textLength; var selEmpz = txtarea.selectionStart; var selFin = txtarea.selectionEnd; var s1 = (txtarea.value).substring(0,selEmpz); var s2 = (txtarea.value).substring(selFin, selLargo); txtarea.value = s1 + s2; return(selEmpz); } else { var selLargo = txtarea.textLength; txtarea.value = txtarea.value.substr(0,txtarea.value.length-1); var Cursor = txtarea.textLength; return(Cursor); } almznaCursor(txtarea); } function almznaCursor(textEl) { if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate(); } function PosicionCursor(pos) { var txtarea = document.getElementById('ta'); //Firefox if (txtarea .setSelectionRange) { txtarea .focus(); txtarea .setSelectionRange(pos,pos); } else if (txtarea .createTextRange) { var rango = txtarea .createTextRange(); rango.collapse(true); rango.moveEnd('character', pos); rango.moveStart('character', pos); rango.select(); } } function EliminarCaracter() { PosicionCursor(borrar()); } </script> <style type="text/css"> #juan { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); -webkit-transform: translate(-50%, -50%); } #andres { position: absolute; left: 50%; top: 70%; transform: translate(-50%, -70%); -webkit-transform: translate(-50%, -70%); } </style> </head> <body onLoad="teclado();"> <div id="juan"> <form method="POST" action=""> <input type="password" id="ta" name="pepe" size="9"><br><br> <div id="c1"> <input type="button" id="1" value="1" onclick="imprm(0);" /> <input type="button" id="2" value="2" onclick="imprm(1);" /> <input type="button" id="3" value="3" onclick="imprm(2);" /><br> <input type="button" id="4" value="4" onclick="imprm(3);" /> <input type="button" id="5" value="5" onclick="imprm(4);" /> <input type="button" id="6" value="6" onclick="imprm(5);" /><br> <input type="button" id="7" value="7" onclick="imprm(6);" /> <input type="button" id="8" value="8" onclick="imprm(7);" /> <input type="button" id="9" value="9" onclick="imprm(8);" /><br> <input type="button" id="10" value="0" onclick="imprm(9);" /> <input type="button" id="eliminar_caracter" value="Borrar" onclick="EliminarCaracter()" style="width:58px; height:20px; text-align:center; font-size:10px;" /> <br><br><input type="submit" id="60" value="ENVIAR" style="width:90px; height:20px; text-align:center; font-size:10px;"/> </div> </form> </div> <div id="andres"> <? $password = $_POST['pepe']; if(!isset($password)) { echo ""; } else { include("conex.php"); $cons = "select * from usuarios where contraseña='$password'"; $datos = mysql_query($cons,$link); if ($row = mysql_fetch_array($datos,1)) { ?> <SCRIPT LANGUAGE="JavaScript"> window.onload = function() { alert("Enhorabuena <? echo $row["usuario"]; ?>. Tu código es correcto"); }; </SCRIPT> <form name='acceso' action='http://192.168.1.254:8080/mensaje' method='GET'> <input type='hidden' name='f' value= '<? echo $row["usuario"]; ?>'> </form> <SCRIPT LANGUAGE="JavaScript">window.setTimeout(function() { document.acceso.submit(); });</SCRIPT> <? } else { ?> <SCRIPT LANGUAGE="JavaScript"> window.onload = function() { alert("El código de acceso no es correcto."); }; </SCRIPT> <form name='acceso' action='http://192.168.1.254:8080/mensaje' method='GET'> <input type='hidden' name='f' value='aaa'> </form> <SCRIPT LANGUAGE="JavaScript">window.setTimeout(function() { document.acceso.submit(); });</SCRIPT> <? } } ?> </div> </body> </html> Comentario del código: Se crea un teclado numérico para introducir el código de acceso. Compara ese código en la base de datos. Si existe ese código envía a la placa Arduino el usuario asociado a ese código, mostrando en un alert "Enhorabuena (usuario) tu código es correcto" Si no existe ese código envía a la placa Arduino la cadena aaa , mostrando en un alert "El código de acceso no es correcto". Código pagina conex.php: <? $link = mysql_connect("localhost" ,"usuario","contraseña") or die("no se da conectado"); mysql_select_db("acceso",$link) or die("no se da seleccionado"); ?> Este código no necesita comentario. En relación a la base de datos... se deberá crear una con el nombre "acceso", con una única tabla llamada "usuarios" compuesta por tres campos "id" "usuario" y "contraseña". Bueno ya está... espero que le sirva a alguien.... Saludos
  5. Saludos. Hay bases de datos públicas las cuales te las puedes bajar, por ejemplo el INE (Instituto Nacional de Estadística), y trabajar con ellas y hacer diversos estudios. Lo malo es que para trabajar con estos datos, por lo general, necesitas programas de pago y que sólo funcionan bajo windows. Pero también te dan la opción de bajártelos en formato csv y así poder importarlos a base de datos MySql. Me surgió la pega de que al ser bases de datos muy grandes el gestor de MySql, phpmyadmin, no puede con ellas, da errores múltiples, de tiempo de ejecución, etc, y después de hacer varias configuraciónes en php.ini seguía sin poder importarlas. Encontré por la red un script en bash para hacer esa importación masiva (mérito a su autor), pero me seguía fallando y le hice unos "retoques" y ahora me funciona de maravilla. En el script hay que poner el nombre de la base de datos que has creado previamente (ten en cuenta que vas a importar tablas), el usuario de la base de datos, la contraseña y la ruta del directorio donde están los archivos csv, ya sea un archivo o varios, te creará una tabla por cada archivo que haya. Aquí el script: #!/bin/bash # By brian@brianyoungblood.com to keep original files and import based on tab delimited data # orginal script based on work from Eric London. http://ericlondon.com/bash-shell-script-import-large-number-csv-files-mysql # show commands being executed, per debug #set -x # define database connectivity _db="nombre_bade_de_datos" _db_user="usuario" _db_password="contraseña" # define directory containing CSV files _csv_directory="/directorio/donde/estan/csv" # go into directory cd $_csv_directory # get a list of CSV files in directory _csv_files=`ls -1 *.csv` # loop through csv files for _csv_file in ${_csv_files[@]} do # remove file extension _csv_file_extensionless=`echo $_csv_file | sed 's/\(.*\)\..*/\1/'` # define table name _table_name="${_csv_file_extensionless}" # get header columns from CSV file, creándola como un array _header_columns=(`head -1 $_csv_directory/$_csv_file | tr ',' '\n' | sed 's/^"//' | sed 's/"$//' | sed 's/ /_/g'`) # Crea un array con los datos de la segunda fila _header_columns_numero_texto=(`head -2 $_csv_directory/$_csv_file | tail -1 | tr ',' '\n' | sed 's/^"//' | sed 's/"$//' | sed 's/ /_/g'`) _header_columns_string=`head -1 $_csv_directory/$_csv_file | sed 's/ /_/g' | sed 's/"//g'` echo "header============>${_header_columns[@]}" echo "header============>$_header_columns_string" # ensure table exists mysql -u $_db_user -p$_db_password $_db << eof CREATE TABLE IF NOT EXISTS \`$_table_name\` ( id int(11) NOT NULL auto_increment, PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_spanish2_ci eof # Se hace un bucle for con el numero de campos, si el dato de la segunda fila es numerico o texto asi crea el campo for (( c=0; c<${#_header_columns[@]}; c++ )) do if [[ ${_header_columns_numero_texto[$c]} =~ [[:alpha:]] ]] ; then mysql -u $_db_user -p$_db_password $_db --execute="alter table $_table_name add column ${_header_columns[$c]} text" else mysql -u $_db_user -p$_db_password $_db --execute="alter table $_table_name add column ${_header_columns[$c]} Float" fi done # import csv into mysql mysqlimport --local --ignore-lines=1 --fields-enclosed-by='"' --fields-terminated-by=',' --lines-terminated-by="\n" --columns=$_header_columns_string -u $_db_user -p$_db_password $_db $_csv_directory/$_csv_file done exit Edito: He mejorado un poco el script. Antes creaba todos los campos tipo texto.... ahora detecta si los datos son texto o numero y así los crea. Bueno, espero que a alguien le sirva y le funcione bien. Saludos
  6. Resultado, seguramente, de la eterna pelea entre Oracle y Google, que comenzó cuando Oracle (dueña de Java y MySQL, desde que compró Sun en 2010) procesó a Google acusando a la compañía de infringir licencias de Java en el desarrollo de Android (el caso lo ganó Google, aunque aún no se ha cerrado), MySQl continúa su camino hacia el olvido dentro de la empresa responsable por el mayor buscador de Internet existente en la actualidad. Así lo han confirmado esta semana, cuando Jeremy Cole, ingeniero senior de Google, comentó en una conferencia sobre Extremely Large Databases (XLDB), en la Universidad de Stanford, que están trabajando para migrar todos sus instancias de MySQl a MariaDB. Los detalles son comentados en The Register, en un artículo donde vemos que Google lleva trabajando con MariaDB Foundation desde principios de 2013 buscando ayuda para realizar una migración enorme en su forma de guardar datos, con miles de servidores MySQL envueltos en el proceso. Desde MariaDB están desarrollando funciones específicas para realizar la migración en Google. MariaDB (mariadb.org) es una base de datos de código abierto respaldada por Monty Widenius, quien encabezó el desarrollo original de MySQL. Es muy compatible con MySQL ya que posee las mismas órdenes, interfaces, APIs y bibliotecas, pero Google ha modificado su MySQl durante los últimos años para tener una versión personalizada, por lo que la migración puede ser más dolorosa de lo habitual en estos casos. Google abandona, así, MySQL, veremos ahora quiénes son los que siguen su camino. WordPress usa MySQL, por lo que millones de blogs en todo el mundo dependen de Oracle, ¿seguirán ellos los pasos de Google?. Fuente: http://wwwhatsnew.com/2013/09/15/google-esta-abandonando-mysql-para-migrar-a-mariadb/ PD: Creo que es la primera noticia que posteo en el foro. Básicamente he hecho un copia y pega, si hay algún problema con eso desde que tenga un ratito lo modifico con mis palabras.
×
×
  • Crear Nuevo...