Sonderzeichen mittels GET an Server schicken - MySQL

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Der Eisvogel

Betreff: Sonderzeichen mittels GET an Server schicken - MySQL

BeitragFr, Okt 07, 2011 22:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo

Ich möchte eine Zeichenkette bestehend aus Sonderzeichen an einen Server über das HTTP-Protokoll mittels einer GET Abfrage schicken. Die Zeichenkette sieht wie folgt aus:
Zitat:
~B¹ Ò .•Ð¦Þ =v¤Û<s7ª>o ^€ À —ªÊÿ/`

Nur leider will das ganze mal wieder nicht wie ich. Die Zeichenkett kommt nicht an, heißt sie wird nicht richtig in $_GET übertragen. Ich hab das auch schon über den Browser direkt versucht, der die Zeichen ja sogar richtig umwandelt, aber selbst da klappt es nicht. Was muss ich tun, damit ich eine Zeichenkette dieser Art mittels HTTP zum Server bekomme?

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.
  • Zuletzt bearbeitet von Der Eisvogel am Sa, Okt 08, 2011 12:23, insgesamt einmal bearbeitet

Jolinah

BeitragSa, Okt 08, 2011 1:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo

Für Binärdaten empfiehlt es sich base64 oder ähnliche Codierungsverfahren zu verwenden, und das muss dann vermutlich nochmal URL-codiert werden.

Der oben genannte String entspricht in base64 "fkK5fyDSIC4i0KbeDD12pNsOPHM3qh4+byBerCCQwCAUqsr/L2A=". In einer URL müsste dass dann etwa so aussehen:

http://www.url.de?xyz=fkK5fyDS...qsr/L2A%3D

Praktische Seite zum codieren/decodieren: http://ostermiller.org/calc/encode.html

Der PHP-Code zum decodieren des Wertes:

Code: [AUSKLAPPEN]
<?php
$wert = base64_decode($_GET['xyz']);
?>

Der Eisvogel

BeitragSa, Okt 08, 2011 10:27
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, Danke dir. Dann werd ich mich da mal ran machen, das anders zu codieren.

EDIT: So, jetzt hat der Server den korrekten String, aber jetzt steh ich schon vor dem nächsten Problem. MySQL spielt nicht mit. Egal, ob ich die Zeichenkette roh, oder escaped in die Abfrage schreibe, keines von beidem funktioniert. Wenn ich aber genau den selben Query den ich in meinem PHP-Skript aufrufe in phpMyAdmin ausführe, komme ich zu einem Ergebnis. Also muss ich mal wieder was falsch machen, aber ich hab keine Ahnung was.
Um die Verbindung zur Datenbank aufzubauen benutzt ich mysqli. Die Zeichenkette ist in der Datenbank in einem varchar(255) abgespeichert und hat die Codierung utf8_bin.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Jolinah

BeitragSo, Okt 09, 2011 3:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie hast du die Daten für das MySQL-Query in PHP codiert? Mit der Funktion mysqli::real_escape_string()? Damit sollte es laut MySQL- und PHP-Dokumentation auch bei binären Daten ohne Probleme funktionieren.

Beispiele:

http://ch2.php.net/manual/en/m...string.php
http://stackoverflow.com/quest...into-mysql

Ansonsten könnte es evtl. mit der Funktion mysqli::prepare und mysqli::bind_param funktionieren:

Code: [AUSKLAPPEN]
<?php
/* create a prepared statement */
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {

    /* bind parameters for markers */
    $stmt->bind_param("s", $city);

    /* execute query */
    $stmt->execute();

    /* bind result variables */
    $stmt->bind_result($district);

    /* fetch value */
    $stmt->fetch();

    printf("%s is in district %s\n", $city, $district);

    /* close statement */
    $stmt->close();
}
?>

Der Eisvogel

BeitragSo, Okt 09, 2011 10:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatte den String sowohl mir mysqli_real_escape_string, als auch ohne codiert gehabt und beides hatte nicht funtioniert. Inzwischen hab ich mich dazu entschlossen den String einfach in einem anderen Format ab zu speichern der nur aus Punkten und Zahlen besteht. Der ist zwar 4 mal so lang, aber um Speicher geht es mir ja nicht.

Danke dir trotzdem.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

hamZta

Administrator

BeitragSo, Okt 09, 2011 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso speicherst du es nicht einfach wie Jolinah schon vorgeschlagen hat base64 kodiert in der Datenbank?
Blog.

Der Eisvogel

BeitragSo, Okt 09, 2011 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil ich die Funktion dann erst in BMax schreiben müsste, und es ja eigentlich egal ist, wie man es abspeichert. Ich habe jetzt einfach jedes Zeichen durch einen Punkt (.) und dem ASCII-Code als Dezimal Zahl ersetzt. Das ist einfach und reicht für die Zwecke.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group