Tolong pilih kategori sesuai, jenis posting (diskusi atau bukan) dan sertakan tag/topik yang sesuai seperti komputer, java, php, mysql, dll. Promosi atau posting tidak pada tempatnya akan kami hapus!
- Bagi Anda yang ingin mendaftar, baca link berikut:
http://diskusiweb.com/discussion/50491/how-to-registrasi-diskusiweb-com-baca-ini-terlebih-dahulu
- Cara menyisipkan kode program supaya tampil rapi dan terformat dengan baik di diskusiweb.com: http://www.diskusiweb.com/discussion/50415/cara-menyisipkan-kode-program-di-diskusiweb-com
- Cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

TOLONG: Post Data ke Web Pake VB 6

Salam semua,
Gue butuh bantuan neh, kasusnya begini:

Saya membuat 2 buah program, desktop dan web, dimana yang desktop tersebut dibuat menggunakan VB 6.0 dan yang Web menggunakan PHP.

Nah web tersebut hanya untuk menampilkan data yang berada didalam database MySQL aja, sedangkan yg desktop tersebut digunakan untuk input data ke dalam database MySQL tersebut.

Nah karena port MySQL tidak saya aktifkan (untuk masalah keamanan), maka saya membuat lagi sebuah program script PHP yang berfungsi untuk menerima inputan dari aplikasi di desktop tadi dan nantinya diteruskan ke database untuk disimpan.

Saya sudah mencoba menggunakan metode GET, misalnya: http://www.alamat.com/data/app/save.php?sNama=Wahyu&sAlamat=Solo&sUmur=27. Dengan menggunakan metode GET tersebut bisa, namun sekali lagi dengan pertimbangan beberapa faktor yaitu keamanan dan data yg dikirim dalam jumlah yg besar dan panjang sehingga gak mungkin untuk menggunakan metode GET.

