Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: PHP, VB.NET: [vb2010] tiedostoon kirjoittaminen ja lukeminen serveriltä

jokke568 [23.04.2011 23:00:04]

#

Hei

Miten pitäisi lähteä liikkeelle kun haluaisin, että ohjelmani lukee ja kirjoittaa serverille(? palvelimelle, jossa tilaa kotisivuille). Haluaisin; että pystyn käyttämään ohjelmaa koneilta joihin se on asennettu niin että ajantasalla olevan tiedon pystyy avaamaan ja tallentamaan...

Olen käyttänyt random tannennus-muutoa.

kun ei ole niin yksinkertaista, että
fileopen(1,"http://kolumbus.fi/omakotisivu/tiedostot/testi.rnd", random,shared, jne..."

Jaksaisiko joku vähän auttamaan kun ei ole minkäänlaista kokemus nettiin liittyvästä...

Kiitos jo etukäteen...

Jokotai [24.04.2011 11:06:59]

#

"lukee ja kirjoittaa serverille", siis minne.
Tuohon, että vain ajantasalla olevat ohjelmat voivat käyttää palvelua, niin ainakin itse tekisin versio tiedoston, jossa lukee versio tyyliin: "1.01.241"

jokke568 [24.04.2011 18:29:32]

#

Eli hakee tietokannasta käsiteltävän tiedon esimerkiksi henkilön puhelinnumeron. Tietokantasijaitsisi jollain palvelimella, esim serverillä(?) mihin kotisivut voi ladata. Kotisivuja en ole koskaan tehnyt mutta ymmärtääkseni nekin sijaitsevat jollain serverillä jonkin moisina tiedostoina?

Nyt kun avaan tiedoston omalta koneelta tai paikallisverkosta niin onnistuu kun olen koneella. Mutta miten onnistuu tietokannasta tiedon hakeminen jos olen tietokoneella joka ei ole samassa paikallisverkossa.

Pahoittelen aikaisemman viestin epäselkeyttä.

Jokotai [24.04.2011 21:24:24]

#

Jotta ymmärtäisit palvelin toiminnan, niin suosittelisin lukemaan tämän oppaan:
https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=netal
Oppaita, jotka käsittelevät VB:tä internetohjelmoinnissa:
http://www.webbasedprogramming.com/Web-Database-Developers-Guide-with-Visual-Basic-5/
http://www.bigresource.com/VB-Internet-connect-to-database--8dbCU7mBDJ.html#sMb00qHH8i

neau33 [28.04.2011 18:09:26]

#

Moi jokke568!

Oletetaan, että kotisivut ovat elisan palvelimella (www.elisanet.fi).
Tällöin ehkä helpoin tapa lukea/editoida/kirjoitella palvelimella olevia yksittäisiä kotisivutilan tiedostoja, omalla VB.NET (Windows.Forms) ohjelmalla, olisi käytellä ftp-siirtoa.
Oletetaan, että kotisivusi löytyy osoitteesta http://www.elisanet.fi/jokke568/kotisivut ja sivustotilasta löytyisi alihakemisto tiedostot ja em. alihakemistosta tiedosto testi.txt niin voisit lukea tiedoston oheisen esimerkkiohjelman tekstiruutuun textBox5 kirjoittamalla tekstiruutuihin textBox1: www.elisanet.fi, textBox2: käyttäjätunnuksesi, textBox3: salasanasi, textBox4: tiedostot/testi.txt & klikkaamalla commandButton1 nappia.
Voisit editoida tiedoston sisältöä muokkaamalla textBox5 tekstiä ja painalla commandButton2 nappia

Imports System.IO
Imports System.Net
Imports System.Text

Public Partial Class MainForm

   Private MyFtpRequest As FtpWebRequest = Nothing

   Public Sub New()
      Me.InitializeComponent()
   End Sub

   Sub Button1_Click(sender As Object, e As EventArgs)

      For i As Integer = 1 To 4
         Dim txtbox As TextBox = _
         CType(Me.Controls("textBox" & CStr(i)), TextBox)
         If txtbox.Text.Trim = String.Empty Then
            txtbox.Focus:   Exit Sub
         End If
         txtbox = Nothing
      Next

      Dim server As String = textBox1.Text
      Dim remotefile As String = _
      "ftp://" + server + "/" + textBox4.Text
      Dim username As String = textBox2.Text
      Dim password As String = textBox2.Text

      MyFtpRequest = _
      CType(WebRequest.Create(remotefile), FtpWebRequest)
      MyFtpRequest.Credentials = _
      New NetworkCredential(textBox2.Text, textBox3.Text)
      MyFtpRequest.KeepAlive = False
      MyFtpRequest.UseBinary = True
      MyFtpRequest.Method = _
      WebRequestMethods.Ftp.DownloadFile

      Using FtpResponse As FtpWebResponse = _
      CType(MyFtpRequest.GetResponse, FtpWebResponse)
         Using ResponseStream As Stream = _
         FtpResponse.GetResponseStream
            Dim sr As StreamReader = New StreamReader( _
            ResponseStream, Encoding.ASCII)
            Dim receivestream As String = sr.ReadToEnd()
            textBox5.Text = Encoding.ASCII.GetString( _
            Encoding.ASCII.GetBytes(receivestream))
            ResponseStream.Close()
         End Using
      End Using

      MyFtpRequest = Nothing

   End Sub

   Sub Button2_Click(sender As Object, e As EventArgs)

      For i As Integer = 1 To 5
         Dim txtbox As TextBox = _
         CType(Me.Controls("textBox" & CStr(i)), TextBox)
         If txtbox.Text.Trim = String.Empty Then
            txtbox.Focus:   Exit Sub
         End If
         txtbox = Nothing
      Next

      Dim server As String = textBox1.Text
      Dim remotefile As String = _
      "ftp://" + server + "/" + textBox4.Text
      Dim username As String = textBox2.Text
      Dim password As String = textBox2.Text

      MyFtpRequest = _
      CType(WebRequest.Create(remotefile), FtpWebRequest)
      MyFtpRequest.Credentials = _
      New NetworkCredential(textBox2.Text, textBox3.Text)
      MyFtpRequest.KeepAlive = False
      MyFtpRequest.UseBinary = True
      MyFtpRequest.Method = WebRequestMethods.Ftp.UploadFile

      Dim Bytes() As Byte = _
      Encoding.ASCII.GetBytes(textBox5.Text)
      Dim ftpStream As Stream = _
      MyFtpRequest.GetRequestStream
      ftpStream.Write(Bytes, 0, Bytes.Length)
      ftpStream.Close: ftpStream.Dispose
      MyFtpRequest = Nothing

   End Sub

End Class

neau33 [28.04.2011 20:29:02]

#

Moi taas jokke568!

Yleensä on niin, että jos kotisivusto on web-hotellissa ja ko. palveluun liittyy tietokantapalvelu esim. SQL Server tai MySQL niin palveluntarjoaja harvemmin tykkää päästellä asiakkaita suoraan tietokantaservulle esim. käyttämällä jotain client-ohjelmaa vaan tietokantayhteydet täytyy hoitaa sivuston kautta palvelun tukisysteemeistä riippuen esim. ASP.NET:llä tai PHP:llä.

tässä yksinkertainen esimerkki...

'puh.exe
Public Partial Class MainForm

   Public Sub New()

      Me.InitializeComponent()

   End Sub

   Sub Button1_Click(sender As Object, e As EventArgs)

      Dim URL As String = "http://www.palvelin.net/"
      Dim postData As String = "nimi=Jaska Jokunen&tunnus=1234" 'esim.

      Dim request As System.Net.HttpWebRequest = _
      CType(System.Net.WebRequest.Create( _
      URL + "puh.php"), System.Net.HttpWebRequest)

      request.UserAgent = _
      "Mozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.9.0.5) " &  _
      "Gecko/2008120122 Firefox/3.0.5 (.NET CLR 3.5.30729)"

      request.Method = "POST"
      request.AllowAutoRedirect = True
      request.ContentType = "application/x-www-form-urlencoded"
      request.ContentLength = postData.Length

      Dim requestStream As System.IO.Stream = _
      request.GetRequestStream()

      Dim postBytes As Byte() = _
      System.Text.Encoding.Default.GetBytes(postData)
      requestStream.Write(postBytes, 0, postBytes.Length)
      requestStream.Close()

      Dim response As System.Net.HttpWebResponse = _
      CType(request.GetResponse(), System.Net.HttpWebResponse)
      Response.Close()

      Dim lines() As String = _
      response.Headers.ToString.Split( _
      CType(Environment.NewLine, Char))

      For i As Integer = 0 To lines.Length -1
         If lines(i).IndexOf("Set-Cookie: ") > -1 Then
            MsgBox(lines(i).Replace("Set-Cookie: ",""))
         End If
      Next

   End Sub

End Class
<?php //puh.php

    $mysql_host = "localhost";
    $mysql_user = "käyttäjätunnus";
    $mysql_password = "salasana";
    $mysql_database = "tietokanta";

    $nimi = $_GET['nimi'];
    $tunnus = $_GET['tunnus'];

    $conn = mysql_connect($mysql_host, $mysql_user,
    $mysql_password) or die(mysql_error());
    mysql_select_db($mysql_database, $conn) or die(mysql_error());
    $sql = "SELECT puh FROM userdata WHERE user='$nimi' and id='$tunnus'";
    $result = mysql_query($sql, $conn) or die(mysql_error());

    if (mysql_fetch_row($result)==null) {
       setcookie("puhelin", "ei tetoa");
    }
    else
    {
       $puh = mysql_result($result, 0);
       setcookie("puhelin", $puh);
    }

    mysql_close($conn);

?>

neau33 [08.05.2011 16:04:50]

#

Heippa taas!


tässä vielä tota puh.php jutskaa vastaava ASP.NET/SQL Server viritelmä...

<!-- puh.aspx -->
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<script runat="server">

   Protected Sub Page_Load(sender As object, e As EventArgs)

      If Not Page.IsPostBack Then

         Dim nimi As string = Request.Form("nimi")
         Dim tunnus As string = Request.Form("tunnus")

         Dim strconn As String = _
         "Data Source=.\SQLEXPRESS;" + _
         "Initial Catalog=TIETOKANNAN_NIMI;" + _
         "User Id=tunnus;Password=********;"
         Dim conn As New SqlConnection(strconn)

         conn.Open()

         Dim query As String = _
         "SELECT phone FROM [userdata] Where user='" _
         + nimi + "' And id='" + tunnus + "'"
         Dim ds As New DataSet
         Dim da As SqlDataAdapter = New SqlDataAdapter(query, conn)
         da.Fill(ds,"userdata")
         conn.Close(): conn.Dispose

         If ds.Tables("userdata").Rows.Count > 0 Then
            Dim cookie As HttpCookie = New HttpCookie("puh")
            cookie.Value = ds.Tables("userdata").Rows(0)(0)
            Response.Cookies.Add(cookie)
         End If

         ds.Dispose: da.Dispose

      End If

   End Sub

</script>

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta