tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
376
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    ObScUrItAs ObScUrItAs ist offline Mitglied
    Registriert seit
    Apr 2005
    Beiträge
    20
    Ich will einen Wert aus einer RegBinary mit einem C-Programm auslesen und mittels $HTTP_GET_VARS an eine PHP-Seite übergeben. In der RegBinary steht das :
    ä¤p¥‚ÄÏõÀ5D+]

    als Hex sieht das ganze so aus :
    15 e4 a4 70 a5 la 82 c4 cf f5 c0 04 35 44 2b 5d

    Wenn ich den Wert mit dem C-Programm aus der RegBinary auslese und mit fopen("", wb) in eine Datei schreibe steht genau das:

    ä¤p¥‚ÄÏõÀ5D+]

    in der Datei. Wenn ich das Zeug an eine PHP-Seite übergebe mit :
    Code :
    1
    2
    3
    
    strcat(adresse, "http://bsp.de/index.php?var=");
    strcat(adresse, toll);
    ShellExecute(NULL, "open", adresse, NULL, NULL, SW_SHOW);
    ( toll ist hierbei der String, in den ich den Wert aus der Binary reinschreibe )
    dann steht die Variable auch in der Adresszeile, aber es ist ein komischer Mix aus den Zeichen und dem Hex-Code und zwar sieht das Ganze dann so aus :

    Code :
    1
    
    http://bsp.de//index.php?var=%15%C3%A4%C2%A4p%C2%A5%1A%C2%82%C3%84%C3%8F%C3%B5%C3%80%045D+]

    und wenn das PHP-Skript dann mit HTTP_GET_VARS und fopen("datei.txt", wb); die Variable in die Datei schreiben soll und ich die Dartei öffne, steht das drinne :
    ä¤p¥‚ÄÏõÀ5D ]

    sieht ähnlich aus wie die Urpsprungsvariable aber ein paar Zeichen lässt es einfach weg. Woran liegt das ?
    Geändert von ObScUrItAs (03.05.05 um 16:48 Uhr)
     

  2. #2
    FireFlow FireFlow ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Beiträge
    213
    C-Strings werden durch eine terminierende Null abegeschlossen. D.h er liest im Speicher solange ab deinem Pointer bis irgendwann eine Null da steht.

    Häng einfach noch ein strcat(adresse, "\0"); an.

    Bin mir aber net ganz sicher obs daran liegt villeicht macht das strcat schon von allein (glaube ich aber nicht). Zur überprüfung gib doch einfach mal adresse aus dann siehst du doch wo der Fehler liegt.
     
    --//--//--// My StillLife! //--//--//--
    Obere URL dient nur als Google-Push )

  3. #3
    Avatar von jokey2
    jokey2 jokey2 ist offline Mitglied Smaragd
    Registriert seit
    Nov 2004
    Beiträge
    1.235
    Im Großen und Ganzen paßt das ja, daß die einzelnen Zeichen in ihre Hex-Werte umgewandelt werden. Nur mit dem '+' scheint es Probleme zu haben. Wie ich es sehe, hast Du 2 Möglichkeiten:
    1. Schon vor dem ShellExecute alle '+' - Zeichen in Deinem String selber in ihr HEX-Äquivalent umwandeln. Das birgt die Gefahr, daß Dir beim nächsten String wieder ein anderes Zeichen unterkommt, das nicht automatisch umgewandelt werden kann (z.B. '-' evtl.).
    2. Vor dem 2. strcat ALLE Zeichen in Deinem Variablenstring (toll) in ihr HEX-Äquivalent umwandeln.

    Woher Du allerdings die richtigen HEX-Werte bekommst, weiß ich leider auch nicht.

    P.S.: Vielleicht geht es auch, wenn Du Deinen Variablenstring in Hochkommata setzt.
     

Ähnliche Themen

  1. Konstruktor mit Übergabe eines Wertes
    Von voelzi im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 21.11.09, 21:05
  2. (Oracle 10.2) Wertes auf Basis eine min/max Wertes eines anderen Feldes
    Von Sabine_81 im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 27.10.08, 15:49
  3. Antworten: 2
    Letzter Beitrag: 03.05.05, 17:26
  4. Übergabe eines Wertes
    Von minlok im Forum .NET Archiv
    Antworten: 0
    Letzter Beitrag: 17.03.05, 09:54
  5. Antworten: 4
    Letzter Beitrag: 19.01.05, 11:20