dedlfix: PHP $_GET und sonderzeichen <>\

Beitrag lesen

echo $begrüßung;

wenn ich jetzt < oder > eingebe und vorschau klicke, steht im <input type="text"> &lt bzw. &gt, backslashes ()
bekomme ich in doppelter Form ausgegeben.
Diese Ausgabe erreiche ich mit htmlspecialchars($buchstabe), ist doch richtig oder?

Ja, wenn man es einmal macht, dann schon.

$buchstabe = (htmlspecialchars($_GET['interpreten_name']));

Die äußeren Klammern sind überflüssig. Ebenso in der nachfolgenden Zeile.

<input type="text" name="interpreten_name" value="'.(htmlspecialchars($buchstabe)).'" />

Hier fügst du den Inhalt von $buchstabe in einen HTML-Kontext ein und behandelst ihn noch ein zweites Mal. Daher deine Verdopplung. Behandle Werte niemals im Voraus, immer erst dann, wenn du sie in einen anderen Kontext bringst. Es geht nämlich noch weiter.

$sql = "SELECT interpret_id, name FROM song_interpret WHERE name LIKE '$buchstabe%' ORDER BY name";

Das oben bereits HTML-behandelte $buchstabe fügst du nun in einen SQL-Kontext ein. Hier haben die HTML-Umschreibungsn &gt; usw. keinerlei nützlichen Wert. Wenn du nach einem in der Datenbank stehenden > suchen möchtest, stattdessen aber nach &gt; suchst, wirst du nicht fündig. (Höchstens pfündig vom Frustessen.)

Arbeite stets mit der Rohform der Daten. Befreie sie bei der Übernahme gegebenenfalls von der Transportsicherung, aber bereite sie erst direkt beim Einfügen in einen Ausgabekontext für diesen auf, nicht vorher. Ändere dabei nicht den Inhalt einer Variablen, die du dann einfügst, sondern wende die Aufbereitungsfunktion direkt an, so wie du es in der <input>-Zeile machst.

$num_rows = mysql_num_rows($resultat);
  echo '<select name="Interpret" size="'.$num_rows.'">'."\n";

Das Ergebnis von mysql_num_rows($resultat) ist eine triviale Zahl und du brauchst es an genau einer Stelle. Es dafür zunächst in einer Variablen abzulegen, ist nicht notwendig. (Bei $sql=... ist der einmalige Variablengebrauch hingegen nützlich, um sich für Debug-Zwecke das Statement ausgeben zu lassen.)

Bist du sicher, dass du auf jeden Fall das select-Element so lang haben möchtest wie Datensätze vorhanden sind? Manchmal ist es sinnvoller, eine Obergrenze zu verwenden, so dass vielleicht 15 gleichzeitig angezeigt werden und der Rest erscrollbar ist. Das ließe sich mit der Funktion min() bewerkstelligen: min(15, mysql_num_rows($resultat)). Wenn num_rows größer als 15 ist, holt die 15 es auf ebendiese Anzahl zurück.

echo "$verabschiedung $name";

0 46

DB Normalisieren und eine ID in 3 Tabellen speichern

Engin
  • datenbank
  1. 0
    Ilja
    1. 0

      DB Normalisieren Ok. 3 INSERT INTO ausführen Problem

      Engin
      1. 0
        Struppi
        1. 0
          Engin
          1. 0
            ChrisB
            1. 0

              3 INSERT INTO ausführen Problem auch OK.

              Engin
              1. 0
                ChrisB
                1. 0

                  LAST_INSERT_ID() bzw. mysql_insert_id() wie richtig verwenden?

                  Engin
                  1. 0
                    ChrisB
                    1. 0
                      Engin
                    2. 0
                      EKKi
                      1. 0
                        Sven Rautenberg
                        1. 0
                          EKKi
                          1. 0
                            Sven Rautenberg
                            1. 0
                              EKKi
                  2. 0
                    Struppi
                    1. 0
                      Engin
                      1. 0
                        ChrisB
                        1. 0
                          Engin
                          1. 0
                            ChrisB
                            1. 0

                              Danke!

                              Engin
                      2. 0
                        Struppi
  2. 0

    Noch eine frage zur DB normailiserung

    Engin
    1. 0
      ChrisB
      1. 0
        Engin
        1. 0
          EKKi
          1. 0
            Engin
            1. 0
              EKKi
              1. 0
                Engin
                1. 0
                  EKKi
                  1. 0
                    Engin
                    1. 0
                      EKKi
                      1. 0
                        Engin
                        1. 0
                          EKKi
                          1. 0
                            Engin
                  2. 0
                    ChrisB
                    1. 0

                      Danke! DB normailiserung schreitet voran

                      Engin
  3. 0

    PHP $_GET und sonderzeichen <>\

    Engin
    • php
    1. 0
      dedlfix
      1. 0
        Engin
        1. 0
          dedlfix
          1. 0
            Engin
            1. 0
              EKKi
              1. 0

                PHP $_GET auch gelöst

                Engin
    2. 0
      EKKi