• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP Kontaktformular

philogyn

Mitglied
Guten Abend!

Schulhp ist soweit mal fertig, nur das Kontaktformular funktioniert leider nicht - es erscheint immer "Sie haben nicht alle Felder ausgefüllt"; hab das gleiche auf meiner eigenen HP auch eingebaut - dort funktioniert es tadellos!

Gleich vorweg eine Frage: Wie könnte ich
- entweder die Hintergrundfarbe bei der Ausgabe von den Hinweisen wie "Danke für ihre Nachricht", etc nach meinem Geschmack ändern,

- oder eine Art Popup (mit dem typischen ok Button a la Windows) erscheinen lassen und eine automatische Rückkehr zur Kontaktseite kreieren?

Findet jemand einen Fehler? Hier der PHP-Code:

PHP:
<?
/*
############################################################################
#
#   (c) Feindt Computerservice, 2001
#
############################################################################
#
# Formmailer V.1.0
# COPYRIGHT NOTICE                                                           
# Copyright 2001 Feindt Computerservice
# All Rights Reserved.                     
# EMail: [email protected]
# URL  : http://www.scripte.pc-schule24.de  
#                                                                            
# Formmailer darf von jedermann kostenlos benutzt und geändert werden, solange
# dieser Copyright-Verweis und die restlichen Kommentare erhalten bleiben. Mit
# dem Einsatz dieses Skripts akzeptieren Sie, daß Feindt Computerservice von jeglicher
# Haftung und Gewährleistung hinsichtlich des Einsatzes befreit ist.
# 
# Der Verkauf dieses Skripts, auch in modifizierter Form, ist ohne vorherige
# schriftliche Genehmigung ausdrücklich untersagt.
# 
# Um dieses Skript über das Internet oder irgendein anderes Medium
# weiterzuverbreiten, benötigen Sie vorher unsere Erlaubnis. In jeden Fall
# müssen der Copyright-Verweis und die restlichen Kommentare erhalten bleiben.
###############################################################################

Dieses Script kann in bestehende PHP-Seiten problemlos eingebaut werden. 
Einfach alles markieren und kopieren. Aber denkt an die obenstehenden Bedingungen.
*/

/*Hier werden alle Daten eingegeben*/
/*An wen soll die Anfrage gerichtet sein?*/
$webmaster = "[email protected]";

/*Welche E-Mail-Adresse soll als Absender eingegeben werden?*/
$absender = "$mail";


/*Wie soll die Mail aussehen, die an den webmaster gerichtet ist? Formularfelder werden wie folgt eingefügt "$NameDesFeldes"*/
/*Betreff*/    $betreffwebmaster = "Mail vom Kontaktforumular der HS 3";
/*Textkörper*/  $koerperwebmaster = "$name ($mail) hat über die Webseite http://www.hs-hasnerschule.ksn.at folgende Nachricht hinterlassen:
        $nachricht";

/*wie soll die Mail aussehen, die an den Absender gerichtet ist?*/
/*Betreff*/    $betreffabsender = "Dies ist der Betreff";
/*Textkörper*/     $koerperabsender = "Herzlichen Dank für Ihre Nachricht! \n Sie haben folgende Nachricht versandt:\n $nachricht\n";
    
/*Welche Fehlermeldung soll ausgegeben werden, wenn die E-Mail-Adresse falsch eingegeben wurde? Bitte mit HTML-Tags arbeiten,
es können auch Klassen für CSS zugewiesen werden*/
$mailfalsch = "<p class=ueber1>Fehler</p><p>Leider ist die E-Mail-Adresse falsch</p><p>Bitte kontrollieren Sie noch einmal die Eingabe und senden Sie das Formular erneut ab.";

/*Welche Fehlermeldung soll ausgegeben werden, wenn nicht alle Pflicht-Felder ausgefüllt sind?*/
$felderleer = "<p class=ueber1>Fehler</p><p>Die Nachricht konnte nicht versandt werden, da nicht alle Felder ausgefüllt wurden</p>";

/*Wie soll der Text aussehen, wenn die E-Mail versendet wurde?*/
$abgesandt = "<p class=ueber1>Danke für Ihre Nachricht!</p>";

