BB und PHP - Problem mit Leerzeichen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Gina

Betreff: BB und PHP - Problem mit Leerzeichen

BeitragDi, Sep 21, 2004 11:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallochen,

hab da mal ein kleines Problemchen...Wink

Es geht mal wieder um eine Online-Highscoreliste...
Ich sende aus dem Spiel heraus den Namen und den Score an mein php-script. Das funktioniert soweit auch einwandfrei. Außer wenn jemand auf die Idee kommt, in seinem Namen ein Leerzeichen zu verwenden.

Wenn ich dann in BB mit dem Befehl:
Code: [AUSKLAPPEN]
WRITELINE tcp,"GET http://www.jk-spiele.de/meinscript.php?name="+name$+"&score="+score

das ganze sende und in der Variablen name$="weiß nicht" drin steht, tut er einfach gar nix.

Gebe ich die Zeile manuell im Browser mit Leerzeichen ein, so wird automatisch das Leerzeichen durch ein % ersetzt und der Name wird ganz brav eingetragen.

Nun meine Frage: Muss ich selbst den Namen nach Leerzeichen durchsuchen und das % dafür einsetzen in BB oder gibt es einen Trick, der das automatisch macht?

Vielen Dank, Gina.

PS: Achso, Name und Score werden bei mir in die MySQL-Datenbank eingetragen, nicht in eine Textdatei, falls das eine Rolle spielt.
www.jk-spiele.de

BladeRunner

Moderator

BeitragDi, Sep 21, 2004 11:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kenne mich mit der Übermittlung von Daten an PHP und oder sonstige Spielereien nicht aus, aber mittels
Code: [AUSKLAPPEN]
Name$=Replace$(name$," ","%")

sollte das Ganze erledigt sein.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

David

BeitragDi, Sep 21, 2004 11:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Um ganz sicher zu gehen müsstest du die gesammte URL codieren. Leerzeichen durch ein %20 ersetzen usw...

Für genauere Informationen hier nachschauen.

Edit: In deinem Fall sollte aber ein ersetzen der Leerzeichen durch ein "%20" schon reichen.

grüße
http://bl4ckd0g.funpic.de

Gina

BeitragDi, Sep 21, 2004 11:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ahh, tausend Dank. Mit %20 klappt es. Wenn ich nur % einsetze, trägt er doch glatt "weiß%nicht" als Name ein... Very Happy

Vielen Dank, Gina.

PS: Wenn mir jetzt noch jemand verraten könnte, wie ich eventuelle Fehler auswerten könnte, also anzeigen, dass ein Fehler vorlag und das Ganze nicht eingetragen wurde, wäre das supi. Ich habe keine Ahnung, was die Datenbank antwortet in solch einem Fall...
www.jk-spiele.de
 

David

BeitragDi, Sep 21, 2004 11:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Du kannst in PHP mit dem Befehl "mysql_errno()" den Fehlercode herausfinden, vorrausgesetzt du verwendest eine mySQL Datenbank.
Im Falle einen Fehlers kannst du mit "echo" einen entsprechenden Text ausgeben, der dann in deinem TCP-Stream in BB steht.

Hier ist eine Liste der mySQL Fehlercodes.

grüße
http://bl4ckd0g.funpic.de
 

morszeck

BeitragDi, Sep 21, 2004 11:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Endweder:

name$ = chr$(34) + name$ + chr$(34)

oder

name$ = relpace$(name$, " ", "_")

Also, wen man schon PHP kann, dann sollte man schon auf solch einfache Ideen kommen können...
WinXpProf&SP2, B3D V1.88, B+ V1.40, BMax101Beta, AMD TB1.4GHz, DDR266/768MB, GeForce3@64MB
 

David

BeitragDi, Sep 21, 2004 11:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Gina hat Folgendes geschrieben:
Mit %20 klappt es.


Wenn ich zitieren darf... :S

grüße
http://bl4ckd0g.funpic.de

bruZard

BeitragDi, Sep 21, 2004 12:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Nimm diese Funktion und jage jeden String vor dem versenden da durch, dann klappts auch mit dem URLEncode Wink
Code: [AUSKLAPPEN]

