Anzeige:
Ergebnis 1 bis 3 von 3

Thema: PHP + Formular: Zeilenumbruch nach Textausgabe

  1. #1
    Registrierter Benutzer
    Registriert seit
    18.01.2005
    Beiträge
    6

    PHP + Formular: Zeilenumbruch nach Textausgabe

    Hallo Leute,

    Aus dem Internet habe ich mir ein PHP Gästebuch gezogen. Die Gäste geben ihren Text in die Textarea ein und klicken danach auf den "Eintragen Button". Der Text wird danach in eine SQL Datenbank geschrieben und ausgegeben.

    Ich würde gerne verhindern, dass jemand mein Gästebuch vollmüllt und mein Desigin kaputt macht in dem er zB : "HalloHalloHalloHalloHalloHalloHalloHalloHalloHall oHalloHalloHalloHalloHalloHalloHalloHalloHalloHall o" schreibt

    Gibt es eine Möglichkeit, bei der Textausgabe, nach zB 20 Zeichen automatisch ein Leerzeichen zu setzen oder einen Zeilenumbruch auszulösen? Ich will verhindern, dass dieses Hallohallohallo... in einer Zeile steht.

    Ich hab leider nicht so viel Ahnung von PHP. Daher, wenn jemand eine Lösung hat, am Besten teile von meinne Quelltext kopieren, damit ich weis wo die Befehle hingehören. O_o

    Danke schonmal im vorraus. Hier mein Quelltext:

    Code:
    <?php 
    // Die "db.php" wird includet. Damit haben wir die Verbindug zu der DB aufgebaut und haben alle Funktionen, die sich in der "db.php" befinden zur Hand. 
    include("db.php"); 
      
    // 1. IF-Abfrage | Hinzufügen eines neuen GB-Eintrages 
    // Anweisungen werden ausgeführt, wenn die Variable "$action" den Wert "new" aufweist 
    if ($action == "new") { 
       echo "<b>Neuer beitrag</b><br>"; 
       // 2. IF-Abfrage | Überprüft die Felder "$vorname" und "$text" auf ihre Vollständigkeit 
       if ($vorname != "" && $text != "") { 
            echo "Danke für Ihren Eintrag.<br><br>"; 
           // Das aktuelle Datum(+Uhrzeit) werden auf die Variable "$datum" verwiesen. Das Datum besteht aus einer Zahlenfolge. 
           $datum = time(); 
            // Der neue GB-Eintrag wird in die DB (Tabelle "gaestebuch") gespeichert 
            $sql = "INSERT INTO `gaestebuch` (`name`, `vorname`, `mail`, `icq`, `homepage`, `text`, `datum`)"; 
           $sql .= "VALUES ('$name', '$vorname', '$mail', '$icq', '$homepage', '$text', '$datum');"; 
          query($sql); 
       } 
        // Wenn die Felder nicht vollständig ausgefüllt sind, kommt folgende Meldung 
      else { 
           echo "Sie haben nicht alle Felder ausgef&uuml;t!"; 
    // 2. IF-Abfrage ENDE 
    } 
    // 1. IF-Abfrage ENDE 
    } 
    ?> 
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    <title>G&auml;stebuch</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-5"> 
    </head> 
    <body> 
    <h1>G&auml;stebuch</h1> 
    <h5><b>Hier k&ouml;nnen Sie einen neuen Eintrag erstellen:</b></h5> 
    <!-- Formular ANFANG //--> 
    <form action="gaestebuch.php"> 
    <table cellpadding="0" cellspacing="5" border="0"> 
    <tr> 
    <td width="100" class="text" align="right">Name:</td> 
    <td><input type="text" name="vorname" size="25" ></td> 
    </tr> 
    
    
    <tr> 
    <td class="text" align="right">e-Mail:</td> 
    <td><input type="text" name="mail" size="25"></td> 
    </tr> 
    
    <tr> 
    <td class="text" align="right">Homepage:</td> 
    <td><input type="text" name="homepage" value="http://" size="25"></td> 
    </tr> 
    
    <tr> 
    <td class="text" align="right" valign="top">Nachricht:</td> 
    <td><textarea cols="35" rows="10" name="text"></textarea></td> 
    </tr> 
    
    <tr> 
    <td class="text"><br><br><br>&nbsp;</td> 
    <td valign="top" align="right"><input type="submit" value="Eintragen"></td> 
    </tr> 
    </table> 
    <!-- Im hidden-Feld wird der Variablen "action" der Wert "new" zugewiesen  (wichtig für die IF-Abfrage) //--> 
    <input type="hidden" name="action" value="new"> 
    </form> 
    <!-- Formular ENDE //--> 
    
     <!-- Ausgabe aller GB-Einträge ANFANG //--> 
     <h1>Alle Eintr&auml;ge:</h1><br> 
     <table border="0" width="380" cellpadding="2" cellspacing="0"> 
     <?php 
     // "$persite" legt die Anzahl der GB-Einträge fest, die pro Seite angezeigt werden 
     $persite = 5; 
    
     // IF-Abfrage und Variable "$page" sind für die Verteilung der GB-Einträge auf mehrere Seiten zuständig 
     if($x == "") $x = 0; 
     $page = $x*$persite; 
    
     // In den nächsten 5 Zeilen werden alle GB-Einträge auf einen Array ("$row") verwiesen 
     $result = query("SELECT * FROM gaestebuch ORDER BY Datum DESC LIMIT  $page,5"); 
     $anzahl = mysql_num_rows($result); 
     // WHILE-Schleife dient der Wiedergabe aller GB-Einträge, die sich in der DB befinden 
     // WHILE-Schleife ANFANG 
     while($row = mysql_fetch_array($result)) { 
        // IF-Abfrage überprüft ob eine Homepageadresse eingetragen ist oder nicht und macht dann eine entsprechende Ausgabe 
        if ($row[homepage]=="http://") { 
            $hp = "keine Homepage"; 
        } else { 
            $hp = "<a href=\"$row[homepage]\" target=\"_blank\">Homepage</a>"; 
        // IF-Abfrage ENDE 
        } 
     ?> 
     <!-- Ausgabe der GB-Einträge //--> 
     <tr> 
     <td class="text"><b><? echo $row[vorname]; ?></b> <b><? $row[name]; ?></b> | <a href="mailto:<? echo $row[mail]; ?>">e-Mail</a> | <? echo $hp; ?></td> 
     </tr> 
     <? 
    
     // Da das Datum in einer Zahlenfolge in der DB liegt, muss diese zuerst in ein reguläres Datumformat zerlegt werden. Dies geschieht in folgenden 2 Zeilen 
     $datum = getdate($row[datum]); 
     $okay = "$datum[mday].$datum[mon].$datum[year] um $datum[hours]:$datum[minutes]"; 
     ?> 
     <tr> 
     <td class="text"><i>schrieb am <? echo $okay; ?></i></td> 
     </tr> 
     <? 
     // IF-Abfrage überprüft ob ein Kommentar vorhanden ist oder nicht und gibt diesen ggf. wieder 
     if ($row[8] == "") $kommentar = ""; 
     else $kommentar = "<i><b>Antwort:</b> $row[kommentar]</i>"; 
     ?> 
     <tr> 
     <td class="text"> <? echo $row[text]; ?></td></tr> 
     <tr> 
     <td class="text">&nbsp;</td> 
     </tr> 
     <tr> 
     <td class="comment"><? echo $kommentar; ?></td> 
     </tr> 
     <tr> 
     <td class="text">&nbsp;</td> 
     </tr> 
     <tr> 
     <td class="text"><hr align="center" color="000000" width="100%"></td> 
     </tr> 
     <tr> 
     <td class="text">&nbsp;</td> 
     </tr> 
     <? 
     // WHILE-Schleife ENDE 
     } 
     ?> 
     </table> 
     <? 
     // Die "menge"-Funktion wird aufgerufen um die Anzahl aller GB-Einträge zu ermitteln 
     $count = menge("gaestebuch"); 
    
     // Im foldendem Abschnitt werden die GB-Einträge auf mehrere "Seiten" aufgeteilt 
     $count = $count/$persite; 
     // FOR-Schleife ANFANG 
     for($z=0; $z<$count; $z++) { 
         $y = $z+1; 
         // IF-Abfrage ANFANG 
         if ($x != $z) { 
                 echo "<a href=\"gaestebuch.php?show=guestbook&kat=site&x=$z\">$y</a> | "; 
         } else { 
             echo "<b>$y</b> | "; 
         // IF-Abfrage ENDE 
        } 
     // FOR-Schleife ENDE 
     } 
     ?> 
     <!-- Ausgabe der aller Gästebucheinträge ENDE //--> 
     </body> 
     </html>

  2. #2
    Registrierter Benutzer Avatar von h2o471
    Registriert seit
    15.09.2006
    Ort
    Luckenwalde / Brandenburg
    Beiträge
    14

    Lange Textstücke kürzen.....

    hi skyfire,

    probier mal folgendes:

    PHP-Code:
    $originaltext 'Huhu HalloHalloHalloHalloHalloHalloHalloHalloHalloHallo Hihi';
    echo 
    $originaltext.'<br />';

    $textanzeige '';
    $maxLaenge 20;
    $arrText explode(" "$originaltext);
    for(
    $i=0$i<count($arrText); $i++){
      if(
    strlen($arrText[$i]) > $maxLaenge){
        
    $schnipsel substr($arrText[$i],0,$maxLaenge);
      }else{
        
    $schnipsel $arrText[$i];
      }
      
    $textanzeige $textanzeige.' '.$schnipsel;
    }
    echo 
    $textanzeige
    die einzelnen worte des ankommenden formulars werden in ein Array geschoben und dort auf ihre länge geprüft. anschließend werden stücke die länger als 20 zeichen sind gekürzt und zum schluß alles wieder zusammengefügt.

    ich hoffe es hilft.
    gruss
    mirko

  3. #3
    Registrierter Benutzer
    Registriert seit
    22.08.2002
    Ort
    Nürnberg
    Beiträge
    638
    Ehrlich gesagt: Man sollte nicht einfach jedes Script aus dem Internet nehmen, welches man da findet.

    Über das Problem mit überlangem Wort solltest Du Dir die geringsten Gedanken machen. Denn Dein Layout kann jeder durch einfachstest HTML zerstören, welches da eingebaut wird. Weiterhin ist das ganze offen für Cross-Site-Scripting-Attacken. Gar nicht erst zu Reden von SQL-Injection oder den ganzen Spammern, die Dein Gästebuch mit Link-Spam zu schmeisen werfen. Praktisch ein Paradebeispiel an "So tut man es nicht."

    Ein Tip: Setz dich mit PHP auseinander oder verzichte auf ein Gästebuch.
    Homepage: www.pingu.info

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •