Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: JOSE-CAMPOS en 6 Abril 2013, 05:38 am



Título: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: JOSE-CAMPOS en 6 Abril 2013, 05:38 am
Saludos he hecho algunos trabajos con electrónica para medir valores de sensores de temperatura, nivel, presion etc y los puedo ver en mi PC en tiempo real cada vez que cambia el valor de la lectura en el sensor cambia en la pantalla de la PC, y ahora lo que quiero y necesito es poder hacer una pagina web donde pueda mostrar esos mismos valores en tiempo real y que cuando se actualice el programa en visual, tenga la posibilidad de actualizar la pagina web tambien en tiempo real, solo necesito la forma de hacerlo ya que tengo un poco de conocimiento en VB6 y un poquito en HTML, espero haberme explicado bien, espero su ayuda, mil gracias


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: BlackM4ster en 6 Abril 2013, 10:31 am
Hola Jose espero poder ayudarte, si no sabes php, es jodido pero te paso un ejemplo:
Creamos un archivo .PHP que cuando le pasemos los valores los guarda en algun sitio (una base de datos no que sino te complicas jaja) puedes coger este Php de un ejemplo de Cookie Stealer:
recogerdatos.php
Código:
<?

$fecha=time();
$dato1 = $_GET['dato1'];
$dato2 = $_GET['dato2'];

$fff = fopen("temperaturas.txt","a"); //no es a+ porque queremos que se actualicen

$salida = "<br><table width='449' border='1' cellpadding='2' cellspacing='1' bordercolor='#000000' bgcolor='#FFFFFF'>
  <tr>
    <td width='137' rowspan='3'><div align='center'>$fecha</div></td>
  </tr>
  <tr>
    <td><div align='center'>$dato1</div></td>
  </tr>
  <tr>
    <td><div align='center'>$dato2</div></td>
  </tr>
</table>";

fwrite($fff, $salida);
fclose($fff);

echo "<script>location.href='www.google.es';</script>"; //Nos lleva a Google
?>

Desde tu programa, tendrás que acceder a la página web de la siguiente manera:
Código:
http://www.tupagina.com/recogerdatos.php?dato1=30&dato2=233

Puedes meter tantos datos como quieras. En vb6:
Código:
Option Explicit
Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Public Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal sURL As String, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Public Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer

Public Const IF_FROM_CACHE = &H1000000
Public Const IF_MAKE_PERSISTENT = &H2000000
Public Const IF_NO_CACHE_WRITE = &H4000000
    
Private Const BUFFER_LEN = 256


Public Function ActualizarDatos(dato1 As String, dato2 as string) as string
    Dim sBuffer As String * BUFFER_LEN, iResult As Integer, sData As String
    Dim hInternet As Long, hSession As Long, lReturn As Long

    'get the handle of the current internet connection
    hSession = InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0)
    'get the handle of the url

    dim sURL as string
    sURL = "http://www.tupagina.com/recogerdatos.php?dato1="&dato1&"&dato2="&dato2

    If hSession Then hInternet = InternetOpenUrl(hSession, sURL, vbNullString, 0, IF_NO_CACHE_WRITE, 0)
    'if we have the handle, then start reading the web page
    If hInternet Then
        'get the first chunk & buffer it.
        iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
        sData = sBuffer
        'if there's more data then keep reading it into the buffer
        Do While lReturn <> 0
            iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
            sData = sData + Mid(sBuffer, 1, lReturn)
        Loop
    End If
 
    'close the URL
    GetUrlSource = sData
End Function

y en cualquier parte de tu código:
Código:
ActualizarDatos(500,36) //Por ejemplo

Con esto, la pagina guardará los últimos datos que le pases en el archivo de texto, que puede ser leido en otro php (iframe por ejemplo) asi:
Código:
<?php
readfile ("http://www.tupagina.com/temperaturas.txt")
?>

Espero haberte ayudado  ;-)


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: JOSE-CAMPOS en 6 Abril 2013, 14:04 pm
Saludos Black Master, estoy muy agradecido veo que eres bueno en esto y ademas debo confesar que me sorprende la voluntad de ayudar que tienes y las molestias que te tomaste al hacerlo, como dijiste si no se PHP, me sera cuesta arriba, sin embargo solo necesito saber como actualizar algunos campos en una pagina web, voy hacer honesto, no entendí mucho de lo que me enviaste pero ya mismo me pongo a meterle el pecho para familiarizarme y poder resolver lo que necesito, mil gracias nuevamente y estoy casi seguro que seguiré preguntándote al respecto, Saludos

PD: te iba a enviar una imagen pero no supe hacerlo por aca