;-------------------------------------------------
; Zeichen durch HTTP Codes ersetzen
;-------------------------------------------------
Function ConvertString$(in$)
   in$=Replace(in$," "      , "%20")
   in$=Replace(in$,EOL$   , "%0D")
   in$=Replace(in$,">"      , "%3E")
   in$=Replace(in$,"%"      , "%25")
   in$=Replace(in$,"}"      , "%7D")
   in$=Replace(in$,"\"      , "%5C")
   in$=Replace(in$,"~"      , "%7E")
   in$=Replace(in$,"]"      , "%5D")
   in$=Replace(in$,";"      , "%3B")
   in$=Replace(in$,"?"      , "%3F")
   in$=Replace(in$,"@"      , "%40")
   in$=Replace(in$,"&"      , "%26")
   in$=Replace(in$,"<"      , "%3C")
   in$=Replace(in$,"#"      , "%23")
   in$=Replace(in$,"{"      , "%7B")
   in$=Replace(in$,"|"      , "%7C")
   in$=Replace(in$,"^"      , "%5E")
   in$=Replace(in$,"["      , "%5B")
   in$=Replace(in$,"`"      , "%60")
   in$=Replace(in$,"/"      , "%2F")
   in$=Replace(in$,":"      , "%3A")
   in$=Replace(in$,"="      , "%3D")
   in$=Replace(in$,"$"      , "%24")
   in$=Replace(in$,"Ä"      , "%C4")
   in$=Replace(in$,"Ö"      , "%D6")
   in$=Replace(in$,"Ü"      , "%DC")
   in$=Replace(in$,"ä"      , "%E4")
   in$=Replace(in$,"ö"      , "%F6")
   in$=Replace(in$,"ü"      , "%FC")
   in$=Replace(in$,"ß"      , "%DF")
   Return in$
End Function

; EOL$ muss durch Global EOL$=Chr(13)+Chr(10) initialisiert sein!
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Gina

BeitragDi, Sep 21, 2004 12:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Uii, vielen Dank. Dann kann ja nix mehr passieren.

@husky
Wer sagt denn, dass ich php kann... Embarassed
Ich habe mir ganz alleine mittels php-Handbuch und meinen bescheidenen MySQL-Kenntnissen die Scripte zusammengebastelt und bin mächtig stolz auf mich... Wink Bin nur an diesen Leerzeichen gescheitert und wollte jetzt lediglich eventuelle andere Fehler abfangen, die mit
Code: [AUSKLAPPEN]
      mysql_query($insertdata)
        or die (include 'fehler.php');

nicht abgedeckt sind...

Nochmals vielen Dank, Gina.
www.jk-spiele.de

Gina

BeitragFr, Sep 24, 2004 12:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

habe da leider noch ein kleines Problem... Embarassed

Ich übertrage also Daten von BB an mein php-Script. Kein Problem.
Die Daten werden in der MySQL-Datenbank gespeichert. Auch kein Problem.
Dann werden sie im php-script verarbeitet und nun habe ich in einer Variablen einen Wert. Soweit auch kein Problem.

Aber wie bekomme ich diesen Wert zurück ins Spiel? Wenn ich ihn per echo ausgebe und mit READLINE auslese, kommt noch so viel anderes Zeug mit. Ich will doch nur den einen Wert haben.

Gibt es irgendeinen Befehl in BB, womit ich den Wert direkt auslesen kann? Sozusagen eine Umkehrung von WRITELINE + GET?
Oder geht es nur über den Umweg mit speichern in einer Textdatei auf dem Server und dann diese auslesen?

Sorry, aber alleine komme ich da einfach nicht weiter... Crying or Very sad

Vielen Dank, Gina.
www.jk-spiele.de
 

David

BeitragFr, Sep 24, 2004 13:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Das, was da alles mitkommt ist eben der HTTP Header und der muss da auch bei sein!
Du kannst den Header aber ganz leicht rausfiltern indem du die erste Leerzeile in den Daten suchst. Danach kommen dann deine Daten!

grüße
http://bl4ckd0g.funpic.de

Gina

BeitragFr, Sep 24, 2004 13:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann geht es also nicht anders...?

Ok, dann werd ich versuchen es so auszugeben, dass ich die Zeile direkt ansprechen kann.

Vielen Dank.
www.jk-spiele.de
 

David

BeitragFr, Sep 24, 2004 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Nein, geht nich anders, da du mit dem Webserver auf Protokollebene kommunizierst musst du leider auch mit dem Kommandos leben.
Wenn man ganz genau wäre müsstest du, bevor du die Benutzerdaten an den Server sendest, auch einen HTTP Header schicken! Smile

grüße
http://bl4ckd0g.funpic.de

Gina

BeitragFr, Sep 24, 2004 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
So...

hab jetzt meinen Wert beim echo in einen hübschen Satz gepackt. Im Spiel lese ich dann alles Zeile für Zeile ein und vergleiche mit INSTR, ob das mein Satz ist. Wenn ja, gebe ich ihn aus.

Klappt supi.

Vielen lieben Dank, Gina.
www.jk-spiele.de

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group