Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] mysqli_real_escape_string erzeugt \r\n Ausgaben bei Textarea

Einklappen

Neue Werbung 2019

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

  • [Erledigt] mysqli_real_escape_string erzeugt \r\n Ausgaben bei Textarea

    Hi zusammen,

    mein Problem ist wahrscheinlich ein sehr einfaches, nur steh ich gerade total auf der Leitung.

    Ich habe ein einfaches Formular mit einer Textarea deren Text über einen Submit-Button in eine Datenbank geschrieben werden soll. Funktioniert auch einwandfrei, nur durch die Funktion mysqli_real_escape_string werden bei erneutem einlesen der Daten in die Textarea die Zeilenumbrüche mit \r\n dargestellt, aber ohne Absätze.

    Lasse ich nun die Funktion weg, funktioniert alles einwandfrei und die Absätze sind bei erneutem einlesen aus der DB genauso vorhanden wie ich sie vorher gesetzt habe.

    Da ich jetzt natürlich ungern auf die Funktion verzichten will benötige ich nun eure Hilfe.

    Mein momentaner Code schaut wie folgt aus:

    PHP-Code:
    // Wenn Daten geändert werden sollen
        
    if (isset($_POST['Form_Speichern'])) {
            if (!isset (
    $_POST['Text'])) {
                return 
    FALSCHES_FORMULAR;
            }
            if ((
    '' == $Text         trim($_POST['Text']))) {
                return 
    EINGABEN_FEHLEN;
            }    
             
            if ((!
    Pruefe_Text($Text))) {
                return 
    EINGABEN_UNGUELTIG;
            }
               
            
    $Text mysqli_real_escape_string($db$Text);
            
    $sql 'UPDATE
                        AGB
                    SET
                        Text       = ?'
    ;
            
    $stmt $db->prepare($sql);
            if (!
    $stmt) {
                return 
    PREPARE_FEHLER;
            }
            
    $stmt->bind_param's'$Text );
            
    $stmt->execute();
            if (!
    $stmt) {
                return 
    EXECUTE_FEHLER;
            }
            
    $stmt->close();
            unset(
    $stmt);
            
    $link 'AGB_bearbeiten.html';
            return 
    Meldung_anzeigen('Die AGB wurden erfolgreich geändert.');
        } 

    Die Ausgabe wurde so geschrieben:

    PHP-Code:
    <textarea name="Text" cols="85"  rows="25"><?php echo nl2br($ausgabe['Text']); ?></textarea>
    Ich sitze nun schon seit ein paar guten Stunden vor dem Problem und komme einfach nicht auf den passenden Code.

    Wäre echt super wenn ihr mir helfen könntet

    Gruß Steffen


  • #2
    Wenn du mit prepared statements arbeitest, benötigst du die Funktion mysqli_real_escape_string() nicht.

    PHP: Prepared Statements und Stored Procedures - Manual
    http://hallophp.de

    Kommentar


    • #3
      Hi und danke für die schnelle Antwort,

      ich habe mir den Link von dir angesehen und bin über folgenden Abschnitt gestolpert:

      Die Parameter für Prepared Statements müssen nicht maskiert werden. Der Treiber übernimmt das für Sie. Wenn Ihre Anwendung ausschließlich Prepared Statements benutzt, können Sie sicher sein, dass keine SQL-Injection auftreten wird. (Wenn Sie aber trotzdem andere Teile der Abfrage aus nicht zuverlässigen Eingaben generieren, sind Sie immer noch gefährdet.)
      Find ich ja klasse Ok, super!

      Ich verwende erst seit kurzem Prepared Statements, deswegen war mir der Punkt noch nicht so bewusst.

      Thema erledigt

      Gruß Steffen

      Kommentar

      Lädt...
      X