Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonderzeichen bzw. SQL Statement via xmlhttp.open/send werden falsch dargestellt.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sonderzeichen bzw. SQL Statement via xmlhttp.open/send werden falsch dargestellt.

    Hallo Zusammen,

    ein leidliches Thema wenn ich das Forum so durchforste. Aber so ganz habe ich das ganze Thema noch nicht verstanden.

    Mein Beispiel:
    Mein Script überträgt nach Betätigen eines Button einen SQL Statement via xmlhttp.open bzw. .send();

    Ergebnis: Das Statement wird nicht ganz ausgelesen bzw. in einer Variablen gesichert.
    Habe hier mal meine Testscripts (Senden.php und Empfangen.php) reingestellt um die Sachlage klarer darstzustellen. Wohlbemerkt es ist nur ein Auszug des eigentlichen Scripts, soll ja nur das Problem schildern.

    Code: Senden.php

    <script>

    function XMLInsertNewRekl(fQuery, fAsync)
    {
    var xmlhttp;
    if (window.XMLHttpRequest)
    { //code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
    }
    else
    { //code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (fAsync == true)
    {
    //Asynchroner Aufruf: Rücksprung ist die Refrenz der Funktion funktion ()
    xmlhttp.onreadystatechange=function()
    {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    SetReklID(xmlhttp);
    }
    }
    }
    xmlhttp.open("GET","Empfangen.php" + "?Query=" + fQuery, fAsync);
    xmlhttp.send();
    if (fAsync == false)
    {
    //alert("XMLHTTP-Status: " + xmlhttp.status);
    if (xmlhttp.status === 200) {
    //alert(xmlhttp.responseText);
    SetReklID(xmlhttp);
    }
    }
    }

    $('input').click(function()
    {
    switch ($(this).attr("Name"))
    {
    case "Anlegen":
    query = "Insert into Mastertab (Datum) Values ('#2014/09/16#');";
    XMLInsertNewRekl(query, true);
    }
    });
    </script>

    <head>
    <body>
    <div id="Hauptrahmen">
    <input name="Anlegen" type="Button" class="Button" id="Anlegen" value="Anlegen" style="float:left">
    </div>
    </body>
    </head>


    Code: Empfangen.php
    <?php
    $Query = $_GET['Query'];
    ?>


    Ergebnis: "Insert into Mastertab (Datum) Values ('"

    Nach dem # Zeichen wird der String abgeschnitten.

    Frage generell, ich gehe davon aus, gerade bei SQL Statements dass dort vielfach Sonderzeichen wie *,%, usw. genutzt werden.
    Gibt es hier eine generelle Vorgehnsweise bei der Übertragung von Soderzeichen. Hat hier jemand einen Link wo man das nachlesen kann?

    Wäre sehr dankbar wenn Ihr mich hier unterstützen könntet.
    Vielen Dank im Voraus.

    Gruß
    Ralf


  • #2
    Bitte den Code in die Code-Tags geben, das es besser lesbar ist.

    Warum nützt du nicht durchgehend jquery? Siehe zB hier: http://www.w3schools.com/jquery/jque...x_get_post.asp

    Und:

    PHP-Code:
    $('input').click(function()

    switch ($(
    this).attr("Name")) 
    {
    case 
    "Anlegen":
    query "Insert into Mastertab (Datum) Values ('#2014/09/16#');";
    XMLInsertNewRekl(querytrue);

    - Die Datenbankquery direkt in JS zu notieren halte ich für Blödsinn, übertrage nur die relevanten Werte, die du dann auch in PHP entsprechend "filtern/absichern" kannst. Den Rest in PHP. So kann dir jeder mittels einfachem GET-Request jede beliebige query zur Ausführung unterjubeln.

    LG
    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Alternative, schlanke ajax-Komponente: https://github.com/visionmedia/superagent

      Den Query zu übertragen ist sicherheitstechnisch wirklich der Supergau.
      I like cooking my family and my pets.
      Use commas. Don't be a psycho.
      Blog - CoverflowJS

      Kommentar

      Lädt...
      X