Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Zeilenumbruch im Input type text???

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Zeilenumbruch im Input type text???

    Hallo zusammen,

    ich habe ein kleines Problem das ich mir nicht erklären kann wer sich nicht für die vorgeschichte interessiert soll den kommentarbereich überspringen

    /*
    Ich habe ein textfeld in einem Formular:
    PHP-Code:
    <input type="text" name="irrelevant" /> 
    In der Datenbank haben ich eine spalte:
    PHP-Code:
    irrelevant varchar(100
    Jetzt ist es so das später mit PHP in einer foreach-schleife ein JS Code generiert wird der den wert aus "irrelevant" benötigt:
    PHP-Code:
    <?php
    $array 
    = array(
        
    'irrelevant' 'bla',
        
    'irrelevant1' 'bla1',
        
    'irrelevant2' 'bla2'
    );
        foreach(
    $array as $key => $value) {
    ?>
        inhalt += '<a href="#" onclick="alert(\'bild\')"><?php print $value?></a>';
    <?php
        
    }
    ?>
    dadurch wird folgender Code generiert
    PHP-Code:
        inhalt += '<a href="#" onclick="alert(\'bild\')">bla</a>';
        
    inhalt += '<a href="#" onclick="alert(\'bild\')">bla1</a>';
        
    inhalt += '<a href="#" onclick="alert(\'bild\')">bla2</a>'
    soweit alles in ordnung.

    Heute bekomme ich plötzlich eine Fehlermeldung "unterminated string literal", obwohl der Code schon seit wochen einwandfrei lief. Nach einiger zeit der suche bemerke ich das im quelltext ein zeilenumbruch ist:
    PHP-Code:
        inhalt += '<a href="#" onclick="alert(\'bild\')">bla
    </a>'
    ;
        
    inhalt += '<a href="#" onclick="alert(\'bild\')">bla1</a>';
        
    inhalt += '<a href="#" onclick="alert(\'bild\')">bla2</a>'
    Daraufhin versuche ich herauszufinden woher dieser kommt und finde den übeltäter in der Datenbank. Mein Varchar-Feld war plötzlich 3 Zeilen hoch? Naja dann habe ich den zeilenumbruch gelöscht und das script lief wieder einwandfrei.

    Jetzt ergeben sich daraus für mich 2 Fragen

    */

    1. Wie kam der zeilenumbruch in die DB? (habe ohne erfolg so ziemlich jede return-kombination versucht um im input einen zeilenumbruch zu erzeugen)

    2. Wie kann ich das in zukunft vermeiden? (wobei sich diese Frage wahrscheinlich von selbst beantworten wird sobald 1 beantwortet ist)

  • #2
    PHP-Code:
    $text trim($text);
    $text str_replace(array("\r\n""\n""\r"), ''$text); 

    Kommentar


    • #3
      Zitat von JEGO Beitrag anzeigen
      PHP-Code:
      $text trim($text);
      $text str_replace(array("\r\n""\n""\r"), ''$text); 
      an sowas ähnliches habe ich auch gedacht, aber wie kommt ein "\n" in ein Input feld?

      Kommentar


      • #4
        evtl. durch [Strg] + c und [Strg] + v

        Kommentar


        • #5
          Zitat von JEGO Beitrag anzeigen
          evtl. durch [Strg] + c und [Strg] + v
          habs auch schon probiert und bitte nicht raten

          Kommentar


          • #6
            und bitte nicht raten
            Du suchst also einen Hellseher.

            Kommentar


            • #7
              Hab leider keine Glas Kugel zur Hand zur Zeit. Daher kann ich nur raten.

              Kommentar


              • #8
                Zitat von David Beitrag anzeigen
                Du suchst also einen Hellseher.
                Nein, aber es kann doch nicht sein das ich der erste bin dem sowas passiert ^^. Die fragestellung ist im grunde "Wie kann ich einen zeilenumbruch in einem <input type="text"> erzeugen"

                mir fällt übrigens ein das:

                Zitat von JEGO Beitrag anzeigen
                PHP-Code:
                $text trim($text);
                $text str_replace(array("\r\n""\n""\r"), ''$text); 
                nicht funktionieren würde da ich sowieso prepared statements verwende.

                Kommentar


                • #9
                  nicht funktionieren würde da ich sowieso prepared statements verwende.
                  äh...was hat das damit zu tun?

                  Die fragestellung ist im grunde "Wie kann ich einen zeilenumbruch in einem <input type="text"> erzeugen"
                  Also reicht es Dir, wenn man Dir irgendeine Möglichkeit zeigt?
                  PHP-Code:
                  <?php
                  $postdata 
                  http_build_query(
                    array(
                      
                  'var1' => "zeile1\nzeile2"
                    
                  )
                  );

                  $opts = array(
                    
                  'http' => array(
                      
                  'method'  => 'POST',
                      
                  'header'  => 'Content-type: application/x-www-form-urlencoded',
                      
                  'content' => $postdata
                    
                  )
                  );
                  $context  stream_context_create($opts);
                  $result file_get_contents('http://example.com/submit.php'false$context);
                  ?>

                  Kommentar


                  • #10
                    Oder ums anders zu sagen: Ganz einfach - indem man Dein Formular nicht benutzt.

                    Kommentar


                    • #11
                      Zitat von David Beitrag anzeigen
                      äh...was hat das damit zu tun?
                      Mein fehler, irgendwie war ich mir gerade noch sicher das prepared statements alle sonderzeichen markieren

                      Zitat von nikosch Beitrag anzeigen
                      Oder ums anders zu sagen: Ganz einfach - indem man Dein Formular nicht benutzt.
                      Da es sich um einen testserver handelt bin ich mir aber ziemlich sich dass das Formular benutzt wurde.

                      Zitat von David Beitrag anzeigen
                      Also reicht es Dir, wenn man Dir irgendeine Möglichkeit zeigt?
                      Ja, allerdings denkst du schon viel zu kompliziert. Es muss eine möglichkeit geben mit der ein stinknormaler user, der noch nie was von php oder html gehört hat (eine tastenkombination oder was weiß ich was), einen zeilenumbruch in besagtem input-feld erzeugen kann.

                      Ps: Mir ist klar das der replace von Jego mein problem löst, trotzdem würde es mich interessieren wie dieser umbruch zustande gekommen ist

                      Kommentar


                      • #12
                        Ja, allerdings denkst du schon viel zu kompliziert. Es muss eine möglichkeit geben mit der ein stinknormaler user, der noch nie was von php oder html gehört hat (eine tastenkombination oder was weiß ich was), einen zeilenumbruch in besagtem input-feld erzeugen kann.
                        So oder so ist es möglich, also musst Du das Skript dagegen absichern.

                        Kommentar


                        • #13
                          Zitat von David Beitrag anzeigen
                          So oder so ist es möglich, also musst Du das Skript dagegen absichern.
                          Ist schon erledigt

                          Kommentar

                          Lädt...
                          X