/*Sind alle Felder ausgefüllt? für jedes Feld das ausgefüllt sein muß, muß hier ein entsprechender Eintrag gemacht werden*/
if ($name == "" || $mail =="" || $nachricht =="")
/*##############################################################################
  #Bitte ab hier nichts mehr ändern. Alle Angaben sind im oberen Teil zu machen#
  ##############################################################################*/
    {
    /*nein*/    
    echo "$felderleer";
    }
        else
            {
            /*ja*/
            /*Ist die E-Mail-Adresse richtig eingegeben?*/
            if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $mail))
                {
                /*E-Mail-Adresse ist richtig*/
                mail("$webmaster","$betreffwebmaster","$koerperwebmaster\n","FROM: $absender\n");                    

                /*Soll der Absender eine Kopie erhalten?*/
                if ($kopie == "ja") 
                    {
                    mail("$mail","$betreffabsender","$koerperabsender","FROM: $absender\n");
                    echo "$abgesandt";
                    }
                else
                    {
                    echo "$abgesandt";
                    }
                }
                else
                {
                    /*nein*/
                    echo "$mailfalsch";
                }                
        }
?>
Und hier der HTML Code:

HTML:
<!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>
<link type="text/css" href="formate.css" rel="stylesheet" media="screen" />

<title>Hasnerschule</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />


</head>
<body>
<div id="container">

    <!-- anfang banner -->
    <div id="banner" >
        <table width="auto" border="0" cellpadding="0" cellspacing="0">
            <tr><td><img src="pics/logo _nms_ ohne_kleiner.jpg" width="120" height="120" alt="logo" /></td>
            <td><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase=
                        "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="750" height="120" title="FlashBanner">
                        <param name="movie" value="flash/banner.swf" />
                        <param name="quality" value="high" />
                        <embed src="flash/banner.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" 
                        width="750" height="120"></embed>
                        </object></td>
            <td><img src="pics/logo-moodle1.jpg" width="119" height="120" alt="logomoodle" /></td></tr>

    </table>
    </div>
    
    <!-- ende banner -->
    
        <div id="mainnavi" >
        <a href="index.php">Home </a>| <a href="schulprofil.php">Schulprofil</a> |  <a href="direktion.php">Direktion</a> |  <a href="aktuelles.php">Termine</a> | 
        <a href="lehrerinnen.php">LehrerInnen</a> | <a href="klassen.php">Klassen</a> | <a href="kontakt.php">Kontakt </a>
    </div>
    
    <!-- ende mainnavi -->
    
    <div id="left">
    <h2>Navigation</h2>
        <?php include("navi.php"); ?>
        
    </div> 
    
    <!-- ende linkes menü -->

    
    <div id="right">

        <div id="news">News:</div>
            <?php include("news.php"); ?>
    </div> 
    
    <!-- ende rechtes men&uuml; -->
    
    <div id="content">

        <h1>Kontaktformular</h1>
        <div id="text">
            
            <span style="font-size:12x">Wenn Sie mit unserer Schule Kontakt aufnehmen wollen, nutzen Sie bitte hierf&uuml;r das folgende Kontaktforular!<br /><br />
            <br />
            
            </span>
            
            
                        <div align="left">
                            <FORM METHOD="POST" ACTION="danke.php">
                            <u>Ihr Name:</u><p>
                            <INPUT TYPE="TEXT" NAME="name" MAXLENGTH="25"><p>
                            <u>Ihre E-Mail:</u><p>
                            <INPUT TYPE="TEXT" NAME="mail" MAXLENGTH="50"><p>
                            <u>Ihre Nachricht:</u><p>
                            <TEXTAREA NAME="nachricht" ROWS="8" COLS="50"></TEXTAREA><p>
                            <INPUT NAME="submit" TYPE="SUBMIT" value="Senden">
                            <INPUT TYPE="RESET" value="Reset">
                            </FORM>
                        </div>

                        
                
        </div>
    </div>
    
     
</div>

</body>
</html>
LG
philogyn
 
es erscheint immer "Sie haben nicht alle Felder ausgefüllt"
Klar, die Variablen $name, $mail und $nachricht werden ja auch nirgendwo gefüllt.