Amigo Master, hice todo tal cual me indicas y no me corre, el archivo php lo subie a http://www.jose-campos.com/prueba/recogerdatos.php  pero al ejecutarlo en la web aparece en blanco pense dentro de mi ignorancia que apareceria  dos label con sus valores, obviamente hice algo o todo mal.

el formulario en visual debe llevar un control especial? algun boton? etc? mil gracias de antemano


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: BlackM4ster en 7 Abril 2013, 10:34 am
A ver, vamos por pasos  :rolleyes:

Las imagenes las puedes mandar subiendolas a http://imageshack.us por ejemplo y poniendo el enlace

El archivo que has subido no sirve, el codigo está mal puesto (cuando esté bien puesto, debería redirigirte a Google)
No quites la linea
Código:
echo "<script>location.href='www.google.es';</script>"; //Nos lleva a Google
que esa linea nos sirve para comprobar que el resto del código se ha ejecutado.

Al principio he pensado que tu servidor web no soportaba PHP pero luego, he visto que algún momento te funcionó y no te diste cuenta, cambiaste algo, y adiós  :laugh::
Código:
http://www.jose-campos.com/prueba/temperaturas.txt
Fijate que, aunque no le pusiste datos (.php?dato1=aosdnks&dato2=sdasd) al final de la url, la tabla si que te la guardó y eso es buena señal.
Te recomiendo que borres el codigo fuente entero de ese archivo, pongas el mio exactamente igual, accedas a tu url pasandole valores
Código:
http://www.jose-campos.com/prueba/recogerdatos.php?dato1=aosdnks&dato2=sdasd
y consultes el archivo http://www.jose-campos.com/prueba/temperaturas.txt (http://www.jose-campos.com/prueba/temperaturas.txt)

Te falta por crear un archivo más, ver.php que sirve para ver las temperaturas
Código:
<?php
readfile ("http://www.jose-campos.com/prueba/temperaturas.txt")
?>

Cuando hagas esto, avísame y miro a ver si funciona que entre semana tengo clases y no puedo estar en el ordenador


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: JOSE-CAMPOS en 7 Abril 2013, 17:40 pm
Saludos Master y gracias nuevamente:

ahora si va bien el código php, solo tuve que poner http:// antes de el link de google y en la linea 1 php despues del ?,  sin embargo pero aun no puedo actualizar los datos desde VB6 obviamente algo hice mal, lo hice de la siguiente manera

en un modulo puse esta parte

Option Explicit
Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Public Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal sURL As String, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Public Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer

Public Const IF_FROM_CACHE = &H1000000
Public Const IF_MAKE_PERSISTENT = &H2000000
Public Const IF_NO_CACHE_WRITE = &H4000000
     
Private Const BUFFER_LEN = 256

EN EL CODIGO DEL FORMULARIO COLOQUE ESTO

Public Function ActualizarDatos(dato1 As String, dato2 As String) As String
    Dim sBuffer As String * BUFFER_LEN, iResult As Integer, sData As String
    Dim hInternet As Long, hSession As Long, lReturn As Long

    'get the handle of the current internet connection
    hSession = InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0)
    'get the handle of the url

    Dim sURL As String
 
    sURL = "http://www.jose-campos.com/prueba/recogerdatos.php?dato1=50&dato2=98"
   

    If hSession Then hInternet = InternetOpenUrl(hSession, sURL, vbNullString, 0, IF_NO_CACHE_WRITE, 0)
    'if we have the handle, then start reading the web page
    If hInternet Then
        'get the first chunk & buffer it.
        iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
        sData = sBuffer
        'if there's more data then keep reading it into the buffer
        Do While lReturn <> 0
            iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
            sData = sData + Mid(sBuffer, 1, lReturn)
        Loop
    End If
 
    'close the URL
    GetUrlSource = sData
End Function

ActualizarDatos = (500)  '''''OJO solo me corrio asi... porque de esta forma  no me funkaba ActualizarDatos (500,36)

otra pregunta esa numeracion que se genera en la parte central de la tabla en ver.php a que se refiere? mil gracias y de ti quedo atento


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: BlackM4ster en 7 Abril 2013, 17:53 pm
jose, estoy conectado asi que no te vayas


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: JOSE-CAMPOS en 7 Abril 2013, 17:53 pm
ok aca estare


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: BlackM4ster en 7 Abril 2013, 17:56 pm
Pon exactamente esta funcion:

Código:
Public Function ActualizarDatos(dato1 As String, dato2 as string) as string
    Dim sBuffer As String * BUFFER_LEN, iResult As Integer, sData As String
    Dim hInternet As Long, hSession As Long, lReturn As Long

    'get the handle of the current internet connection
    hSession = InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0)
    'get the handle of the url

    dim sURL as string
    sURL = "http://www.jose-campos.com/prueba/recogerdatos.php?dato1="&dato1&"&dato2="&dato2

    If hSession Then hInternet = InternetOpenUrl(hSession, sURL, vbNullString, 0, IF_NO_CACHE_WRITE, 0)
    'if we have the handle, then start reading the web page
    If hInternet Then
        'get the first chunk & buffer it.
        iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
        sData = sBuffer
        'if there's more data then keep reading it into the buffer
        Do While lReturn <> 0
            iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
            sData = sData + Mid(sBuffer, 1, lReturn)
        Loop
    End If
 
    'close the URL
    GetUrlSource = sData
End Function

y la llamas asi:
Código:
ActualizarDatos("500º","60º")


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: JOSE-CAMPOS en 7 Abril 2013, 18:06 pm
en que parte coloco esta linea?

ActualizarDatos("500º","60º")

 Me disculpo por mi ignoracia


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: BlackM4ster en 7 Abril 2013, 18:06 pm
pues cuando obtengas los datos, despues


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: JOSE-CAMPOS en 7 Abril 2013, 18:11 pm
donde quiera que lo coloque me da error



no tendra algo que ver la (,) que lleva? porque me dice que se esperaba "="



aca tambien me da error dice que se esperaba fin de instruccion

 sURL = "http://www.jose-campos.com/prueba/recogerdatos.php?dato1="&dato1&"&dato2="&dato2


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: BlackM4ster en 7 Abril 2013, 18:28 pm
Código:
sURL = "http://www.jose-campos.com/prueba/recogerdatos.php?dato1=" & dato1 & "&dato2=" & dato2
Ponlo asi


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: JOSE-CAMPOS en 7 Abril 2013, 18:38 pm
ya no me da error esa linea pero me sigue dando error la ultima me dice tambien que se esperaba (=)

aca el codigo tal cual como lo puse


Public Function ActualizarDatos(dato1 As String, dato2 As String) As String
    Dim sBuffer As String * BUFFER_LEN, iResult As Integer, sData As String
    Dim hInternet As Long, hSession As Long, lReturn As Long

    'get the handle of the current internet connection
    hSession = InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0)
    'get the handle of the url

    Dim sURL As String
    'sURL = "http://www.jose-campos.com/prueba/recogerdatos.php?dato1=&dato1&dato2=&dato2"
    sURL = "http://www.jose-campos.com/prueba/recogerdatos.php?dato1=" & dato1 & "&dato2=" & dato2

    If hSession Then hInternet = InternetOpenUrl(hSession, sURL, vbNullString, 0, IF_NO_CACHE_WRITE, 0)
    'if we have the handle, then start reading the web page
    If hInternet Then
        'get the first chunk & buffer it.
        iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
        sData = sBuffer
        'if there's more data then keep reading it into the buffer
        Do While lReturn <> 0
            iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
            sData = sData + Mid(sBuffer, 1, lReturn)
        Loop
    End If
 
    'close the URL
    GetUrlSource = sData
End Function

ActualizarDatos ("500º","60º")


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: BlackM4ster en 7 Abril 2013, 18:43 pm
marcame en negrita la linea que da error porfavor


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: JOSE-CAMPOS en 7 Abril 2013, 18:46 pm
esta es la que me da error me dice que seesperaba el signo =, la puse final del codigo

ActualizarDatos ("500º","60º")

[MOD] No hagas doble o triple post como los anteriores, usa el botón "modificar" para añadir comentarios. Gracias.


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: BlackM4ster en 7 Abril 2013, 18:48 pm
a ver, pero donde la estás poniendo?
pasame el codigo fuente ENTERO


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: JOSE-CAMPOS en 7 Abril 2013, 18:51 pm
como te explique antes coloque parte del codigo en un modulo y la otra parte en el formulario aca te lo envio

ESTO LO PUSE EN EL MODULO1

Option Explicit
Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Public Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal sURL As String, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Public Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer

Public Const IF_FROM_CACHE = &H1000000
Public Const IF_MAKE_PERSISTENT = &H2000000
Public Const IF_NO_CACHE_WRITE = &H4000000
     
Private Const BUFFER_LEN = 256



Y ESTO EN EL CODIGO DEL FORMULARIO:.


   Dim hInternet As Long, hSession As Long, lReturn As Long

    'get the handle of the current internet connection
    hSession = InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0)
    'get the handle of the url

    Dim sURL As String
    'sURL = "http://www.jose-campos.com/prueba/recogerdatos.php?dato1=&dato1&dato2=&dato2"
    sURL = "http://www.jose-campos.com/prueba/recogerdatos.php?dato1=" & dato1 & "&dato2=" & dato2

    If hSession Then hInternet = InternetOpenUrl(hSession, sURL, vbNullString, 0, IF_NO_CACHE_WRITE, 0)
    'if we have the handle, then start reading the web page
    If hInternet Then
        'get the first chunk & buffer it.
        iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
        sData = sBuffer
        'if there's more data then keep reading it into the buffer
        Do While lReturn <> 0
            iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
            sData = sData + Mid(sBuffer, 1, lReturn)
        Loop
    End If
 
    'close the URL
    GetUrlSource = sData
End Function

ActualizarDatos ("500º","60º")


Private Sub Form_Load()

End Sub



Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: JOSE-CAMPOS en 7 Abril 2013, 19:23 pm
cuando envio esto manualmente desde mi navegador si actualiza los datos

http://www.jose-campos.com/prueba/recogerdatos.php?dato1=78 & dato2=241


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: BlackM4ster en 7 Abril 2013, 19:25 pm
si, la funcion la tienes que colocar en TU codigo, despues de haber conseguido los datos que quieres


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: JOSE-CAMPOS en 7 Abril 2013, 19:27 pm
el problema es que el VB no esta comunicándose con la web


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: JOSE-CAMPOS en 7 Abril 2013, 19:42 pm
AMIGO MASTER:

 tuve el atrevimiento de colocar en el codigo  PHP en vez de google.es le puse ver.php asi me muestra el resultado de una vez

echo "<script>location.href='http://www.jose-campos.com/prueba/ver.php';</script>";

y para probarlos introduje directamente esto en el navegador y va bien

http://www.jose-campos.com/prueba/recogerdatos.php?dato1=999%20&%20dato2=666

solo falta ver la razon por la cual el VB6 no hace su trabajo


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: JOSE-CAMPOS en 7 Abril 2013, 23:11 pm
Voy a seguir buscando a ver si consigo un codigo en VB6 que haga esa funcion, cualquier cosa te mantengo informado muchas gracias siempre


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: JOSE-CAMPOS en 7 Abril 2013, 23:47 pm
Creo que encontre algo voy a estudiarlo bien aunque creo que le faltan unas modificaciones, luego te lo envio


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: JOSE-CAMPOS en 9 Abril 2013, 14:11 pm
SALUDOS MASTER BLACK, ya pude resolver mi necesidad, es decir u amigo me la resolvio, el hombre es un Crack en VB6 e hizo algunas magias con PHP, la pagina solo actualiza los valores necesarios cada minuto sin necesidad de refrescar la pagina completa ya que lleva imagenes y seria una fastidio, aca te dejo la direccion que estamos probando y la que quedara finalmente es la imagen que ves abajo lo que debe actualizase son los cuadros de colores

El me dijo que subiria la informacion aca al foro para compartirla

http://reporteslegales.com/josecampos/



(http://img841.imageshack.us/img841/9658/basegs.jpg) (http://imageshack.us/photo/my-images/841/basegs.jpg/)

Uploaded with ImageShack.us (http://imageshack.us)


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: YAcosta en 17 Abril 2013, 04:20 am
Saludos.

Bueno, lo que hice básicamente fue conectar la aplicación VB6 a la base de datos alojado en un hosting y luego solo bastaba leer desde la web la información de esa BD, para actualizar sin recargar use AJAX, no creo que se requiera publicacion de codigo pero si alguien le interesa lo publico con gusto (la verdad no estoy en la pc de casa).

Saludos


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: BlackM4ster en 17 Abril 2013, 14:44 pm
Bien, lo has hecho con base de datos jajaj yo le decia de hacerlo con un txt porque no sabía pero si se lo has apañado, mejor. Asegurate de que no sea vulnerable a SQLI  :silbar:

Me apetece verlo, donde está la dirección?


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: YAcosta en 17 Abril 2013, 17:00 pm
Hola amigo:
Esta es la web:
http://reporteslegales.com/josecampos/

Si no ves cambios en vivo es porque tenemos la aplicación apagada.

Y si, efectivamente hay cierto riesgo con el inyection pero hasta donde converse con Jose este tema no sera publico, claro que actualmente si lo esta pero es porque esta en pruebas en uno de mis dominios para testeos, igual se deben tomar las contingencias necesarias como la integridad, el acceso restringido, etc etc.

Saludos


Título: Re: Actualizar campos en pagina web desde un programa de visual basic
Publicado por: BlackM4ster en 17 Abril 2013, 20:57 pm
 ;-) ha quedado muy bien