Ich habe momentan folgendes Problem und zwar habe ich ein PHP-Skript, an dieses sende ich Informationen und bekomme andere Informationen zurück. Nun muss ich das ganze mehrmals machen, nun möchte ich das ganze in einer Session machen. Wie kann ich nun bei jedem neuen Request die Session mitgeben.
HttpWebRequest & Session
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.
-
-
Generier dir in deinem PHP Script ne Session und in deinem Programm ne Session ID.
Dann schickst du deine Session ID einfach mit Post mit an das PHP Script und untersuchst erst im PHP Script ob das eine Gültige Session ist oder nicht. -
Also so sieht das VB.NET Skript aus.
VB.NET-Quellcode
- Imports System.IO
- Imports System.Net
- Imports System.Text
- Public Class Form1
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Dim cookies As CookieCollection = Nothing
- Dim request As HttpWebRequest = Nothing
- Dim response As HttpWebResponse = Nothing
- cookies = New CookieCollection()
- request = CType(HttpWebRequest.Create("http://localhost/httpsession/index.php"), HttpWebRequest)
- request.Method = "POST"
- request.ContentType = "application/x-www-form-urlencoded"
- request.CookieContainer = New CookieContainer()
- request.CookieContainer.Add(cookies)
- Dim Post As String = "action=start"
- Dim byteArray() As Byte = Encoding.UTF8.GetBytes(Post)
- request.ContentLength = byteArray.Length
- Dim DataStream As Stream = request.GetRequestStream()
- DataStream.Write(byteArray, 0, byteArray.Length)
- DataStream.Close()
- response = CType(request.GetResponse(), HttpWebResponse)
- DataStream = response.GetResponseStream()
- Dim reader As New StreamReader(DataStream)
- Dim ServerResponse As String = reader.ReadToEnd()
- reader.Close()
- DataStream.Close()
- If response.Cookies IsNot Nothing AndAlso response.Cookies.Count <> 0 Then
- For Each cookie As Cookie In response.Cookies
- MessageBox.Show(cookie.ToString)
- cookies = response.Cookies
- Next
- Else
- MessageBox.Show("no Cookie")
- End If
- response.Close()
- Console.WriteLine(ServerResponse)
- request = CType(HttpWebRequest.Create("http://localhost/httpsession/index.php"), HttpWebRequest)
- request.Method = "POST"
- request.ContentType = "application/x-www-form-urlencoded"
- request.CookieContainer = New CookieContainer()
- request.CookieContainer.Add(cookies)
- Post = "action=show"
- byteArray = Encoding.UTF8.GetBytes(Post)
- request.ContentLength = byteArray.Length
- DataStream = request.GetRequestStream()
- DataStream.Write(byteArray, 0, byteArray.Length)
- DataStream.Close()
- response = CType(request.GetResponse(), HttpWebResponse)
- DataStream = response.GetResponseStream()
- reader = New StreamReader(DataStream)
- ServerResponse = reader.ReadToEnd()
- reader.Close()
- DataStream.Close()
- Console.WriteLine(ServerResponse)
- End Sub
- End Class
Und so das PHP-Skript.
Beim 2. Aufruf sollte eigentlich die IP ausgegeben werden, aber es wird nichts ausgegeben -
Hay,
versuch's mal so:
VB.NET-Quellcode
- Imports System.Net, System.IO, System.Text.RegularExpressions
- Public Class Form1
- Private Containa As CookieContainer = New CookieContainer
- Private Function Req(ByVal Site As String, ByVal P As String) As String
- Dim R As HttpWebRequest = HttpWebRequest.Create(Site)
- R.Method = "POST"
- R.CookieContainer = Containa
- R.AllowAutoRedirect = True
- R.Headers("useragent") = "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8"
- R.ContentType = "application/x-www-form-urlencoded"
- Dim Post As String = P
- R.ContentLength = Post.Length
- Dim Writer As New StreamWriter(R.GetRequestStream(), System.Text.Encoding.Default)
- Writer.Write(Post)
- Writer.Close()
- Dim Reader As New StreamReader(R.GetResponse.GetResponseStream())
- Dim Response As String = Reader.ReadToEnd
- Reader.Close()
- Return Response
- End Function
Aufrufbeispiele:
oder
Mfg Kevin. -
-
-
Wenn du statt Sessions Cookies benutzt, kannst du bei jedem neuen WebRequest den CookieContainer übergeben.
Edit:
Oh, das tust du ja auch.
Warum benutzt du dann nicht setcookie() und $_COOKIE['abc'] ?Von meinem iPhone gesendet
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nikeee13“ ()
-
-
-
-
Nein für die Session ID kann man Cookies benutzen damit kann so ohne weiteres eh niemand was mit anfangen, aber falls du irgendwelche Daten Temprär speichern willst wie Benutzername, Passwort, Rechte oder sonst irgendwas, würde ich dafür natürlich eine Session nehemen, weil die kann niemand einsehen. Du übergibt dann nur die Session ID und das PHP Script sucht sich die notwendigen Daten aus der Session heraus und verarbeitet sie weiter.
Zur Sicherheit würde ich dann auch die IP mit in der Session speichern um noch mal eine Absicheurng zu haben, sofern jemand die Session ID heraus bekommt könnte er sie einfach an das Script hängen und somit auch die Ausgabe bekommen die er eigentlich nicht sehen sollte. Wenn du aber vorher die IP mit in der Session gespeichert hast wird einem angreifer wieder ein größerer Stein in Weg gelegt.
-
Ähnliche Themen
-
kickduel - - Internet- und Netzwerkprogrammierung