Internetquellcode

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Crystal

Betreff: Internetquellcode

BeitragDi, Okt 26, 2010 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
hey, ich mal wieder... Very Happy

Leider komme ich gerade wieder nicht wirklich weiter.

Ich habe eine PHP-Datei im Web und möchte davon den Code als String in meinem BB-Programm haben.

OpenTCPStream liefert mit nur eine Zahl als String, aber an den Code komme ich irgendwie nicht ran.

Mach ich da etwas falsch, oder geht das schlichtweg gar nicht mit OpenTCPStream?


lg

M2M

BeitragDi, Okt 26, 2010 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Da PHP eine Serverbasierte Programmiersprache ist, wird dir letztendlich nur der generierte HTML-Code geschickt (das was du im Browser siehst). Du kannst den PHP Code also nicht auslesen, sondern nur dessen Resultat.
 

Crystal

BeitragDi, Okt 26, 2010 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, das meine ich ja, ich lasse den html-Code nur per php anzeigen, weil er sich ändern kann (Datenbank)

Pummelie

BeitragDi, Okt 26, 2010 19:40
Antworten mit Zitat
Benutzer-Profile anzeigen
OpenTCPStream öffnet nur eine Verbindunge, wenn du Daten aus dem Web auslesen willst (oder jedenfalls Daten dieser Art) beschäftige dich mit Bank, Read/Write Befehlen, und dem HTTP Protokoll...
It's done when it's done.
 

Crystal

BeitragDi, Okt 26, 2010 19:43
Antworten mit Zitat
Benutzer-Profile anzeigen
ist das wirklich so kompliziert?

Die Datei beinhaltet nur einen Satz, den ich im Spiel anzeigen lassen will.

Danke schon mal für die Antworten

Pummelie

BeitragDi, Okt 26, 2010 20:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Nunja... kompleziert würde ich es nicht nennen...

Hier ist mal ein Code der genau das macht, was du willst...
Ich habe eine test.php auf pummelie.de angelegt, die den String "Hallo Welt" beeinhaltet, als Echo.

BlitzBasic: [AUSKLAPPEN]
Local test_request$=ReadPHPEcho$("pummelie.de","test.php")

Function ReadPHPEcho$(server$,php_file$)
Local php_stream=OpenTCPStream(server$,80),size,alt_msg$
WriteLine(php_stream,"GET /"+php_file$+" HTTP/1.0")
WriteLine(php_stream,"")
Repeat
Local tmp_line$=ReadLine$(php_stream)
If tmp_line$="" Or tmp_line$=0 Then Exit
If Left$(tmp_line$,14)="Content-Length" Then size=Right$(tmp_line$,Len(tmp_line$)-16)
Forever
If size<>0 Then ;Wenn der Server eine Content größe sendet...
Local read_bank=CreateBank(size+1)
ReadBytes(read_bank,php_stream,0,BankSize(read_bank))
CloseTCPStream(php_stream)
Local msg$=Char$(read_bank)
DebugLog(msg$)
Return(msg$)
EndIf
Repeat ;Wenn nicht...
Local tmp_read$=ReadLine$(php_stream)
If tmp_read$="" Then Exit
alt_msg$=alt_msg$+tmp_read$
Forever
DebugLog(alt_msg$)
Return(alt_msg$)
End Function

Function Char$(bank)
Local i,out$
For i=0 To BankSize(bank)-1
out$=out$+Chr$(PeekByte(bank,i))
Next
Return(out$)
End Function


Testdatei:
Code: [AUSKLAPPEN]
<?php
  echo "Hallo Welt!";
?>


Sobalt du das Verstanden hast, kannst du es sicher für deine Zwecke modifizieren.
It's done when it's done.
 

Crystal

BeitragMi, Okt 27, 2010 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
danke für den tollen code Very Happy
 

Crystal

BeitragDo, Okt 28, 2010 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
da gibt es doch noch ein Problem

und zwar:

