Frage zu den Sessions
Übersicht

tmode00Betreff: Frage zu den Sessions |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
Wenn man sich auf einer Seite einloggt, dann wird ja bekanntlich eine Session erstellt. Über diese Session kann dann nach Aufruf der start_session() Funktion von PHP auf das $_SESSION - Array zugegriffen werden. So kann man ja bequem auf der Seite surfen ohne jedesmal Logindaten eingeben zu müssen. Wenn ich nun ein Spiel habe was einen tcp Server in Blitzbasic erstellt, dann auch eine POST Login Anfrage an eine Login.php sendet und diese dann das OK bzw. die persönlichen Daten des Users zurückgibt wird ja ebenso am Server eine Session gestartet und im Header der Http-Rückgabe steht diese ja auch. Meine Frage (die ich trotz intensiever Google Suche nicht lösen konnte) ist nun: Wie kann ich die Session in einen neuem tcpstream nutzen nach dem Prinzip function Login() tcp=createtcpserver("seite.de",80) POST /index.php http 1.1 HOST: seite.de chr(13) daten senden (username=a&passwort=b) chr(13) end function function start_game ... in der funktion nun die Session verwenden, also index.php aufrufen und irgendwie sessionid übertragen so das php weis, aha session id ok, userdaten zurückgeben end function im php wird dann entweder ein $_POST[user] etc. empfangen und erstmals in die $_SESSION geschrieben oder aus der $_SESSION die Logindaten gelesen, wie normal auch. Kurz: wie kann ich eine Session ansteuern mit Blitzbasic tcp verbindung. Ich will halt nicht immerwieder die logindaten senden sondern nur die für die spielrunde benötigten daten, wie man es auch in einem Browsergame machen würde Vielleicht ein bisschen umständlich formuliert, darin bin ich gut! Ich hoffe mir kann jeamd helfen Danke schonmal im Voraus. |
||
While (1) : Wend |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sessions werden glaub ich über Cookies geregelt. Wenn PHP eine Session für dich anlegt, gibt die Seite auch eine Anweisung für ein Cookie zurück. Dieses Cookie muss dein Programm quasi selbst anlegen und bei jedem Aufruf einer Seite wieder mitsenden.
Wie genau das funktioniert, musst du nachlesen. |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
tmode00Betreff: hmmm |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
a, genau sowas dachte ich mir schon. Das was bei jedem Browser quasi einfach funktioniert muss ich irgendwie selber basteln und mit übergeben...
Sowas kommt vom Server zurück, nach dem login: HTTP/1.1 200 OK Date: Mon, 19 Jan 2009 13:21:53 GMT Server: Apache/2.2.3 (Linux/SUSE) X-Powered-By: PHP/5.2.0 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: sid=ymcbRmwj4LPbvi3KvGVV4gD5h7_uOElTmo7_rDLMUeMzzmUhnwpYLshPg23yeMC4; path=/; HttpOnly Set-Cookie: f0dd93b21eea5360bdc37b5cacfd8f79=lSACIc4kvyEpw9xWhPS2KfPhHJim_LwC_WJrPMDv88iVk-TiWnAhzrBBqKaNxU3szKyER7RvmS0SP3eObDI_8g..; expires=Thu, 14-Jan-2010 13:21:53 GMT; path=/ Connection: close Content-Type: text/html Daraus also ein kecks basteln und dieses wieder übersenden. Das ist wichtig weil ich Dateien auf dem Server hab die keine Logindaten erwarten sondern eine Session, nur die Login.php erwartet logindaten, alle anderen loggen sich über session ein.. hat jemand eine idee wie sowas geht? |
||
While (1) : Wend |
- Zuletzt bearbeitet von tmode00 am Mo, Jan 19, 2009 15:25, insgesamt einmal bearbeitet
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
An dieser Stelle wäre es absolut angebracht, mal ein wenig Eigeninitiative zu zeigen und eine Suchmaschine zu bemühen. Wie dem auch sei, der Wiki-Artikel ist ein guter Startpunkt: http://de.wikipedia.org/wiki/HTTP-Cookie | ||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
HTTP lässt sich eigentlich wunderbar selbstständig lernen. Dazu muss man nichtmal irgendwelchen dicken bücher/dokumente wälzen ![]() schau dir mal das Addon "Live HTTP Headers" für firefox und die software "Wireshark" an. Wie das alles funktioniert lernt man dann mit der zeit von selbst ![]() |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
tmode00Betreff: naja |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
naja Eigeninitiative ist gut, hab mir die wikiseite schon vorher angeschaut, aber desshalb weis ich noch lange nicht wie ich das script basteln soll.Vielleicht hat ja jemand schonmal mit sessions von bb aus gearbeitet und hat ein bespiel, da ja keine offiziellen Beispiele für ähnliches existieren. Ich will ja nicht gleich das ganze http-protocol verstehen. Ich ahbe schon eine wunderbare funktion zum senden von post requests geschrieben,
Code: [AUSKLAPPEN] Type TServerreturn Field lineid;Zeilennummer Field content$;Der eigentliche Inhalt der Zeile End Type Global serverreturn.TServerreturn Function http_request(protocol$="http://",server$="testsite.de",method$="POST",phpfile$="/index.php",content$="user=a&pass=b") ;alte serverreturns löschen For serverreturn.TServerreturn = Each TServerreturn Delete serverreturn Next ;Stream öffnen Local tcp=OpenTCPStream(server$,80) If Not tcp Then Return 1;Error 1, keine Verbindung EndIf ;method immer großbuchstaben, wegen der If erkennung method$ = Upper(method$) ;Http-request senden (POST || GET) Local sendstring$ If (method$="POST") Then sendstring$ = phpfile$ WriteLine tcp, method$ + " " + sendstring$ + " HTTP 1.1" WriteLine tcp,"Host: " + server$ WriteLine tcp,"User-Agent: Blitzbasic" WriteLine tcp,"Content-Type: application/x-www-form-urlencoded" WriteLine tcp,"Content-Length: "+ Len(content$) WriteLine tcp,"" WriteLine tcp,content$ WriteLine tcp,"" ElseIf (method$="GET") Then sendstring$ = protocol$ + server$ + phpfile$ + "?" + content$ WriteLine tcp, method$ + " " + sendstring$ + " HTTP 1.1" WriteLine tcp,Chr$(10) EndIf ;Rückgabe zur weiterverarbeitung speichern Local lineid While Not Eof(tcp) lineid = lineid + 1;beginne mit Zeile 1 serverreturn.TServerreturn = New TServerreturn serverreturn\lineid = lineid serverreturn\content$ = ReadLine(tcp) Wend CloseTCPStream tcp End Function Function print_serverreturn() For serverreturn.TServerreturn = Each TServerreturn ;folgendes ist nur zur seitentrennung: break = serverreturn\lineid Mod 50 If (break=0) Then WaitKey Cls Locate 0,0 EndIf Print "00" + serverreturn\lineid + ": " + serverreturn\content$ Delete serverreturn Next End Function Function make_bowser_file() Local outfile = WriteFile("out.html") For serverreturn.TServerreturn = Each TServerreturn WriteLine(outfile,serverreturn\content$) Delete serverreturn Next End Function ....fehlt nur noch die session funktionalität! naja also sollte jemand ein Beispiel haben, wäre das hier Postbar, sonst muss ich mir das http-protocol wohl noch genauer anschauen. Und vorallem den bereich der kekse |
||
While (1) : Wend |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier siehst du einen mittschnitt einer kommunikation aus dem live-http-headers. Daraus sollte man eigentlich erkennen, wie das ganze funktioniert
Code: [AUSKLAPPEN] http://phpprogger.ph.funpic.de/test/set.php
GET /test/set.php HTTP/1.1 Host: phpprogger.ph.funpic.de User-Agent: Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.5) Gecko/2008122011 Iceweasel/3.0.5 (Debian-3.0.5-1) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive HTTP/1.x 200 OK Date: Mon, 19 Jan 2009 13:28:24 GMT Server: Apache/2.2.11 (Unix) mod_perl/2.0.4 Perl/v5.10.0 Set-Cookie: cken=1232371704; path=/; domain=.funpic.de Set-Cookie: PHPSESSID=4561b4926374c6f1d8bb175b243f1094; expires=Mon, 19 Jan 2009 14:28:24 GMT; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Keep-Alive: timeout=10, max=992 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=ISO-8859-1 ---------------------------------------------------------- http://phpprogger.ph.funpic.de/test/set.php GET /test/set.php HTTP/1.1 Host: phpprogger.ph.funpic.de User-Agent: Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.5) Gecko/2008122011 Iceweasel/3.0.5 (Debian-3.0.5-1) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Cookie: cken=1232371704; PHPSESSID=4561b4926374c6f1d8bb175b243f1094 HTTP/1.x 200 OK Date: Mon, 19 Jan 2009 13:28:26 GMT Server: Apache/2.2.11 (Unix) mod_perl/2.0.4 Perl/v5.10.0 Set-Cookie: cken=1232371706; path=/; domain=.funpic.de Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Keep-Alive: timeout=10, max=984 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=ISO-8859-1 ---------------------------------------------------------- |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
- Zuletzt bearbeitet von Smily am Mo, Jan 19, 2009 15:34, insgesamt einmal bearbeitet
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann streng doch mal dein Köpfchen an. In der Antwort, die dir der Server schickt sehe ich auf den ersten Blick ein Cookie mit einer wirren Variable (Session-ID), welche der Server beim nächsten Aufruf gern zurück hätte. Und wie das dann aussehen muss, steht wunderbar in dem Wiki-Artikel. | ||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
tmode00 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: Hier siehst du einen mittschnitt einer kommunikation aus dem live-http-headers.
Aha... ok ich versuchs allein. Danke trotzdem |
||
While (1) : Wend |
tmode00Betreff: so... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe es jetzt einigermaßen erstanden, irgendwie bildet der Server aber 2 Cookies und aktzeptiert den gesendeten nicht so recht. Ich habe mal versucht mit Wireshark sniffer eine Opera-anfrage an meinen Server (mit cookie-login) abzufangen und das dann genauso zu senden. Die abgefangene Abfrage:
Code: [AUSKLAPPEN] GET /index.php?news HTTP/1.1\r\n
Request Method: GET Request URI: /index.php?news Request Version: HTTP/1.1 User-Agent: Opera/9.62 (Windows NT 5.1; U; de) Presto/2.1.1\r\n Host: ttlabs.de\r\n Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n Accept-Language: de-DE,de;q=0.9,en;q=0.8\r\n Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\n Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0\r\n Cookie: sid=mBagTPI7BTgZdF016Av76CWXZS6709dpQEFq2EeMcw4I8O4VgzWAmsYwYlCO6ul0; f0dd93b21eea5360bdc37b5cacfd8f79=_Tz2D7GWVoQrYg6e-nv1MCL9uOYU4KCB6v0UHYr_TabvQmf76w1qOG3PBU50q64JHw3IwQJBu9EQ2agEkEC7pg..\r\n Cookie2: $Version=1\r\n Connection: Keep-Alive, TE\r\n TE: deflate, gzip, chunked, identity, trailers\r\n \r\n Nun gab es ein paar bad requests etc.. bis ichs letztendlich zumindest geschafft habe das der Cookie irgendwie übertragen wird aber jetzt werden 2 Cookies zurückgegeben und der Übertragene wird nicht aktzeptiert (es setzt die session mit angegebener sid nicht fort) Das bekomme ich in Blitzbasic zurück: Code: [AUSKLAPPEN] 001: HTTP/1.1 200 OK 002: Date: Tue, 20 Jan 2009 08:18:22 GMT 003: Server: Apache/2.2.3 (Linux/SUSE) 004: X-Powered-By: PHP/5.2.0 005: Expires: Thu, 19 Nov 1981 08:52:00 GMT 006: Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 007: Pragma: no-cache 008: Set-Cookie: sid=X9UWTnUglWHB8K-JDOJWkJU0NEFvkUWazVv4zcnEeEj63hbUv1evaca_taLuMuAM; path=/; HttpOnly 009: Set-Cookie: f0dd93b21eea5360bdc37b5cacfd8f79=4WaEwPJBQXQypYNBiaVXsXiii8gru-N_XySGdcAO9qk.; expires=Mon, 21-Jan-2008 08:18:21 GMT; path=/ 0010: Connection: close 0011: Content-Type: text/html und das hier habe ich gesendet: Code: [AUSKLAPPEN] sendstring$ = phpfile$
WriteLine tcp, "GET" + " " + sendstring$ + " HTTP 1.1" WriteLine tcp,"Host: " + server$ WriteLine tcp,"Cookie: sid=mBagTPI7BTgZdF016Av76CWXZS6709dpQEFq2EeMcw4I8O4VgzWAmsYwYlCO6ul0; f0dd93b21eea5360bdc37b5cacfd8f79=_Tz2D7GWVoQrYg6e-nv1MCL9uOYU4KCB6v0UHYr_TabvQmf76w1qOG3PBU50q64JHw3IwQJBu9EQ2agEkEC7pg..\r\n" WriteLine tcp,"User-Agent: Blitzbasic" WriteLine tcp,"Content-Type: application/x-www-form-urlencoded" WriteLine tcp,"Content-Length: "+ Len(content$) WriteLine tcp,"" WriteLine tcp,content$ WriteLine tcp,"" Ich hab schon ewig probiert aber irgendwie bekomme ich die exakte syntax nicht richtig hin. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group