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.
Jaksaisiko joku vähän auttamaan kun ei ole minkäänlaista kokemus nettiin liittyvästä...
Kiitos jo etukäteen...
"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"
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ä.
Jotta ymmärtäisit palvelin toiminnan, niin suosittelisin lukemaan tämän oppaan:
https://www.ohjelmointiputka.net/oppaat/opas.
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
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
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); ?>
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>
Aihe on jo aika vanha, joten et voi enää vastata siihen.