Oleh karena itu saya ingin menggunakan metode POST hanya saya tidak tahu gimana cara untuk melakukan hal tersebut menggunakan VB... :(

Adakah dari teman2 yang bisa membantu atau mungkin ada yg udah pernah buat??? Dengan segala kerendahan hati, saya minta tolong bantuannya... plisss... :(

Sebelum dan sesudahnya saya ucapkan banyak2 terima kasih.

Salam,

Wahyu Primadi

Comments

  • Kalau aplikasi dekstopnya cuma untuk input kan bisa langsung dari vb? Pakai dsn myodbc. Donwload di situsnya mysql

    Atau server mysqlnya di lokasi yang lain?
  • mas goku... minta jelasin yang detail donk...
    aku mau buat aplikasi yang membaca data dari vb lalu memasukan data tersebut ke DB postgre melalui dan dapat dibaca juga oleh PHP.
    mas kok skr jarang Online??? pindah kerja lagi yah?
  • Kalau anda familiar dengan ajax, ide yang saya tawarkan hampir sama dengan teknologi itu.
    Tambahkan referensi project anda ke Microsoft XML (versi berapa aja, lebih baik yang terakhir, misalnya c:\\windows\\system32\\msxml6.dll)

    lalu coba kode berikut ini:

    Dim x As New XMLHTTP60
    Dim sValues As String
    sValues = "userpolisnummer=123456&secretcode=123456" ' value to be posted
    x.open "POST", _
    "http://www.mysecretdata.net/save.php", _
    False
    x.setRequestHeader "Content-Type", _
    "application/x-www-form-urlencoded"
    x.setRequestHeader "Content-length", _
    Len(sValues)
    'post it'
    x.send sValues

    'get the response header
    Debug.Print x.getAllResponseHeaders
    'get the response text
    Debug.Print x.responseText


    sValues adalah field-field web form yang akan diterima oleh login.php.

    kira-kira di save.php bisa ditangkap valuesnya seperti ini:
    $userpolisnummer = $_POST['userpolisnummer'];

    dan responsenya sebaiknya dalam format xml.

    tapi kalo untuk upload file, cara ini tidak akan berhasil. Anda harus pake winsock untuk mengirimkan data.
  • Originally posted by Goku
    Kalau aplikasi dekstopnya cuma untuk input kan bisa langsung dari vb? Pakai dsn myodbc. Donwload di situsnya mysql

    Atau server mysqlnya di lokasi yang lain?

    mas goku 99% server hostingan biasanya port MySQL nya di tutup atau di disable dan hanya bisa diakses dari localhost (biasanya dengan alasan security)... jd gak mungkin pake connector MyODBC. Makanya saya bikin aplikasi web nya juga pake PHP ya mirip kaya tunnel gt lah.

    Waktu berlalu.....

    Sekarang masalah sudah terpacahkan. Saya melakukannya dengan menggunakan referensi MSXML. Yup seperti yg dibilang sama vberror13... cuma sayang saya bacanya baru sekarang :(

    Bahkan kerennya lagi pake MSXML gak cuma bisa buat send data pake method POST aja tp juga bisa buat UpLoad / Send File dengan method POST juga. untuk UpLoad File Encryption Type dari code nya vberror13 itu diganti dari "application/x-www-form-urlencoded" jadi "multipart/form-data". ini potongan code dari project gue pas bagian send data sekaligus upload file :
    Private Function UpLoadData(strFilename As String, strTargetURL As String) As Boolean
    Dim oHttp As XMLHTTP
    Dim strBody As String
    Dim aPostData() As Byte
    Dim oRandomKey As String
    Dim oSignature As String
    Dim cMD5 As clsMD5
    Dim strResponse As String
    Dim nFile As Long
    Dim strText As String
    
    On Error GoTo ErrorHandler
    'Open The File
    nFile = FreeFile
    Open strFilename For Binary As #nFile
    strText = String(LOF(nFile), " ")
    Get #nFile, , strText
    Close #nFile
    
    oRandomKey = GenerateRandomKey
    
    Set cMD5 = New clsMD5
    oSignature = cMD5.DigestStrToHexStr(oRandomKey)
    
    Set oHttp = New XMLHTTP
    
    oHttp.Open "POST", strTargetURL, False
    oHttp.setRequestHeader "Content-Type", "multipart/form-data, boundary=AaB03x"
    strBody = _
       "--AaB03x" & vbCrLf & _
       "Content-Disposition: form-data; name=""PageAction""" & vbCrLf & vbCrLf & _
       "__UPLOAD__" & vbCrLf & _
       "--AaB03x" & vbCrLf & _
       "Content-Disposition: form-data; name=""Vendor""" & vbCrLf & vbCrLf & _
       "WAHYU" & vbCrLf & _
       "--AaB03x" & vbCrLf & _
       "Content-Disposition: form-data; name=""RandomKey""" & vbCrLf & vbCrLf & _
       oRandomKey & vbCrLf & _
       "--AaB03x" & vbCrLf & _
       "Content-Disposition: form-data; name=""FileSize""" & vbCrLf & vbCrLf & _
       sFileSize & vbCrLf & _
       "--AaB03x" & vbCrLf & _
       "Content-Disposition: form-data; name=""FileSignature""" & vbCrLf & vbCrLf & _
       sFileSignature & vbCrLf & _
       "--AaB03x" & vbCrLf & _
       "Content-Disposition: form-data; name=""Kode""" & vbCrLf & vbCrLf & _
       strKode & vbCrLf
       
    strBody = strBody & "--AaB03x" & vbCrLf & _
       "Content-Disposition: form-data; name=""UpLoadBy""" & vbCrLf & vbCrLf & _
       strKode & vbCrLf & _
       "--AaB03x" & vbCrLf & _
       "Content-Disposition: form-data; name=""Signature""" & vbCrLf & vbCrLf & _
       oSignature & vbCrLf & _
       "--AaB03x" & vbCrLf & _
       "Content-Disposition: attachment; name=""FILE1""; filename=""" & strFilename & """" & vbCrLf & _
       "Content-Type: text/plain" & vbCrLf & vbCrLf & _
       strText & vbCrLf & _
       "--AaB03x--"
    
    aPostData = StrConv(strBody, vbFromUnicode)
    oHttp.send aPostData
    
    strResponse = oHttp.responseText
    
    If ReadTag(strResponse, "<STATUS>", "</STATUS>") = "1" Then
        'MsgBox "UpLoad Data Berhasil...", vbInformation, App.Title
        
        UpLoadData = True
    Else
        MsgBox "UpLoad Data Gagal...!!!", vbExclamation, App.Title
        
        Call ReadServerMessage(strResponse)
        
        UpLoadData = False
    End If
    
    GoTo LastSub
    On Error GoTo 0
    Exit Function
    
    ErrorHandler:
    MsgBox "Error : (" & Err.Number & ") " & Err.Description, vbExclamation, App.Title
    UpLoadData = False
    GoTo LastSub
    Exit Function
    
    LastSub:
    On Error Resume Next
    Set cMD5 = Nothing
    Set oHttp = Nothing
    On Error GoTo 0
    End Function
    

    hehehehehe... :cool:
    berhasil... berhasil... hore... :D

    Semoga Membantu
  • Kang Mas kl post data record per record saat klik simpan jd up to date, script yg di rubah yg mana, trus koneksi ke database web hosting nya yg mana, kami pun sama sedang bikin skripsi dg 2 program dan database ada di web hosting yang terkunci port-nya,
    mohon pencerahannya dari para master.

    nb:kami mahasiswa Akuntansi, belajar vb secara otodidak:(
  • Kang Mas kl post data record per record saat klik simpan jd up to date, script yg di rubah yg mana

    Hmm... kalo saya senengnya yg di server-side-nya yg di rubah, tambahin action misalnya. Nah trus yg desktop ngirim ID sama value yg berubah beserta parameter actionnya (ADD, DELETE, UPDATE). Parameter action tsb terserah, anda define sendiri di script servernya, misal (contoh PHP):
    if ($_POST['MyAction'] == "ADD"){
       // Kondisi Add Disini
    }elseif($_POST['MyAction'] == "DELETE"){
       // Kondisi DELETE Disini
    }elseif($_POST['MyAction'] == "UPDATE"){
       // Kondisi UpDate Disini
    }
    

    trus koneksi ke database web hosting nya yg mana

    liat code yg saya tulis pada posting sebelumnya di atas, dan perhatikan pada baris code berikut:
    oHttp.Open "POST", strTargetURL, False
    

    itu adalah untuk buka koneksi ke web server, dimana variabel strTargetURL berisi alamat ke file server-side scripting di server (misal PHP, ASP, ColdFussion, dll). Jika di tulis lengkap apa adanya, code-nya akan tampak seperti berikut:
    oHttp.Open "POST", "http://www.wahyuprimadi.com/app/svr/save_data.php", False
    

    Disitu saya menggunakan PHP untuk melanjutkan data yang dikirim dari VB ke web server trus ke database MySQL. Urutannya sebagai berikut:

    VB -> Internet -> Apache -> PHP -> MySQL

    dan saya menggunakan PHP karena port MySQL di disable / gag bisa di akses dari luar selain dari localhost.

    Semoga membantu
  • Tambahan dari saya:

    Setelah lama program saya tersebut berjalan akhirnya ditemukan satu masalah ketika di jalankan di kantor yg baru. Dimana kantor saya yg baru untuk koneksinya harus melalui proxy server. Nah karena harus melalui proxy server tersebut maka code seperti yg saya tulis terdahulu akan gagal melakukan koneksi (dianggap tidak konek).

    Untuk pemecahannya kita harus define juga apakah akan meggunakan proxy untuk konek atau tidak. Jika iya, define lagi proxy address-nya dan proxy port-nya (sama user dan password-nya juga jika dibutuhkan).

    Yg saya tau ada 3 macam konfigurasi proxy yg dapat digunakan, yaitu:

    1. Direct Internet Connection.
    Tidak menggunakan proxy
    2. Use The WinHTTP Proxy Configuration.
    Menggunakan setting dari WinHTTP, ada di registry. Baca manualnya untuk lebih lengkapnya.
    3. Manual Proxy Configuration.
    Menentukan sendiri setting proxy


    dengan mengacu pada code yg saya tulis sebelumnya, berikut adalah potongan code yg harus ditambahkan untuk melakukan konfigurasi proxy:

    Direct Internet connection:
    oHttp.setProxy SXH_PROXY_SET_DIRECT
    

    Use The WinHTTP Proxy Configuration
    oHttp.setProxy SXH_PROXY_SET_PRECONFIG
    

    Manual Proxy Configuration
    oHttp.setProxy SXH_PROXY_SET_PROXY, "10.1.1.212", 8080
    

    dimana 10.1.1.212 adalah alamat proxy address-nya dan 8080 adalah nomor port proxy-nya.

    Jadi kalo postingan code saya sebelumnya di modif dengan di tambahkan pendefinisian proxy akan tampak sebagai berikut:
    Set oHttp = New XMLHTTP
    
    'Configuring Proxy to Use
    If ProxyConfig = 0 Then 'Don't Use Proxy (Direct Connection)
        oHttp.setProxy SXH_PROXY_SET_DIRECT
    ElseIf ProxyConfig = 1 Then 'Use Internet Explorer Proxy Settings
        oHttp.setProxy SXH_PROXY_SET_PROXY, CurrentProxyAddress, CurrentProxyPort
    ElseIf ProxyConfig = 2 Then 'Use WinHTTP Proxy Settings
        oHttp.setProxy SXH_PROXY_SET_PRECONFIG
    ElseIf ProxyConfig = 3 Then 'Manual Proxy Configuration
        oHttp.setProxy SXH_PROXY_SET_PROXY, CurrentProxyAddress, CurrentProxyPort
    Else 'No Proxy Configuration Detected... Use Direct Internet Connection
        oHttp.setProxy SXH_PROXY_SET_DIRECT
    End If
    
    oHttp.Open "POST", strTargetURL, False
    

    Dimana variabel CurrentProxyAddress berisi alamat proxy address dan variabel CurrentProxyPort berisi nomor port proxy.

    Semoga membantu

    Salam...

    ^_^
  • Terima kasih Kang Mas,

    kami coba dulu script dari kang mas, kl nanti ada error boleh minta tolong pencerahan lebih lanjut ...
  • hehehe...
    aku kena masalah nih kek juga nih...
    ak dah nyoba pake script dari vberror13, tp malah muncul error,
    FYI: ak pake localhost, MSXML versi 5 (ga punya v 6)

    ini script yang kubikin (ngopas dari punya vberror13 sih :P):
    Private Sub Command1_Click()
    MsgBox mdlPostData.PostData("data1=" & Text1.Text & "&data2=" & Text2.Text, "http://localhost/PostData/save.php")
    End Sub
    
    Public Function PostData(strData As String, strTarget As String) As Boolean
    Dim x As New XMLHTTP
    
    strData = "submit=yes&" & strData ' value to be posted
    x.open "POST", strTarget, False
    x.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" '"multipart/form-data"
    x.setRequestHeader "Content-length", Len(strData)
    
    x.send StrConv(strData, vbFromUnicode) 'post it'
    
    Debug.Print x.getAllResponseHeaders 'get the response header
    Debug.Print x.responseText 'get the response text
    End Function
    

    nah, dari script itu, pas metode send, muncul error kaya gini: The download of the specified resource has failed.
    hmm.. ada yang bisa bantu ngga? itu kira2 kenapa ya?
  • saya sudah coba praktekan cuman masih gagal. cuman errornya berbeda dengan punya yudhist39


    file save.php:

    <?
    //save.php
    
    $host = "localhost:3307";
    $user = "root";
    $pwd = "";
    $db = "apotek";
    
    $conn = mysql_connect($host,$user,$pwd) or die(mysql_error());
    mysql_select_db($db,$conn) or die(mysql_error());
    
    
    $kd = $_POST['kd'];
    $nm = $_POST['nm'];
    
    if(isset($kd)){
    	
    	mysql_query("insert into obat (kd_obat,nm_obat) values('$kd','$nm')")
    		or die("Gagal Simpan " . mysql_error());
    }else
    {	
    	
    	echo "Tidak disimpan !";
    }
    
    

    dan untuk code vb6nya:
    Private Sub Command1_Click()
            
        PostData "kd=" & Text1.Text & "&nm=" & Text2.Text, "http://localhost/vbphp/save.php"
    
    End Sub
    
    
    Public Function PostData(strData As String, strTarget As String) As Boolean
        Dim x As New XMLHTTP
        
        strData = strData     '"submit=yes&" & ' value to be posted
        x.open "POST", strTarget, False
        x.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" '"multipart/form-data"
        x.setRequestHeader "Content-length", Len(strData)
        
        x.send StrConv(strData, vbFromUnicode) 'post it'
        
        Debug.Print x.getAllResponseHeaders 'get the response header
        Debug.Print x.responseText 'get the response text
    End Function
    


    Message ketika dijalankan:
    Date: Mon, 10 Nov 2008 10:43:47 GMT
    Server: Apache/2.2.8 (Win32) PHP/5.2.6
    X-Powered-By: PHP/5.2.6
    Content-Length: 16
    Keep-Alive: timeout=5, max=100
    Connection: Keep-Alive
    Content-Type: text/html
    
    
    Tidak disimpan !
    

    nah tapi ketika saya jalan kan proses di vb6nya saya selalu mendaptakan persan "Tidak disimpan !" ternya setelah saya coba cek variabel (php) $kd dan $nm tidak mempunyai nilai.

    apa yang salah dengan code saya diatas.

    terima kasih
  • wah, ucup... kirain mo ngasih solusi :P ternyata nanya juga :D
  • Gpp kok jeng, namanya juga senasib :D :P
Sign In or Register to comment.