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 ClassMoi 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.