auslesen eines best. Textteiles

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

  • #16
    okay, ich gebe Dir recht

    kannst Du mir sagen, wie ich sowas verhindern kann?

    Kommentar


    • #17
      Verhindern kannst du es, indem du einfach alles, was über $_GET, $_POST und $_FILES reinkommt als böse betrachtest und sorgfältig prüfst. Wie genau diese Prüfung erfolgen muss, hängt vom Einzelfall ab.

      Stichwörter: XSS, SQL Injection, htmlspecialchars, mysql_real_escape_string
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar


      • #18
        Merci )

        werde mich auf jeden Fall damit beschäftigen )

        Kommentar


        • #19
          weiterführende Problematik:

          PHP-Code:
          $ueberschrift "<strong class='silver'>".$ueberschrift."</strong><br />";
          $p_ende "</p>";
           
          $text stripslashes($inhalt); // Beispiel
          $text preg_replace("!^\s*([^<]+)!""<p class='absatz1'>\\1"$text);
          $text $text.$p_ende;
          $text preg_replace("!^\s*<p([^>]*)>!""<p\\1>" $ueberschrift$text);
           
          echo 
          $text
          folgendes funktioniert nicht (Begründung unter dem Code)
          PHP-Code:
          $text preg_replace("!^\s*([^<]+)!""<p class='absatz1'>\\1</p>"$text); 
          Hier wird zwar der p-Tag gesetzt, allerdings wird das End-Tag auch nach einem <br /> gesetzt und nicht erst am Ende der einzulesenden Textdatei.

          Daher die Lösung über:
          PHP-Code:
          $p_ende "</p>";
          $text preg_replace("!^\s*([^<]+)!""<p class='absatz1'>\\1"$text);
          $text $text.$p_ende
          Hier ist jetzt allerdings folgende Kuriosität: Er setzt mir jetzt folgenden Code als Ausgabe zusammen wenn meine Textdatei schon über <p class='absatz1'>Text</p> verfügt.
          PHP-Code:
          <class='absatz1'>Mein Text bis zum Ende</p>
          <
          p></p
          Ich habe keinen Schimmer wo das <p></p> herkommt. Dadurch wird meine ganze Ausgabe "versaut".

          Hat mein Ursprungstext keinen p-Tag, funktioniert es korrekt, also ohne das mir hinterher <p></p> geschrieben wird.

          Hat jemand eine Idee woran es liegen könnte???

          Danke schon einmal im Vorraus,
          Mira

          PS: Habe gerade festgestellt, dass der Fehler nur im IE auftaucht. Im FF kurioserweise nicht.
          Zuletzt geändert von Miranda; 07.10.2009, 13:33.

          Kommentar


          • #20
            Zitat von Miranda Beitrag anzeigen
            PS: Habe gerade festgestellt, dass der Fehler nur im IE auftaucht. Im FF kurioserweise nicht.
            Das wäre ja gar nicht möglich, wenn es ein reines PHP-Problem wäre.

            Dann müssen sich wohl schon die Eingangsdaten unterscheiden.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #21
              Die Eingangsdaten sind identisch. Die Überschrift kommt aus der Datenbank, der dazugehörende Text aus einer Textdatei die eingelesen wird.

              Das ganze sieht zum Schluß ungefähr so aus:

              Hauptüberschrift

              Zweitüberschrift
              Text aus der Textdatei: Bla bla bla

              nächste Zweitüberschrift
              Text aus der nächsten Textdatei: Bla bla bla

              ~~~~~~~~~~~~~~~

              die Ausgabe in Codeform im FF:

              PHP-Code:
              <h4>Hauptüberschrift</h4>
               
              <
              class="absatz"><strong>Zweitüberschrift</strong><br />
              Text aus der TextdateiBla bla bla</p>
               
              <
              class="absatz"><strong>nächste Zweitüberschrift</strong><br />
              Text aus der nächsten TextdateiBla bla bla</p

              die Ausgabe in Codeform im IE:

              PHP-Code:
              <h4>Hauptüberschrift</h4>
               
              <
              class="absatz"><strong>Zweitüberschrift</strong><br />
              Text aus der TextdateiBla bla bla</p>
              <
              p></p>
               
              <
              class="absatz"><strong>nächste Zweitüberschrift</strong><br />
              Text aus der nächsten TextdateiBla bla bla</p>
              <
              p></p

              Kommentar


              • #22
                Hallo Mira,

                darf ich mal anmerken, dass du das ganze Problem gar nicht hättest, wenn du vernünftiges HTML generieren würdest?

                Dein
                HTML-Code:
                <p><strong>Überschrift</strong><br />...</p>
                ist doch nichts anderes als ein verkorkstes
                HTML-Code:
                <h5>Überschrift</h5><p>...</p>
                (Ich hab h5 genommen, weil du vorher bereits von h4 gesprochen hast)

                Gruß,

                Amica
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #23
                  ich hätte liebend gern ein anderes H-Tag genommen.

                  Aber in der Ausgabe mit einem H-Tag sähe es ja so aus:

                  H4 Hauptüberschrift

                  H5 Zweitüberschrift

                  Text aus der Textdatei

                  ~~~~~~~~~~~~~~~~

                  Ich brauche aber entweder:

                  H4 Hauptüberschrift

                  Zweitüberschrift
                  Text aus der Textdatei

                  ~~~ oder

                  H4 Hauptüberschrift

                  Zweitüberschrift Text aus der Textdatei

                  ~~~~~~~~~~

                  so weit ich das richtig sehe, bricht der H-Tag am Ende die Zeile um und setzt einen kleinen Zwischenraum. Gut, den Zwischenraum könnte ich per CSS wegnehmen, aber den Umbruch eben nicht.

                  Oder sehe ich das falsch?

                  Somit muss der Code am Ende eben so aussehen:
                  PHP-Code:
                  <p><strong>Zweitüberschrift</strongText aus der Textdatei</p

                  Kommentar


                  • #24
                    Den Umbruch kannst du auch wegnehmen:

                    Code:
                    h5 { float: left; clear: left; }
                    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                    Super, danke!
                    [/COLOR]

                    Kommentar


                    • #25
                      Zitat von Miranda Beitrag anzeigen
                      so weit ich das richtig sehe, bricht der H-Tag am Ende die Zeile um und setzt einen kleinen Zwischenraum. Gut, den Zwischenraum könnte ich per CSS wegnehmen, aber den Umbruch eben nicht.

                      Oder sehe ich das falsch?
                      Ja, tust du.

                      Den HTML-Code solltest du unabhängig davon erstellen, wie es später einmal genau aussehen soll.
                      Zuerst wird das HTML erstellt, das den Inhalt möglichst sinnvoll auszeichnet - dazu gehört, für Überschriften Hx-Elemente zu nehmen, und nicht irgendwas anderes.

                      Und anschliessend wird das ganze wie gewünscht mit CSS formatiert.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #26
                        so ähnlich arbeite ich doch auch. Ich erstelle mir die Seite in html so, wie sie am Ende aussehen soll und beginne erst dann meine externen Daten an die richtige Stelle zu packen.

                        @Amica

                        Ehrlich gesagt löst aber das mein Problem nicht wirklich. Egal ob ich nun H5 mit CSS verändere oder nicht. Der p-Tag bringt ja auch Eigenschaften mit sich (die ich auch behalten möchte). Unter anderem auch einen Zeilenumbruch.

                        Bsp. mit angepasstem H5

                        <h5>Zweitüberschrift</h5><p>Text aus Textdatei</p>

                        würde ja dann auch so aussehen:
                        ~~~~~~~~~~~~~~
                        Zweitüberschrift

                        Text aus Textdatei
                        ~~~~~~~~~~~~~~

                        Ich brauche aber eine Ausgabe ohne Zwischenraum zwischen den Zeilen bzw. den Text der Textdatei gleich hinter der "Zweitüberschrift"

                        von daher muss der Code eben so aussehen, dass der p-Tag vor der "Zweitüberschrift" beginnt, was ja auch kein Problem mehr ist. Entweder ich lasse ihn schreiben, oder er existiert schon.

                        Das einzige "kuriose" Problem ist halt im IE das <p></p>

                        Kommentar


                        • #27
                          Zitat von Miranda Beitrag anzeigen
                          so ähnlich arbeite ich doch auch. Ich erstelle mir die Seite in html so, wie sie am Ende aussehen soll
                          Genau das ist ja das falsche.

                          Das HTML-Dokument - das erstellt man nicht so, wie es später mal aussehen soll.
                          Sondern so, dass es die Struktur der Inhalte bestmöglich auszeichnet.

                          "Aussehen" kommt erst anschliessend als interessanter Faktor in Betrachtung - bei der Anwendung von CSS.

                          Bsp. mit angepasstem H5

                          <h5>Zweitüberschrift</h5><p>Text aus Textdatei</p>

                          würde ja dann auch so aussehen:
                          ~~~~~~~~~~~~~~
                          Zweitüberschrift

                          Text aus Textdatei
                          ~~~~~~~~~~~~~~

                          Ich brauche aber eine Ausgabe ohne Zwischenraum zwischen den Zeilen bzw. den Text der Textdatei gleich hinter der "Zweitüberschrift"
                          Und wo genau ist bei einem der beiden jetzt das Problem?

                          Abstände regelst du über margin, und die Darstellung als einen eigenen Block bildendes Element unterbindest du mittels display oder float.

                          von daher muss der Code eben so aussehen, dass der p-Tag vor der "Zweitüberschrift" beginnt
                          Nein, muss er nicht.

                          Das einzig relevante "von daher" ist, zum Zeitpunkt der Erstellung des HTML-Codes, die Struktur der Daten.
                          Und wenn in denen etwas mit der Bedeutung einer (Zwischen-)Überschrift vorliegt, dann wird es im HTML auch als solche ausgezeichnet, und Textabsätze kommen dann dahinter, nicht drumherum.
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar

                          Lädt...
                          X