wenn ich "pummelie.de" durch meine homepage "blaccul.bplaced.net" ersetzte, auf der die Datei "version.php" liegt, dann läuft die Sache nicht.
Er verbindet sich zwar mit bplaced, aber nicht auf meine Seite sondern auf eine die es anscheinend nicht gibt.

Woran kann das liegen?

Starwar

BeitragDo, Okt 28, 2010 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Teste mal
Zitat:
"/version.php" oder "./version.php"

Achte unbedingt auf Groß-/Kleinschreibung.
MFG
 

Crystal

BeitragDo, Okt 28, 2010 14:16
Antworten mit Zitat
Benutzer-Profile anzeigen
hab ich getestet, aber immer das gleiche Ergebnis

Was meinst du mit Groß- und Kleinschreibung?
 

Crystal

BeitragDo, Okt 28, 2010 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier mal mein Code

Code: [AUSKLAPPEN]
Local test_request$=ReadPHPEcho$("blaccul.bplaced.net","version.php")

Function ReadPHPEcho$(server$,php_file$)
   Local php_stream=OpenTCPStream(server$,80),size,alt_msg$
   WriteLine(php_stream,"GET /"+php_file$+" HTTP/1.0")
    Print server$
     Print php_file$
   WriteLine(php_stream,"")
   Repeat
      Local tmp_line$=ReadLine$(php_stream)
      If tmp_line$="" Or tmp_line$=0 Then Exit
      If Left$(tmp_line$,14)="Content-Length" Then size=Right$(tmp_line$,Len(tmp_line$)-16)
   Forever
   If size<>0 Then ;Wenn der Server eine Content größe sendet...
      Local read_bank=CreateBank(size+1)
      ReadBytes(read_bank,php_stream,0,BankSize(read_bank))
      CloseTCPStream(php_stream)
      Local msg$=Char$(read_bank)
      DebugLog(msg$)
      Return(msg$)
   EndIf
   Repeat ;Wenn nicht...
      Local tmp_read$=ReadLine$(php_stream)
      If tmp_read$="" Then Exit
      alt_msg$=alt_msg$+tmp_read$
   Forever
   DebugLog(alt_msg$)
   Return(alt_msg$)
End Function

Function Char$(bank)
   Local i,out$
   For i=0 To BankSize(bank)-1
      out$=out$+Chr$(PeekByte(bank,i))
   Next
   Return(out$)
End Function

ZaP

BeitragDo, Okt 28, 2010 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
version.php vs Version.php
Starfare: Worklog, Website (download)
 

Crystal

BeitragDo, Okt 28, 2010 14:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist es auch nicht

langsam versteh ich nix mehr!?

Eingeproggt

BeitragDo, Okt 28, 2010 15:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Im HTTP-Protokoll sind eine Vielzahl von zusätzlichen Angaben vorgesehen, die bei einer Anfrage mitgesendet werden (können).
Eine sehr wichtige, ohne die dir bplaced vermutlich einen "Bad Request" vorwirft wäre "Host: ".
Damit ich nicht nur in Rätseln spreche, das heißt der Anfang müsste so in etwa sein:
Code: [AUSKLAPPEN]
Local php_stream=OpenTCPStream(server$,80),size,alt_msg$
WriteLine(php_stream,"GET /"+php_file$+" HTTP/1.0")
Print server$
Print php_file$
WriteLine(php_stream,"Host: "+server)
WriteLine(php_stream,"")


Hab grad kein funktionierendes Beispiel zur Hand zum Vergleichen. Wenns das noch immer nicht war, dann versuche es mit HTTP/1.1 und event. weiteren Angaben. Alles weitere auf Wikipedia.

mfG, Christoph.

Nachtrag: Und wenn es partout nicht geht, dann lass dir auch mal das, was in der ersten Repeat Schleife (wo "size" bestimmt wird) ausgelesen wird, anzeigen. Enthält die genaue Rückmeldung vom Server was ihm nicht passt.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
  • Zuletzt bearbeitet von Eingeproggt am Do, Okt 28, 2010 15:16, insgesamt einmal bearbeitet
 

Crystal

BeitragDo, Okt 28, 2010 15:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit dem Host läuft, herzlichen Dank Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group