php und post

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

pirahni

Betreff: php und post

BeitragSo, Dez 21, 2008 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich habe einen Minnicode geschrieben, der eigentlich nur einen Text per POST an meine Seite übertragen soll. Diese Seite gibt dann eigentlich nur noch das eingegebene zurück. Mein Problem: Es passiert nichts! Wo steckt mein Problem???

Gruß pirahni

PS: Fast vergessen Embarassed der Code: [AUSKLAPPEN]
name$=Input()

tcp=OpenTCPStream("starhero.st.funpic.de",80)
WriteLine tcp,"POST http://starhero.st.funpic.de/dat.php HTTP 1.1"
WriteLine tcp,"Content-Type: application/x-www-form-urlencoded"
WriteLine tcp,"Content-Length: "+(4+Len(name$))
WriteLine tcp,"dat="+name$
WriteLine tcp,Chr$(10)
While Not Eof(tcp)
Print ReadLine(tcp)
Wend

CloseTCPStream tcp

tedy

BeitragSo, Dez 21, 2008 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Probier mal noch eine leere Zeile zu senden bevor du die Post daten sendest
zumindestens stehts so bei wikipedia
01010100 01100101 01000100 01111001 00100000 00111010 01000100

pirahni

BeitragSo, Dez 21, 2008 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hammer, funktioniert!!! Thank you verry much!

Eingeproggt

BeitragSo, Dez 21, 2008 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich war so frei und hab deinen Code noch ein wenig erweitert:

Code: [AUSKLAPPEN]
name$=Input()

tcp=OpenTCPStream("starhero.st.funpic.de",80)
WriteLine tcp,"POST /dat.php HTTP 1.1"
WriteLine tcp,"Host: starhero.st.funpic.de"
WriteLine tcp,"UserAgent: Blitzbasic"
WriteLine tcp,"Content-Type: application/x-www-form-urlencoded"
WriteLine tcp,"Content-Length: "+(4+Len(name$))
WriteLine tcp,""
WriteLine tcp,"dat="+name$
WriteLine tcp,""
While Not Eof(tcp)
  Print ReadLine(tcp)
Wend

CloseTCPStream tcp


Auch wenn dein voriger Code auch funktionierte, so ist es jedenfalls besser Wink
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

tmode00

Betreff: Ein kleines Script nachträglich :)

BeitragSa, Jan 17, 2009 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich habe mir für meine Onlinegames eine relativ komfortable http_request() function geschrieben. Die könnt ihr auch verwenden, ist getestet und funktioniert einwandfrei.


Code: [AUSKLAPPEN]
Type TServerreturn
   Field lineid;Zeilennummer
   Field content$;Der eigentliche Inhalt der Zeile
End Type
Global serverreturn.TServerreturn

Function http_request(server$="testsite.de",method$="POST",phpfile$="/index.php",content$="user=a&pass=b")
   ;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)
   If (method$="POST") Then
      WriteLine tcp,"POST " + phpfile$ + " HTTP 1.1"
      WriteLine tcp,"Host: " + server$
      WriteLine tcp,"UserAgent: 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
      WriteLine tcp,"GET http://" + server$ + content$ + " HTTP/1.0"
      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


;Beispiel (Verwendung von http_request(...))
Graphics(1024,768,32,2)
http_request("ttlabs.de","POST","/index.php","name=testuser&pass=testpass&user_login_sub=Login&wdlink=?news")
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$
Next

WaitKey


keine Garantie Smile, aber mit ein bisschen abänderung vielleicht ganz gut in anderen Projekten verwendbar.
While (1) : Wend
 

FWeinb

ehemals "ich"

BeitragSa, Jan 17, 2009 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei einem GET Request sollte man aber troßdem so banale dinge wie User-Agent usw. mitsenden.

Deswegen würde ich hierraus:

Code: [AUSKLAPPEN]

   If (method$="POST") Then
      WriteLine tcp,"POST " + phpfile$ + " 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
      WriteLine tcp,"GET http://" + server$ + content$ + " HTTP/1.0"
      WriteLine tcp,Chr$(10)   
   EndIf


Das machen:

Code: [AUSKLAPPEN]


  If (method$="POST") Then 
   File$ = phpfile$
  ElseIf (method$="GET") Then
   File$ = "http://" + server$ + content$
  EndIf


      WriteLine tcp, method$+" " + File$ + " 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$)
   If (method$="POST") Then
     WriteLine tcp,""
      WriteLine tcp,content$
      WriteLine tcp,""
   ElseIf (method$="GET") Then
      WriteLine tcp,Chr$(10)   ;Chr$(10) = ""
   EndIf


mfg

ich
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs
 

tmode00

Betreff: Aw & Frage...

BeitragSa, Jan 17, 2009 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, stimmt. Der UserAgend sollte mit. Außerdem hast du Zeilen gespart, durch das das Senden des selben Useragend mit beiden Methoden, sehr sauber Smile

es gibt da nur noch ein kleines Problem mit Get. Post funktioniert einwandfrei, bei Get kann ich scheinbar keinen Agend schicken:

sendstring$ beinhaltet: "http://ttlabs.de/index.php?SicBo" (Variable SicBo wird per get gesendet)
Code: [AUSKLAPPEN]
;Sendstring vorbereiten
   Local sendstring$
   If (method$="POST") Then
      sendstring$ = phpfile$
   ElseIf (method$="GET") Then
      sendstring$ = "http://" + server$ + phpfile$ + "?" + content$
   EndIf


Funtioniert einwandfrei (man wird zur korrekten Seite geleitet):
Code: [AUSKLAPPEN]
1: WriteLine tcp, method$ + " " + sendstring$ + " HTTP 1.1"
2: WriteLine tcp,Chr$(10)

Funktioniert nicht: (nur Zeile 3-6 ist hinzugekommen, sonst ist nichts anders)
Code: [AUSKLAPPEN]
1: WriteLine tcp, method$ + " " + sendstring$ + " HTTP 1.1"
2:
3: WriteLine tcp,"Host: " + server$
4: WriteLine tcp,"User-Agent: Blitzbasic"
5: WriteLine tcp,"Content-Type: application/x-www-form-urlencoded"
6: WriteLine tcp,"Content-Length: "+ Len(content$)
7:
8: WriteLine tcp,Chr$(10)


Hingegen bei POST geht exakt der selbe header:
Code: [AUSKLAPPEN]
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,""


Dh. das Headersenden ist nicht ohne weiteres möglch, es funktioniert nur wenn das Chr(10) direkt nach den GET 200 ok... kommt

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group