Datenbank will Daten die über Formular kommen nicht annehmen...

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

  • Datenbank will Daten die über Formular kommen nicht annehmen...

    Hallo,

    folgendes Problem:

    Und zwar will ich Daten über ein Formular in meine Datenbank eintragen, bisher ging das auch alles.

    nun macht er aber plötzlich Probleme, und zwar wenn ich folgenden Text in einem Mehrzeiligen Fomularfeld eintrage, und abschicke (das ganze soll in ein Feld was als longtext defeniert ist).

    Der Text ist der folgende:

    Hallo,

    dies ist eine Mitteilung des GIS-Teams.

    Vielen Dank an alle die uns über Hackervorfälle bezüglich ihrer Items informiert haben.
    Trotzdem möchten wir Euch bitten, uns über die Fälle zu berichten, indem Ihr sie mit Hilfe des neuen Report Formulars, welches Ihr unter help -> customer care center -> ask question to GM -> Someone Robbed My Item(s) auf unserer Webseite findet bei uns meldet. So helft Ihr uns den Wiederbeschaffungsprozess zu beschleunigen.

    Hier eine Erklärung für das neue Formular zum melden von Hackern.
    Wir haben die Felder „Hacker’s ID“ und „Incident date“ gestrichen, da niemand diese notwendigen Informationen eingetragen hat. Stattdessen bitten wir die Spieler ab jetzt Ihr „Gift log“ zu öffnen und mit kopieren und einfügen die notwendigen Informationen in dieses neue Formular einzufügen.
    Die Vorgaben, wie „NoobsSunny“ oder „MummyHair“ oder „14.06.2004 16:47:41“ sind Beispiele. Bitte kopiert und fügt Eure eigenen Informationen hier ein.

    Beispiel:
    „Gift log“
    Bitte listet hier die Items auf die Euch geklaut worden sind, oder benutzt die Funktion kopieren und einfügen.

    Hacker's Gunbound-ID (ID des Hackers) Robbed Item(s) (gestohlene Items) Date of Incident (Datum und Uhrzeit des Vorfalls)
    ”NoobsSunny” “Mummy Hair” “14.06.2004 16:47:41”

    Wie dieses Formular genau zu benutzen ist.
    1. Einloggen auf unserer Webseite www.gunbound.net <http://www.gunbound.net>.
    2. Nach help -> customer care center -> ask question to GM -> Someone Robbed My Item(s) wechseln.
    3. Zum „Gift log“ wechseln, indem Ihr den „Gift log“ Link rechts über dem Mitteilungsfenster anklickt.
    3. Kopiert und fügt die ID des Hackers (Empfänger), Gestohlene Items (Avatar) und Datum des Vorfalls (Datum) anstelle der Beispiele in das Mitteilungsfenster ein.
    4. Bitte beachtet, dass die ID, die unter „Receive“ (Empfänger) steht, die derzeitige „Game ID“ der entsprechenden Person ist, die das Item erhalten hat, egal wann der Transfer durchgeführt wurde. Diese ID wird gleichzeitig mit jeder Änderung der „Game ID“ aktualisiert.
    5. Bitte denkt daran mit kopieren und einfügen Eure Informationen einzusetzen. Wenn Ihr dieses Formular ohne Änderungen abschickt wird Euer Fall nicht bearbeitet.

    Dies alles soll dazu beitragen den Wiederbeschaffungsprozess zu beschleunigen, indem wir sicher gehen, dass die Spieler alle notwendigen Informationen zur Untersuchung des Vorgangs an uns weiterleiten. Bitte habt dafür Verständnis und vielen Dank für Eure Kooperation im Voraus.

    Eure,
    Sotftnyx Co., Ltd.


    Als Fehlermeldung kommt:

    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 's ID (ID des Hackers) Robbed Item(s) (gestohlene Items) Date of

    Bisher hat das immer geklappt über das Formular, warum beid iesem Text nicht?


    EDIT:
    code -> quote
    by Abraxax

    Zuletzt geändert von Abraxax; 05.08.2004, 19:39.

  • #2
    mysql_(real_)escape_string() hast du aber schon verwendet. oder?
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Ähm der Befehl sagt mir gar nichts, wo und wie muss ich den einbauen und was bewirkt der?

      Wie gesagt beidher gings komischerweise immer nur mit diesem Text hat er plötzlich Probs...

      Kommentar


      • #4
        Ähm der Befehl sagt mir gar nichts, wo und wie muss ich den einbauen und was bewirkt der?
        RTFM!

        zeig mal den code, der einträgt.
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Das Formular:

          Code:
          <form method="post" action="news.php">
          <table>
          <tr>
          <td>Überschrift:</td>
          <td><input type="ueberschrift" name="ueberschrift"></td>
          </tr>
          <tr>
          <td>Gruppe:</td>
          <td><input type="text" name="gruppe"> 
          (German Gunbounderz News = 1; 
          Allgemeine News = 2; 
          Offizielle Gunbound News = 3)</td>
          </tr>
          <tr>
          <td>Nachricht:</td>
          <td><textarea name="nachricht" cols="50" rows="25"></textarea></td>
          </tr>
          <tr>
          <td>Link:</td>
          <td><input type="text" name="link"></td>
          </tr>
          <tr>
          <td>Verfasser:</td>
          <td><input type="text" name="verfassername"></td>
          </tr>
          </table>
          <input type="submit"> 
          </form>
          Die Datei die das ganze überträgt:

          Code:
          <?php
            mysql_connect("localhost","******","*****i");
            mysql_select_db("******");
          
          
          $ueberschrift = $_POST[ueberschrift]; 
          $gruppe = $_POST[gruppe]; 
          $nachricht = $_POST[nachricht];
          $link = $_POST[link];
          $verfassername = $_POST[verfassername];
          
          
          $insert = mysql_query("INSERT INTO news 
          (ueberschrift, gruppe, nachricht, link, verfassername, datum) 
          VALUES 
          ('$ueberschrift', '$gruppe', '$nachricht', '$link', '$verfassername', '".time()."' ) ")
          or die(mysql_error());
          
          
          ?>
          
          Deine News wurden gesendet.

          Kommentar


          • #6
            Re: Datenbank will Daten die über Formular kommen nicht annehmen...

            erstaunlich, wie blauäugig manche leute coden.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              wieso? Beher ging es ja....

              Kommentar


              • #8
                OffTopic:
                manchmal möchte ich einfach nur mit um mich werfen ...

                PHP-Code:
                $insert mysql_query('
                  INSERT INTO news 
                  SET 
                    ueberschrift = "'
                .mysql_real_escape_string($_POST['ueberschrift']).'",
                    gruppe = ...
                  '
                ) or die(mysql_error()); 
                solltest du integer-felder haben, bietet sich ein einfacher cast nach int an
                PHP-Code:
                '... = '.(int)$_POST['dings'].
                Zuletzt geändert von derHund; 05.08.2004, 21:01.
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  habe das jetzt sso geändert:

                  Code:
                  <?php
                    mysql_connect("******t","********","******i");
                    mysql_select_db("********");
                  
                  
                  $ueberschrift = $_POST[ueberschrift]; 
                  $gruppe = $_POST[gruppe]; 
                  $nachricht = $_POST[nachricht];
                  $link = $_POST[link];
                  $verfassername = $_POST[verfassername];
                  
                  
                  $insert = mysql_query("INSERT INTO news SET
                  
                  ueberschrift = "'.mysql_real_escape_string($_POST['ueberschrift']).'",
                  gruppe = "'.mysql_real_escape_string($_POST['gruppe']).'",
                  nachricht = "'.mysql_real_escape_string($_POST['nachricht']).'",
                  link = "'.mysql_real_escape_string($_POST['link']).'",
                  verfassername = "'.mysql_real_escape_string($_POST['verfassername']).'",
                  datum = "'.mysql_real_escape_string($_POST['datum']).'",
                  
                  VALUES 
                  ('$ueberschrift', '$gruppe', '$nachricht', '$link', '$verfassername', '".time()."' ) ")
                  or die(mysql_error());
                  
                  
                  ?>
                  
                  Deine News wurden gesendet.
                  bekomme jetzt den Fehler:

                  Code:
                  Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in 
                  /www/htdocs/v115191/admin/news.php on line 15
                  Zuletzt geändert von Laire; 08.08.2004, 17:32.

                  Kommentar


                  • #10
                    pack deinen Code ins Forums-PHP-Tag anstatt in Code-Tag dann siehst du die Fehler.
                    Ausserdem erkläre mal, warum du Datum escapen willst? Weisst du denn überhaupt was du tutst?

                    Kommentar


                    • #11
                      Original geschrieben von asp2php
                      Ausserdem erkläre mal, warum du Datum escapen willst?
                      weil es, so wie's aussieht - $_POST['datum'] - einfach ein textfeld-inhalt ist, der vom client kommt.

                      und da kann alles mögliche drin stehen, auch ', ", # etc.

                      und wenn du sql injections zuverlässig unterbinden willst, dann escapest du solch einen übergabeparameter wohl besser.

                      never trust incomming data ...


                      btw: das datum bereits php-seitig auf ein gültiges format zu prüfen, würde sich darüber hinaus aber wohl auch noch anbieten.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Ich habe nur versucht das umszusetzten was mir oben gesagt wurde!



                        PHP-Code:
                        <?php
                          mysql_connect
                        ("******t","********","******i");
                          
                        mysql_select_db("********");


                        $ueberschrift $_POST[ueberschrift]; 
                        $gruppe $_POST[gruppe]; 
                        $nachricht $_POST[nachricht];
                        $link $_POST[link];
                        $verfassername $_POST[verfassername];


                        $insert mysql_query("INSERT INTO news SET

                        ueberschrift = "'.mysql_real_escape_string($_POST['
                        ueberschrift']).'",
                        gruppe = "'.mysql_real_escape_string($_POST['
                        gruppe']).'",
                        nachricht = "'.mysql_real_escape_string($_POST['
                        nachricht']).'",
                        link = "'.mysql_real_escape_string($_POST['
                        link']).'",
                        verfassername = "'.mysql_real_escape_string($_POST['
                        verfassername']).'",
                        datum = "'.mysql_real_escape_string($_POST['
                        datum']).'",

                        VALUES 
                        ('
                        $ueberschrift', '$gruppe', '$nachricht', '$link', '$verfassername', '".time()."' ) ")
                        or die(
                        mysql_error());


                        ?>

                        Deine News wurden gesendet.

                        So habs jetzt in einen PHP Tag gestzt, ich schätze mal das darf nicht soviel rot sein oder?

                        Aber was fehlt da? Irgendw eine Klammer oder ; ???

                        Kommentar


                        • #13
                          Original geschrieben von Laire
                          So habs jetzt in einen PHP Tag gestzt, ich schätze mal das darf nicht soviel rot sein oder?
                          wow, was dir so alles auffällt ... *g*


                          die schmeißt einfache und doppelte anführungszeichen ziemlich durcheinander.

                          du solltest noch mal auf http://www.php.net/manual/de/language.types.string.php nachlesen, wie man mit strings umgeht.
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar

                          Lädt...
                          X