1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

PHP-Formular (Pflichtfeld - kein Pflichtfeld)

Discussion in 'Programmieren' started by XPC, May 4, 2007.

Thread Status:
Not open for further replies.
  1. XPC

    XPC Megabyte

    Hallo PHP'ler,

    von der Seite http://www.meine-erste-Homepage.com
    habe ich folgendes Kontaktformular:
    PHP:
    <?php

    // Wenn alle Felder ausgefuellt wurden und der Captcha stimmt, wird ein Cookie gesetzt

    if($_GET['action'] != "" && !empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['message']) && ereg ("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$"$_POST['email']))
    {
    setcookie("spam_protection""spam_protection"time()+500);
    }

    // Erstellen einer Rechenaufgabe

    $Zahl_1 intval(rand(15));
    $Zahl_2 intval(rand(15));

    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Script-Type" content="text/javascript" />
    <title>Kontaktformular</title></head>

    <body>

    <?php

    // Wenn das Formular gesendet werden soll...
    if($_GET['action'] == "send")
    {

    // ...der Cookie gegen Spam nicht gesetzt ist...
    if($_COOKIE["spam_protection"] != "spam_protection")
    {

    // ... und die Rechenaufgabe FALSCH geloest wurde...
    if($_POST['number'] != md5($_POST['arithmetic']))
    {

    // ...dann eine Fehlermeldung ausgeben!
    echo "<p><img src=\"stop.gif\" width=\"20\" height=\"20\" alt=\"Fehler\" /> <font style=\"color:darkred; font-family:Geneva, Arial, Helvetica, sans-serif; font-size:16px\"><b>Die Rechenaufgabe wurde falsch gel&ouml;st!</b></font></p>";

    }

    // Ansonsten, wenn die Rechenaufgabe RICHTIG geloest wurde stimmt...
    if($_POST['number'] == md5($_POST['arithmetic']))
    {

    // ...und die eingegeben E-Mail Adresse in Wahrheit keine ist...
    if(!ereg ("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$"$_POST['email']))
    {

    // ...dann eine Fehlermeldung ausgeben!
    echo "<p><img src=\"stop.gif\" width=\"20\" height=\"20\" alt=\"Fehler\" /> <font style=\"color:darkred; font-family:Geneva, Arial, Helvetica, sans-serif; font-size:16px\"><b>Die eingegebene E-Mail-Adresse ist ung&uuml;ltig!</b></font></p>";

    }

    // Ansonsten, wenn die eingegebene E-Mail Adresse auch wirklich eine ist...
    if(ereg ("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$"$_POST['email']))
    {

    // ...und kein Feld leer ist...
    if(!empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['message']))
    {

    // dann den ganzen Muell von Spambots oder auch menschlichen Spammern entfernen...
    $name          nl2br(stripslashes(htmlspecialchars($_POST['name'])));
    $IP            getenv("REMOTE_ADDR");

    $absender      preg_replace"/[^a-z0-9 !?:;,.\/_\-=+@#$&\*\(\)]/im"""$_POST['email'] );
    $absender      preg_replace"/(content-type:|bcc:|cc:|to:|from:)/im"""$absender );

    $nachricht     nl2br(stripslashes(htmlspecialchars($_POST['message'])));

    // ...die Nachricht, die Sie erhalten moechten, wenn eine neue Nachricht an Sie versandt wurde, definieren...
    $mailnachricht "Hallo!\n\nEs ist eine neue Nachricht fuer Sie eingetroffen:\n\n---------------------------------------------\n\nName:\n$name\n\nIP:\n$IP\n\nE-Mail:\n$absender\n\nNachricht:\n$nachricht\n\n---------------------------------------------\n\nSie koennen dem Absender der Nachricht direkt antworten, indem Sie einfach auf diese E-Mail antworten.\n\nMfG\nBotty ;-)";

    // ...an Sie verschicken...
    mail("Ihre@E-Mail.de""Neue Nachricht fuer Sie!"$mailnachricht"From: $name <$absender>");

    // ...und dem Benutzer sagen, dass alles glatt lief!
    echo "<p><img src=\"ok.gif\" width=\"20\" height=\"20\" alt=\"Okay\" /> <font style=\"color:darkgreen; font-family:Geneva, Arial, Helvetica, sans-serif; font-size:16px\"><b>Vielen Dank f&uuml;r Ihre Nachricht!</b> Wir lassen Ihnen umgehend eine Antwort zukommen.</font></p>";

    }

    // Wenn nicht alle Felder ausgefuellt wurden, dann...
    else

    {

    // eine Fehlermeldung ausgeben!
    echo "<p><img src=\"stop.gif\" width=\"20\" height=\"20\" alt=\"Fehler\" /> <font style=\"color:darkred; font-family:Geneva, Arial, Helvetica, sans-serif; font-size:16px\"><b>Bitte f&uuml;llen Sie alle Felder aus!</b></font></p>";

    }

    }

    }

    }

    }

    ?>

    <form id="form" name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?action=send">

    <table width="400" cellpadding="2" cellspacing="2" style="background-color:#E6E6E6; font-family:Geneva, Arial, Helvetica, sans-serif; font-size:12px">

    <tr>

    <td width="162" style="background-image: url(hintergrund.jpg)">
    <strong>Ihr Name</strong></td>

    <td width="188">

    <input name="name" type="text" id="name" style="background-color:#CCCCCC; font-size:12px; font-family:Geneva, Arial, Helvetica, sans-serif; border : 1px solid #000000; width:186px" value="<?php echo $_POST['name']; ?>"/></td>
    <td width="28" align="center" valign="middle"><img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Bitte geben Sie Ihren Namen an, damit wir Sie pers&ouml;nlich ansprechen k&ouml;nnen!" /></td>
    </tr>

    <tr>

    <td width="162" style="background-image: url(hintergrund.jpg)">
    <strong>Ihre g&uuml;ltige E-Mail Adresse</strong></td>

    <td width="188">

    <input name="email" type="text" id="email" style="background-color:#CCCCCC; font-size:12px; font-family:Geneva, Arial, Helvetica, sans-serif; border : 1px solid #000000; width:186px" value="<?php echo $_POST['email']; ?>"/></td>
    <td width="28" align="center" valign="middle"><img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Ihre aktuelle, g&uuml;ltige E-Mail Adresse, an der wir Ihnen antworten!" /></td>
    </tr>

    <tr>

    <td width="162" style="background-image: url(hintergrund.jpg)">
    <strong>Ihre Nachricht</strong></td>

    <td width="188">

    <textarea name="message" id="message" style="background-color:#CCCCCC; font-size:12px; font-family:Geneva, Arial, Helvetica, sans-serif; border : 1px solid #000000; width:186px; height:100px" rows="4" cols="15"><?php echo $_POST['message']; ?></textarea></td>
    <td width="28" align="center" valign="middle"><img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Bitte formulieren Sie Ihr Anliegen m&ouml;glichst detailliert!" />

    </td>

    </tr>

    <tr>

    <td width="162" style="background-image: url(hintergrund.jpg)">

    <strong>Wieviel ist <?php echo $Zahl_1?> plus <?php echo $Zahl_2?>?</strong>

    </td>

    <td>

    <input name="number" type="hidden" id="number"  value="<?php echo md5(( $Zahl_1 $Zahl_2 )); ?>"/>
    <input name="arithmetic" type="text" id="arithmetic" style="background-color:#CCCCCC; font-size:12px; font-family:Geneva, Arial, Helvetica, sans-serif; border : 1px solid #000000; width:186px" onfocus="if(this.value=='Das Ergebnis bitte hier hinein...')this.value=''" onblur="if(this.value=='')this.value='Das Ergebnis bitte hier hinein...'" value="Das Ergebnis bitte hier hinein..."/>

    </td>

    <td align="center" valign="middle">

    <img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Spamschutz: Addieren Sie bitte <?php echo $Zahl_1?> und <?php echo $Zahl_2?> und schreiben Sie deren Summe in das Textfeld." />

    </td>

    </tr>

    <tr>

    <td style="background-image: url(hintergrund.jpg)">
    <strong>M&ouml;gliche Aktionen</strong>
    </td>

    <td>

    <?php

    // Wenn KEIN Cookie gegen Spam gesetzt wurde, dann soll der "Senden"-Button anklickbar sein
    if($_COOKIE["spam_protection"] != "spam_protection")
    {

    ?>

    <input name="submit" type="submit" id="submit" value="Senden" /> <input name="reset" type="reset" id="reset" value="Zur&uuml;cksetzen" />

    <?php

    }

    // Wenn aber ein Cookie gegen Spam gesetzt wurde, dann soll der "Senden"-Button blockiert werden
    if($_COOKIE["spam_protection"] == "spam_protection")
    {

    ?>

    <input name="submit" type="submit" id="submit" value="Senden" disabled="true" /> <input name="reset" type="reset" id="reset" value="Zur&uuml;cksetzen" />

    <?php

    }

    ?>

    </td>

    <td align="center" valign="middle"><img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Sie k&ouml;nnen das Formular absenden oder zur&uuml;cksetzen!" /></td>

    </tr>

    <tr>

    <td style="background-image: url(hintergrund.jpg)"><strong>Sie ben&ouml;tigen Hilfe? </strong></td>
    <td colspan="2">Mit dem Mauszeiger auf das Fragezeichen zeigen und Hilfe naht :-)</td>

    </tr>
      
    </table>

    </form>

    </body>

    </html>
    Das Formular sieht dann so aus:
    [​IMG]

    Unter der einzutragenden eMail-Adresse hätte ich gerne noch ein Feld "deine Homepage-URL".
    Wenn ich jedoch z.B. den kompletten Block NAME hinzufüge, handelt es sich um ein Pflichtfeld.
    Das soll natürlich nicht so sein.
    Daher meine Frage:
    wie bekomme ich das zusätzliche gewünschte Feld unter das Eingabefeld "eMail", OHNE daß es sich um ein Pflichtfeld handelt ?

    Wenn möglich bitte den kompletten Eintrag posten, weil ich von PHP NULL Ahnung habe.

    Dank und Gruß
     
  2. gerald_b

    gerald_b Kbyte

    Du solltest nach dem Abschnitt


    <tr>

    <td width="162" style="background-image: url(hintergrund.jpg)">
    <strong>Ihre g&uuml;ltige E-Mail Adresse</strong></td>

    <td width="188">

    <input name="email" type="text" id="email" style="background-color:#CCCCCC; font-size:12px; font-family:Geneva, Arial, Helvetica, sans-serif; border : 1px solid #000000; width:186px" value="<?php echo $_POST['email']; ?>"/></td>
    <td width="28" align="center" valign="middle"><img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Ihre aktuelle, g&uuml;ltige E-Mail Adresse, an der wir Ihnen antworten!" /></td>
    </tr>


    den folgenden einfügen:


    <tr>

    <td width="162" style="background-image: url(hintergrund.jpg)">
    <strong>ggf. Ihre Homepage</strong></td>

    <td width="188">

    <input name="homepage" type="text" id="homepage" style="background-color:#CCCCCC; font-size:12px; font-family:Geneva, Arial, Helvetica, sans-serif; border : 1px solid #000000; width:186px" value="<?php echo $_POST['homepage']; ?>"/></td>
    <td width="28" align="center" valign="middle"><img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="eigene Homepage-Adresse" /></td>
    </tr>
     
  3. XPC

    XPC Megabyte

    Jepp - danke.
    Man kann nun die Homepage-URL eintragen,
    ABER ich bekomme bzgl. dieses Eintrages leide keine Nachricht zugesandt.
    Was ist noch zu tun, damit ich (incl. der eMail sowie der eigentlichen Nachricht) auch die Homepage-URL erhalte ?
     
  4. brum

    brum Kbyte

    Einfach $mailnachricht mit der URL ergänzen...

    Gruss
    Bruno
     
  5. XPC

    XPC Megabyte

    ??? Sorry ???
    Bitte welchen Eintrag an welcher Stelle ?!
     
  6. gerald_b

    gerald_b Kbyte

    mir kommt es so vor als würde ich hier eine Hausaufgabe lösen...


    zum Einfügen der Homepage in den Text:

    füge vor
    $nachricht = nl2br(stripslashes(htmlspecialchars($_POST['message'])));

    folgende Zeile ein:

    $homepage=strtolower($_POST['homepage'])



    den Text nach

    $mailnachricht=...


    ersetzt Du mit

    "Hallo!\n\nEs ist eine neue Nachricht fuer Sie eingetroffen:\n\n---------------------------------------------\n\nName:\n$name\n\nHomepage:\n$homepage\n\nIP:\n$IP\n\nE-Mail:\n$absender\n\nNachricht:\n$nachricht\n\n---------------------------------------------\n\nSie koennen dem Absender der Nachricht direkt antworten, indem Sie einfach auf diese E-Mail antworten.\n\nMfG\nBotty ;-)";


    Mein Tipp: befasse Dich vor erstellen einer Homepage o.ä. mal mit der entsprechenden Literatur. Diese gibt es online und sogar umsonst ( http://www.selfhtml.org, http://www.selfphp.de )
     
  7. XPC

    XPC Megabyte

    Nu wird nur noch diese Zeile angezeigt:

    ? ? ?
     
  8. Angel-HRO

    Angel-HRO Megabyte

    Ich meine auch: beschäftige dich mit dem was du machst. Was bringt es dir, diese Aufgabe vorgekaut zu bekommen. Als Tip: der Fehler deutet auf einen Schreibfehler hin
     
  9. kalweit

    kalweit Hüter der Glaskugel

    Wenn man etwas per C+P überträgt, bei wem liegt da der Schreibfehler? :D - ich setze einen Smilie auf ein ;
     
  10. XPC

    XPC Megabyte

    ;nu funzelt's;
    ;danke für den ;versteckten; Hinweis :D
     
Thread Status:
Not open for further replies.

Share This Page