Textformatierung in PHP

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von chris_9_11, 05.02.2005.

  1. chris_9_11

    chris_9_11 Thread Starter MacUser Mitglied

    Beiträge:
    162
    Zustimmungen:
    0
    MacUser seit:
    11.06.2004
    Hallo zusammen,

    hoffentlich kann mir hier jemand helfen. Ich habe in Dreamweaver MX ein Kontaktformular eingebaut, welches über PHP verarbeitet wird und bei Fehleingaben eine Meldung bringt. Soweit funktioniert alles einwandfrei, doch leider passt die Formatierung des ausgegebenen Textes nicht zu meinem restlichen Design der Website. Wie kann ich den Text am besten formatieren? Außerdem frage ich mich, wie ich den Text der per Mail verschickt wird formatieren kann.

    Dann hätte ich noch eine kleine Frage am Rande. Wie kann ich unter PHP überprüfen, ob in einem Feld nur Ziffern (z.B. bei der PLZ) oder nur Ziffern und Sonderzeichen (z.B. bei der Telefon- oder Faxnummer) eingegeben worden sind?

    Danke für eure Hilfe!
    chris_9_11
     
  2. netrob

    netrob MacUser Mitglied

    Beiträge:
    9
    Zustimmungen:
    0
    MacUser seit:
    31.01.2005
    (Teil-) Antwort

    Grüß dich, Chirs.

    Mit der Dreamweaver-Thematik kann ich dir leider nicht weiter helfen - formuliere meinen Code eigendlich gern selbst. :)

    Du kannst zwar die Ausgabe von PHP mit HTML-Tags selbst steuern; wenn du aber ja bereits Dreamweaver angeworfen hast, willste da bestimmt nicht mehr händisch ran *frageweitergeb*

    Was die Überprüfung der Stringinhalte für Tel-/Faxnummer-Eingaben angeht, würde ich folgendes empfehlen:

    zur Überprüfung der Länge der Eingabe schau dir mal folgende Funktion an:
    http://de.php.net/manual/de/function.strlen.php

    und zur Überprüfung, ob die enthaltenen Zeichen auch nur solche sind, die du haben möchtest, ist folgende Funktion interessant:
    http://de.php.net/manual/de/function.strspn.php

    Zusammengesetzt könnte das in PHP dann so aussehen:


    <?php

    // Daten aus Post-Übermittlung holen
    // ggf. $_POST durch $_GET bei Get-Übermittlung des Formulars austauschen
    $handy_nr = $_POST["formularfeld_beispiel_name"];

    $erlaubte_zeichen = "0123456789/";
    $erlaubte_laenge = 13;

    if ( strlen($handy_nr) <= $erlaubte_laenge
    && strspn($handy_nr, $erlaubte_zeichen) == true )
    {

    // weitermachen bzw. versenden...

    }
    else
    {

    // zurück bzw. Fehlermeldung ausgeben...

    }


    ?>


    _________
    goodluck

    ...netrob
     
    Zuletzt bearbeitet: 05.02.2005
  3. chris_9_11

    chris_9_11 Thread Starter MacUser Mitglied

    Beiträge:
    162
    Zustimmungen:
    0
    MacUser seit:
    11.06.2004
    Dreamweaver verwende ich nur um dem ganzen ein passendes Äußeres zu verleihen. Den PHP-Code habe ich komplett manuell eingegeben. Ich habe jetzt halt eine ganz simple if-Funktion, die mir bei einem Fehler eine Meldung mit echo ausgibt. Wie kann ich jetzt den Text dieser Meldung formatieren? Muss ich die html-Tags auf eine bestimmte Weise einfügen? Danke auf jedem Fall schon mal für deine Hilfe.

    chris_9_11
     
  4. Horror

    Horror MacUser Mitglied

    Beiträge:
    1.416
    Zustimmungen:
    9
    MacUser seit:
    03.02.2003
    Du kannst das (fast) einfach als normalen HTML-Code einpflegen:

    PHP:
    <?php
    echo "<h2><font color = red><strong>Fehlermeldung</strong></font></h2>";
    ?>
    erzeugt dir die Ausschrift Fehlermeldung in rot in der Grösse der Überschrift 2. Deiner Fantasie sind dabei keine Grenzen gesetzt ;)

    Horror
     
  5. Arclite

    Arclite MacUser Mitglied

    Beiträge:
    812
    Zustimmungen:
    0
    MacUser seit:
    04.12.2003
    Ich persönlich zähle da auf Template Engines. Mit solchen kann man wunderbar das Design von der Applikation trennen. Besonders praktisch wenn man zu mehreren an nem Projekt arbeitet. Ne freie Templateenigne wäre Smarty:
    http://smarty.php.net/

    Kurzes Beispiel:
    PHP datei:
    PHP:
    <?php
    require('smarty.class.php');
    $smarty = new Smarty;

    $smarty->assign('title','Testpage');
    $smarty->assign('nachricht','Hello World!');
    $smarty->display('template.tpl');
    ?>
    und die Template datei (template.tpl):
    HTML:
    <html>
    <head><title>{$title}</title></head>
    <body>
    <span style="font-family: Helvetica, sans-serif; font-size: 12px;">{$nachricht}</span>
    <body></html>
    
    ausgegeben wird dann wenn man die php datei aufruft:
    HTML:
    <html>
    <head><title>Testpage</title></head>
    <body>
    <span style="font-family: Helvetica, sans-serif; font-size: 12px;">Hello World!</span>
    <body></html>
    
    Die möglichkeiten von Smarty sind ziemlich groß. So kann man Strings im template verändern, If abfragen machen, schleifen oder auch phpcode direkt im template ausführen. Am besten mal die ersten paar seiten des Manuals lesen (gibts auch auf deutsch auf der site). Ist wirklich sehr Praktisch.

    Nochwas:
    Wenn dus so wie Horror machst, musst du alle " die im htmlcode vorkommen 'escapen', also nen vorangestellten backslash (\) verpassen.
    PHP:
    <?php
    echo "<a href=\"index.php\">test</a>";
    // besser ist:
    echo '<a href="index.php">test</a>';
    // wenn ' statt " verwendet wird, wird der code aber nicht nach variablen durchsucht. (das spart aber auch performance).
    ?>
    Ich hoffe das war jetzt nicht zu kompliziert. :)
     
  6. chris_9_11

    chris_9_11 Thread Starter MacUser Mitglied

    Beiträge:
    162
    Zustimmungen:
    0
    MacUser seit:
    11.06.2004
    Es klappt einfach nicht!?

    Ich habe es jetzt mal mit ganz einfachem HTML-Code versucht. Das alles sieht dann folgendermaßen aus:

    PHP:
        if (strpos($HTTP_POST_VARS[email], "@") > -){
            }
        else {
            echo 
    "<font color = red; font = Times>Ihre angegebene Mail Adresse ist nicht gültig!</font><br>"; die; }
    Der ausgegebene Text ist aber dann grün!? und wird in Arial bzw. der jeweiligen Systemschriftart (ich verwende Safari, unter IE in Windows ist es Times) angezeigt.

    Außerdem füge ich mal einen Link zu der Seite an (ist wie gesagt unter Dreamweaver mit Hilfe von CSS-Styles angelegt worden):

    http://www.sina-waechter.com

    Ich möchte einfach, dass die Fehlermeldung so formatiert ist wie der normale Fließtext und die Abschlussmeldung nach erfolgreicher Übermittlung der Nachricht die gleiche Formatierung wie die Überschriften hat. Ihr könnte auch gerne mal probehalber das Formular ausfüllen, geht ja sowieso an mich.

    Damit alles komplett ist, hänge ich einfach mal noch den gesamten Code des PHP-Scripts an:

    PHP:
    <?
    $HTTP_POST_VARS[empfaenger] = "deiss@thomas-imaging.de";

    // Zusammenfügen der Einzelteile zu einer Mail
    $HTTP_POST_VARS[textfinal] = "Name: $HTTP_POST_VARS[name]\nAdresse: $HTTP_POST_VARS[strasse]\nPLZ, Ort: $HTTP_POST_VARS[plz] $HTTP_POST_VARS[ort]\nTelefon: $HTTP_POST_VARS[telefon]\nFax: $HTTP_POST_VARS[fax]\nE-Mail Adresse: $HTTP_POST_VARS[email]\n \nhat ihnen folgende Nachricht gesendet:\n \n$HTTP_POST_VARS[betreff]\n \n$HTTP_POST_VARS[text]";

    //jetzt wird geprüft ob Mail, Name oder Betreff vielleicht zu lang sind
        
    $HTTP_POST_VARS[lengthe] = strlen($HTTP_POST_VARS[email]);
        
    $HTTP_POST_VARS[lengthn] = strlen($HTTP_POST_VARS[name]);
        
    $HTTP_POST_VARS[lengthf] = strlen($HTTP_POST_VARS[firma]);
        
    $HTTP_POST_VARS[lengths] = strlen($HTTP_POST_VARS[strasse]);
        
    $HTTP_POST_VARS[lengthp] = strlen($HTTP_POST_VARS[plz]);
        
    $HTTP_POST_VARS[lengtho] = strlen($HTTP_POST_VARS[ort]);
        
    $HTTP_POST_VARS[lengtht] = strlen($HTTP_POST_VARS[telefon]);
        
    $HTTP_POST_VARS[lengthfa] = strlen($HTTP_POST_VARS[fax]);
        
    $HTTP_POST_VARS[lengthb] = strlen($HTTP_POST_VARS[betreff]);
        
    $HTTP_POST_VARS[lengthtx] = strlen($HTTP_POST_VARS[text]);
        if (
    $HTTP_POST_VARS[lengthf] < 30) {
            }
        else {
            echo 
    "Ihr Firmenname ist zu lang!"; die; }
        if (
    $HTTP_POST_VARS[lengthn] < 30) {
            }
        else {
            echo 
    "Ihr Name ist zu lang!"; die; }        
        if (
    $HTTP_POST_VARS[lengths] < 30) {
            }
        else {
            echo 
    "Ihre Adresse ist zu lang!"; die; }        
        if (
    $HTTP_POST_VARS[lengthp] < 6) {
            }
        else {
            echo 
    "Ihre Postleitzahl ist zu lang!"; die; }
        if (
    $HTTP_POST_VARS[lengtho] < 30) {
            }
        else {
            echo 
    "Ihr Ortsname ist zu lang!"; die; }
        if (
    $HTTP_POST_VARS[lengthe] < 50) {
            }
        else {
            echo 
    "Ihre E-Mail Adresse ist zu lang!"; die; }
        if (
    $HTTP_POST_VARS[lengthb] < 100) {
            }
        else {
            echo 
    "Ihr Betreff ist zu lang!"; die; }
        if (
    $HTTP_POST_VARS[lengthtx] < 500) {
            }
        else {
            echo 
    "Ihre Nachricht ist zu lang!"; die; }
    //Hier wird geprüft ob die Mail Adresse gültig ist und ob in Name, Betreff und Nachricht überhaupt Text ist.
        
    if (strpos($HTTP_POST_VARS[email], "@") > -){
            }
        else {
            echo 
    "<font color = red; font = Times>Ihre angegebene Mail Adresse ist nicht gültig!</font><br>"; die; }
        if (
    $HTTP_POST_VARS[name] == "") {
            echo 
    "Sie müssen einen Namen eingeben!<br>"; die; }
        else {
            }
        if (
    $HTTP_POST_VARS[firma] == "") {
            echo 
    "Sie müssen einen Firmennamen eingeben!<br>"; die; }
        else {
            }
        if (
    $HTTP_POST_VARS[text] == "") {
            echo 
    "Sie haben keine Nachricht eingegeben!<br>"; die; }
        else {
            }
    //und ab dafür
        
    if (@mail($HTTP_POST_VARS[empfaenger], $HTTP_POST_VARS[betreff], $HTTP_POST_VARS[textfinal], "From: \"$HTTP_POST_VARS[name]\" <$HTTP_POST_VARS[email]>"))
            {
            echo 
    "<strong>Ihre Nachricht wurde übermittelt.<br>Vielen Dank!</strong></div>"; }
        else
            {
            echo 
    "<div align='center'><strong>Aufgrund eines Fehlers<br>konnte Ihre Nachricht nicht übermittelt werden!<br>Bitte versuchen Sie es erneut.</strong></div>"; }
    ?>
    Danke für eure Hilfe!

    chris_9_11
     
    Zuletzt von einem Moderator bearbeitet: 25.10.2015
  7. Nogger

    Nogger MacUser Mitglied

    Beiträge:
    367
    Zustimmungen:
    0
    MacUser seit:
    03.08.2004
    Es gibt in XHTML keine Farbe namens "red;". Das Element <font> ist veraltert und soll nicht mehr verwendet werden. Es kennt weiterhin kein Attribut namens "font".

    Wolltest du sowas wie <span style="color: red; font: Times;">...</span> ?
    Oder noch besser eine Klasse mit Deklaration im Stylesheet, ist ja nicht die einzige Fehlermeldung.

    "<br>" ist kein gültiges Element in XHTML. Dort heißt es <br/>. Empfohlenderweise aber <br />, weil die Seite als HTML ausgeliefert wird, und sich die Browser ohne das Leerzeichen verschlucken können.

    Das Beenden mittels die() erzeugt eine ungültige Seite. Schau dir mal den Quelltext an, bricht in den 65. Untertabelle ab.

    Das Javascript ist nicht korrekt eingebaut, siehe http://www.w3.org/TR/xhtml1/#h-4.8

    Das PHP Skript ist gruselig.

    Viel Erfolg noch.
     
    Zuletzt bearbeitet: 07.02.2005
  8. chris_9_11

    chris_9_11 Thread Starter MacUser Mitglied

    Beiträge:
    162
    Zustimmungen:
    0
    MacUser seit:
    11.06.2004
    Mit <span style="color: red; font: Times;">...</span> habe ich es jetzt auch probiert, doch leider bringt er mir dann beim Ausführen einen Fehler.

    Was meinst du mit "eine Klasse mit Deklaration im Stylesheet"? Ich habe mit Dreamweaver einige CCS-Styles angelegt, die auch schon abrufen wollte, was aber auch nicht funktioniert hat.

    Allgemein muss ich zu dem PHP-Script sagen, dass ich mir vor einer Woche einfach mal ein Beispiel-Script aus dem Netz geladen habe, welches eigentlich funktionieren sollte, es aber nicht tat. Ich bin froh, dass ich es bis jetzt immerhin geschafft habe mit Self-PHP und vielem Ausprobieren das PHP-Skript an meine Seite anzupassen, einige Fehler zu korrigieren und dass das Script das macht, was ich von ihm möchte. Von daher kann ich gut verstehen, dass es gruselig ist. Was habe ich falsch gemacht und welche Korrekturen sollte ich vornehmen? Sollte ich statt dem die-Befehl den exit-Befehl verwenden?

    Das Java-Script habe ich mithilfe von Fireworks erstellt und einfach in Dreamweaver importiert.
     
  9. catvarlog

    catvarlog MacUser Mitglied

    Beiträge:
    1.468
    Zustimmungen:
    1
    MacUser seit:
    30.01.2005
    das liegt an den anführungstrichen. verwende entweder ' anstelle von " oder setze vor jedem " einen backslash. so z.B.

    Code:
    <span style=\"color: red; font: Times;\">
    der fehler "grüne farbe" könnte auch an den leerzeichen um das = liegen. verwende aber lieber css/style angabe - das ist sauberer.

    gruss, cat
     
  10. catvarlog

    catvarlog MacUser Mitglied

    Beiträge:
    1.468
    Zustimmungen:
    1
    MacUser seit:
    30.01.2005
    na... :) gruselig ist es nicht - man muss am anfang nur ne menge lernen...
    grundsätzlich ist das - wie du schon sagts - ein rohes anfänger-skript und
    dafür ja schon recht gut.

    zu der die-frage: du kannst die oder exit verwenden. das ist identisch.
    ich nehme lieber exit. klingt positiver :)

    grundsätzlich fällt bei dem skript auf, dass es auf biegen und brechen
    nur das nötigste erledigt und das z.T. noch nicht optimal. da du
    programmier-einsteiger bist, fehlt bei dem skript eine grundsätzliche
    konzeption. um das zu schaffen, braucht man allerdings grundkenntnisse
    der programmierung.

    ich würde dir für den anfang empfehlen, das skript nicht ständig per die/exit
    abzubrechen - das ist bei dir zur Zeit weder notwendig noch sinnvoll. mach es
    lieber so:

    1.) zuerst prüfen ob alle daten da sind
    2.) dann prüfen, ob die daten deinen vorgaben entsprechen (z.B. länge)
    3.) dann entscheiden, ob du die mail sendest oder nicht
    4.) dann einen entsprechenden info-text an den user ausgeben
    5.) dann exit, von mir aus auch die :) !

    so könntest du zum beispiel zunächst fehler sammeln und dann
    eine komplette status-info über diese fehler an den user senden:


    PHP:

    // hier kommen die bedingungen wie z.B. strlen

     
    if ($HTTP_POST_VARS[name] == "") {
       
    $fehlermeldung .= "Sie müssen einen Namen eingeben!<br>"
       
    // wichtig: wenn du .= anstelle von = schreibts, wird es 
       // deiner Variablen $fehlermeldung hinzugefügt. 
       // .= ist quasi ein additions-zeichen für text...
       // Du kannst damit also alle Fehlermeldung der einzelnen Abfragen sammeln.

       
    $error TRUE;
       
    // $error ist dein Indikator, ob es einen fehler gegeben hat. 
       // sobald ein fehler auftritt, schreibst du diese zeile.  ps: das ist keine 
       // eigenschaft von php - das definierst du einfach selber.
    }

    if (
    $HTTP_POST_VARS[lengthtx] > 500) { // hier mit > "größer als" matchen
       
    $fehlermeldung .= "Der Text ist zu lang!<br>";
       
    $error TRUE;
    }

    // hier kommt deine prüfung auf existenz von betreff, text etc.
    // ...


    // hier kommt der versand der mail
    // ...

    if ($error != TRUE){ // != meint "wenn es nicht ist"
       
    @mail(.... hier dein mail-dingens einbauen... ....);
        
    // hier noch echo mit dem OK-Text einbauen
        
    echo "danke... alles prima!";
        exit;
    } else { 
    // else bedeutet hier: es gab einen fehler
        // hier werden nun die gesammelten fehlermeldung ausgegeben.
       
    echo $fehlermeldung;
       exit;
    }

    Achtung: deine E-Mail-Kontrolle ist falsch. damit würden auch falsche
    adressen als gültig angesehen werden. verwende lieber das hier:

    PHP:

    if (eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[_a-z0-9-]+(\.[_a-z0-9-]+)*(\.([a-z]{2,4}))+$",$HTTP_POST_VARS['email'])){
      
    // hier rein schreiben, was passieren soll, wenn alles OK ist.
    } else {
      
    // hier rein schreiben, was passieren soll, wenn die email FALSCH ist.

    }
    hoffe, du kannst damit was anfangen...

    viele grüße, cat
     
    Zuletzt bearbeitet: 08.02.2005
Die Seite wird geladen...

Diese Seite empfehlen