php und post
Übersicht
BlitzBasic
Allgemein|
|
pirahniBetreff: php und post |
Antworten mit Zitat |
|---|---|---|
|
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 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 |
Antworten mit Zitat |
|---|---|---|
|
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 |
Antworten mit Zitat |
|---|---|---|
| Hammer, funktioniert!!! Thank you verry much! | ||
|
|
Eingeproggt |
Antworten mit Zitat |
|---|---|---|
|
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 |
||
| Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 | ||
tmode00Betreff: Ein kleines Script nachträglich :) |
Antworten mit Zitat |
|
|---|---|---|
|
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 |
||
| While (1) : Wend | ||
FWeinbehemals "ich" |
Antworten mit Zitat |
|
|---|---|---|
|
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 |
||
tmode00Betreff: Aw & Frage... |
Antworten mit Zitat |
|
|---|---|---|
|
Ja, stimmt. Der UserAgend sollte mit. Außerdem hast du Zeilen gespart, durch das das Senden des selben Useragend mit beiden Methoden, sehr sauber 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 |
||
Übersicht
BlitzBasic
Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group