Das ist irgendsoeine Einstellung von PHP, register_globals?
Die eine Einstellung sorgt dafür, dass Variablen mit dem Namen der Eingabefelder aus dem Formular verfügbar sind, eben z.B. $name. Aber das wird wohl zunehmends nicht mehr so gemacht, dann musst Du über $_GET, $_POST oder $_REQUEST auf diese Variablen zugreifen.

Z.B. $_REQUEST["name"] (das gilt dann sowohl für Methode post wie auch für get).
 
Neue Formular

Guten Abend!

Hab mir ein neues Formular mit Hilfe von selfhtml und diversen Internetseiten zusammengebastelt --> bin KEIN php Genie, net einmal ein Durchschnitt!

Brauch nur für die SchulHP ein Kontaktforumlar mit Name, E-Mail, Betreff und Nachricht wobei alle Eingabefelder überprüft werden:

Hier der Code: gehts vielleicht einfacher?

HTML:
<!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>
<link type="text/css" href="formate.css" rel="stylesheet" media="screen" />

<title>Hasnerschule</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

   [PHP]
<?php
// Kontaktformular

if ($_SERVER['REQUEST_METHOD'] == "POST") {
$name = $_POST['name'];
$betreff = $_POST['betreff'];
$nachricht = $_POST['nachricht'];
$email = $_POST['email'];

 # Ihre E-Mail-Adresse
 $an ="[email protected]";

 # Diese Nachricht wird an Ihre E-Mail-Adresse gesendet
 $text = "Guten Tag,\n Sie haben eine neue Nachricht von $name erhalten:\n\n
 ====\n $nachricht\n====\n\nSie können $name unter dieser $email erreichen.";
 @mail($an, $betreff, $text, "From: " . $email);
 echo "<b>Ihre Nachricht wurde gesendet!</b>";
}
else { ?>
[/PHP]

<script type="text/javascript">
function chkFormular () {
  if (document.Formular.User.value == "") {
    alert("Bitte Ihren Namen eingeben!");
    document.Formular.User.focus();
    return false;
  }
  if (document.Formular.Mail.value == "") {
    alert("Bitte Ihre E-Mail-Adresse eingeben!");
    document.Formular.Mail.focus();
    return false;
  }
  if (document.Formular.Mail.value.indexOf("@") == -1) {
    alert("Keine g&uuml;ltige E-Mail-Adresse!");
    document.Formular.Mail.focus();
    return false;
  }
  if (document.Formular.Betreff.value == "") {
    alert("Bitte den Betreff eingeben!");
    document.Formular.Betreff.focus();
    return false;
  }
   if (document.Formular.Nachricht.value == "") {
    alert("Bitte eine Nachricht eingeben!");
    document.Formular.Nachricht.focus();
    return false;
  }
}
</script>


</head>
<body>
<div id="container">

    <!-- anfang banner -->
    <div id="banner" >
        <table width="auto" border="0" cellpadding="0" cellspacing="0">
            <tr><td><img src="pics/logo _nms_ ohne_kleiner.jpg" width="120" height="120" alt="logo" /></td>
            <td><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase=
                        "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="750" height="120" title="FlashBanner">
                        <param name="movie" value="flash/banner.swf" />
                        <param name="quality" value="high" />
                        <embed src="flash/banner.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" 
                        width="750" height="120"></embed>
                        </object></td>
            <td><img src="pics/logo-moodle1.jpg" width="119" height="120" alt="logomoodle" /></td></tr>

    </table>
    </div>
    
    <!-- ende banner -->
    
        <div id="mainnavi" >
        <a href="index.php">Home </a>| <a href="schulprofil.php">Schulprofil</a> |  <a href="direktion.php">Direktion</a> |  <a href="aktuelles.php">Termine</a> | 
        <a href="lehrerinnen.php">LehrerInnen</a> | <a href="klassen.php">Klassen</a> | <a href="kontakt.php">Kontakt </a>
    </div>
    
    <!-- ende mainnavi -->
    
    <div id="left">
    <h2>Hauptnavi</h2>
        <?php include("navi.php"); ?>
        
    </div> 
    
    <!-- ende linkes menü -->

    
    <div id="right">

        <div id="news">News:</div>
            <?php include("news.php"); ?>
    </div> 
    
    <!-- ende rechtes men&uuml; -->
    
    <div id="content">

        <h1>Kontaktformular</h1>
        <div id="text">
            
            <span style="font-size:12x">Wenn Sie mit unserer Schule Kontakt aufnehmen wollen, nutzen Sie bitte hierf&uuml;r das folgende Kontaktformular!<br /><br />
            <br>            
            </span>
         
                <form name="Formular"
                      method="post" onsubmit="return chkFormular()">
                 <fieldset>
                 <legend>Bitte <b>vollst&auml;ndig</b> ausf&uuml;llen!</legend>
                    <table cellPadding="4" cellSpacing="2" border="0">
                              <tr>
                           <td align="left">Ihr Name:<br></td>
                           <td><input type="text" name="name" size="50" maxlength="60"></td>
                          </tr>
                          <tr>
                           <td align="left">Ihre E-Mail:<br></td>
                           <td><input type="text" name="email" size="50" maxlength="60"></td>
                          </tr>
                          <tr>
                           <td align="left">Betreff:<br></td>
                           <td><input type="text" name="betreff" size="50" maxlength="60"></td>
                          </tr>
                          <tr>
                           <td colspan="2" align="left">Ihre Nachricht:<br><textarea name="nachricht" cols="60" rows="10"></textarea></td>
                          </tr>
                          <tr>
                           <td colspan="2"><br>
                            <input type="submit" value="Senden">&nbsp;&nbsp;<input type="reset" value="Abbrechen">
                           </td>
                          </tr>
                    </table>
                 </fieldset>
                </form>                
        </div>
    </div>
</div>
</body>
</html>

LG
philogyn
 
Auf jeden Fall geht das Formular noch richtig in der Auszeichnung, als Tabelle ist es sicherlich falsch, es handelt sich ja nicht um tabellarische Daten.
Reine Formsache - Barrierefreie Formulare mit HTML, CSS & JavaScript : Einfach für Alle

Und Dein Formular hat ein ganz dringendes Problem. Du sagst doch, die Feldinhalte sollen geprüft werden, das werden sie aber nicht.
Nicht? Naja, nicht bei jedem. Feldinhalte eines Formulars muss man immer (auch) serverseitig prüfen, denn wenn JavaScript abgeschaltet wird, können so völlig falsche Daten verarbeitet werden, was um jeden Preis zu vermeiden ist.
 
Hallo!

Wie gesagt, das von mir erstellte Formular ist nur eine Zusammenstellung von verschiedensten Befehlen, die ich aus diversen Internetseiten herbekommen und leider nur laienhaft verstanden habe!

Mit "Prüfung der Felder" meinte ich, dass die Felder auf richtige Eingabe geprüft werden sollen, immerhin ist es nicht gerade angenehm wenn die Administration der Schule diverse frivole Texte bzw. unter der Gürtellinie bekommt, deren Urheber sich nicht mit Name bzw Mail Adresse angibt - wenn diese auch erfunden sein mögen!

Es geht wirklich um das Ausfüllen der einzelnen Felder!

Außerdem stellt sich mir die Frage, warum hierbei es wesentlich besser wäre von einer Tabelle Abstand zu nehmen, wenn doch gleich die Positionierung der einzelnen Felder um vieles einfacher "programmierbar" ist!?

Wie gesagt, ICH BIN NUR EIN LAIE und benötige nichts mehr als ein einfaches Formular mit Name, E-Mail und Textfeld!

LG
philogyn
 
Hallo.

Anstatt die von verschiedenen Internetseiten Befehle zusammen zu suchen die du nicht verstehst solltest du lieber alles aus einer 'Hand' nehmen.

Hier ist ein Kontaktformular das zur Überprüfung PHP verwendet anstatt Javascript.

Kontaktformular

Ausserdem leicht an die eigenen Bedürfnisse anpassbar.

Gruss
Elroy
 
Wie gesagt, das von mir erstellte Formular ist nur eine Zusammenstellung von verschiedensten Befehlen, die ich aus diversen Internetseiten herbekommen und leider nur laienhaft verstanden habe!
Befehle gibts nur in Programmiersprachen. Weder HTML noch CSS sind welche.
Und wenn Du was nicht verstehst, frage einfach nach! Nur, wenn Du etwas verstehst, kannst Du es richtig anwenden.

Mit "Prüfung der Felder" meinte ich, dass die Felder auf richtige Eingabe geprüft werden sollen
Schon klar. Aber das funktioniert eben nicht, wenn man das mit JavaScript umsetzt, der Nutzer aber JavaScript abgeschaltet hat.

immerhin ist es nicht gerade angenehm wenn die Administration der Schule diverse frivole Texte bzw. unter der Gürtellinie bekommt, deren Urheber sich nicht mit Name bzw Mail Adresse angibt - wenn diese auch erfunden sein mögen!
Ein Grund mehr, die Prüfung UNBEDINGT serverseitig umzusetzen. Z.B. mit PHP.

Außerdem stellt sich mir die Frage, warum hierbei es wesentlich besser wäre von einer Tabelle Abstand zu nehmen, wenn doch gleich die Positionierung der einzelnen Felder um vieles einfacher "programmierbar" ist!?
Da bist Du im Irrtum. Das ist nicht leichter, es ist im Soinne von HTML auch einfach falsch.
Lies Dir das besagte Tutorial durch, und verstehe es. Wenn Du Fragen hast, stelle sie. Tabellen sind zur Auszeichnung von tabellarischen Daten. HTML im Allgemeinen ist NICHT für das Layout zuständig, nichtmal für die visuelle Ausgabe im Browser!

Wie gesagt, ICH BIN NUR EIN LAIE
Das ist nicht schlimm.
Schlimm ist, wenn Du Dich darauf ausrust und glaubst, deswegen machen andere Deine Arbeit. Schlimm ist, wenn Du an dem Zustand nicht änderst oder ändern willst.

und benötige nichts mehr als ein einfaches Formular mit Name, E-Mail und Textfeld!
Wer sagt denn, dass das einfach ist?
Wie Du das Formular mit HTML & CSS erstellst, steht in meinem Link.

Die Überprüfung muss unbedingt auch serverseitig erfolgen, dazu musst Du eine serverseitige Programmiersprache einsetzen. D.h. Du musst programmieren können.
Wenn Du das nicht willst, postest Du Dein Anliegen lieber mit einer Vorstellung über die Bezahlung (oder Gegenleistung) in der Jobbörse.

Also, wie können wir Dir helfen?
 
Guten Abend!

Danke erstmals für eure Antworten!

Ja, es wartet das Erlernen und Verstehen des ganzen Prozedere auf mich, bleibt wohl niemandem erspart so etwas "durchzumachen" *gg*!

@Efeu Ich werde mir die Links durchlesen, durcharbeiten und meine Fragen stellen...

LG
philogyn
 
Efeu??????????

Ich kenne ja viele Varianten meines Namens, aber Efeu???????

:-)
 
Schönen Vormittag!

Natürlich meinte ich Efchen und nicht Efeu, doch der "freud'sche Hund" hat hier wohl meine Gedanken regiert!

LG
philogyn
 
Guten Abend!

Hab jetzt bei selfhtml.org folgenden formmailer gefunden; was sagt ihr dazu? Ist er verwendbar? Hab ihn bereits eingebaut, leider erhalte ich aber keine Test-Mails in meinem Postfach

Hier der Code:
PHP:
<?php

### Konfiguration ###

# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!

# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger = '[email protected]';

# Welche Adresse soll als Absender angegeben werden?
# (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$strFrom       = '"Formmailer" <[email protected]>';

# Welchen Betreff sollen die Mails erhalten?
$strSubject    = 'Feedback';

# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml = 'http://hphasner.hp.funpic.de/dankemail.php';

# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$strDelimiter  = ":\t";

### Ende Konfiguration ###

if($_POST)
{
 $strMailtext = "";

 while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }

 mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
 header("Location: $strReturnhtml");
 exit;
}

?>

LG
philogyn
 
Zurück
Oben