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

probleme beim PHP kontaktformular

evi

Neues Mitglied
hallo ihr lieben,

ich hab mal wieder ein ganz schön großes problem und weiß mir nicht zu helfen...
ich habe ein kontaktformular verfasst, ein ganz simples und kurzes Ding.
nun hab ich das Problem das die mail nicht verschickt wird. Und ich weiß nicht warum....
bin auch noch ganz neu auf dem gebiet. hoffe das ihr mir weiterhelfen könnt...

hier mein kontakt.php:

<?php
$empf = "[email protected]";
//variablen füllen
$name = $_POST["name"];
$firma = $_POST["firma"];
$mail = $_POST["mail"];
$telefon = $_POST["telefon"];
$text = $_POST["text"];

//alles ausgefüllt?
if[($name = **) OR ($text = **) OR ($text = Ihre Nachricht)]{
echo "Bitte alle Felder, die mit einem Sternchen gekennzeinchnet sind, ausfüllen!";
die;
}

$betreff = "Kontaktformular wurde verwendet!";
$nachricht = "Achtung! dein Kontaktformular auf deiner WEbseite wurde verwendet! Hier die Benutzerdaten:
Name = "$name"
E-mail = "$mail"
Nachricht = "$text"";
$from = "mein.Domain.de <[email protected]>";
$mailfunktion = mail($empf, $betreff, $nachricht, $from)
if($mailfunktion){
echo "<p><b>Vielen Dank für Ihre E-mail</p></b>";
}else{
echo "E-mail konnte nicht verschickt werden! Bitte
probieren Sie es später nocheinmal!";
die;
}

?>

und mein kontakt.html:
(ne webseite in der ich ´n formular geschrieben hab)

<div id="Kontakt">
<?php include "kontakt.php" ?>
<form method="post" action="kontakt.php" name="kontakt">
<table border="0" cellspacing="1" cellpadding="1">
<tr>
<td>name*</td>
<td><input type="text" name="name" size="25"></td>
</tr>

<tr>
<td>Firma</td>
<td><input type="text" name="firma" size="25"></td>
</tr>

<tr>
<td>E-mail*</td>
<td><input type="text" name="mail" size="25"></td>
</tr>

<tr>
<td>Telefonnr.:</td>
<td><input type="number" name="telefon" size="25"></td>
</tr>

<tr>
<td>Nachricht*</td>
<td><textarea name="text" rows="6" cols="35" >Ihre Nachricht</textarea></td>
</tr>

<tr>
<td><input type="submit" name="send" value=" abschicken " ></td>
<td><input type="reset" name="reset" value=" zurücksetzen " ></td>
</tr>

</table>
</form>
</div>

Bitte bitte bitte, brauche Hilfe... ;(
 
Zuletzt bearbeitet:
Hättest Du deinen Quellcode mit Code-Tags umgeben, wäre dir aufgefallen, dass Du hier

PHP:
$mailfunktion = mail($empf, $betreff, $nachricht, $from)

ein Semikolon vergessen hast. Das könnte durchaus ein Grund sein, da der Aufruf der PHP-Datei zu einem Fehler führt. Den solltest Du eigentlich auch sehen können.

Falls es das nicht ist: frag deinen Webhoster.

Und noch als Hinweis: dein Formular wäre so wie es jetzt ist auch ziemlich Spam-Anfällig. Informiere dich mal über Absicherung von Formularen.
 
aber das is ja mein problem, eigentlich hab ich ja extra das script so geschrieben, das wenn die mail abgeschickt is, soll "die E-mail wurde erfolgreich verschickt!" erscheinen. Aber da is nur ein leeres fenster und die mail kommt auch nich an...
 
Wie schon gesagt: korrigiere Fehler in der Programmierung und frag deinen Webhoster, wenn der Mail-Versand über ihn nicht funktioniert.
 
ich kann keine fehler finden, bis auf das simikolon und das hab ich schon geändert...ich weiß es nich...trotzdem danke für eure hilfe...lieb von euch...
 
steht diese Zeile so in Deinem Quelltext?:
PHP:
if[($name = **) OR ($text = **) OR ($text = Ihre Nachricht)]{
echo "Bitte alle Felder, die mit einem Sternchen gekennzeinchnet sind, ausfüllen!";
die;
}

Dann korrigiere das bitte :D

PHP:
if ($name = "'**" || $text = "**" || $text = "Ihre Nachricht") {
echo "Bitte alle Felder, die mit einem Sternchen gekennzeinchnet sind, ausfüllen!";
die;
}

da fehlen nen paar anführungsstriche, und die eckigen Klammern haben da auch nix verloren...
 
Ein Gleichheitszeichen ist eine Zuweisung, kein Vergleich. Die Bedingung ergibt so oder so keinen Sinn.

Weiter unten beim Setzen von $nachricht stimmen die Anführungszeichen nicht. Wenn du doppelte Anführungszeichen in einem mit doppelten Anführungszeichen begrenzen String verwenden möchtest, musst du die escapen:

PHP:
$s = "\"Hallo Welt!\"";

Etwas besser (aber nicht getestet):

PHP:
<?php

error_reporting(-1);
ini_set('display_errors', 1);

$empf    = '[email protected]';
$betreff = 'Kontaktformular wurde verwendet!';
$from    = 'mein.Domain.de <[email protected]>';

//variablen füllen
$name    = (isset($_POST['name']))    ? trim((string) $_POST['name'])    : '';
$firma   = (isset($_POST['firma']))   ? trim((string) $_POST['firma'])   : '';
$mail    = (isset($_POST['mail']))    ? trim((string) $_POST['mail'])    : '';
$telefon = (isset($_POST['telefon'])) ? trim((string) $_POST['telefon']) : '';
$text    = (isset($_POST['text']))    ? trim((string) $_POST['text'])    : '';

$msg   = '';
$error = false;

//alles ausgefüllt?

if ($name === '' || $text === '' || $text === 'Ihre Nachricht') {
    $msg = 'Bitte alle Felder, die mit einem Sternchen gekennzeinchnet sind, ausfüllen!';
    $error = true;
}

if (!$error) {
    $nachricht = sprintf('Achtung! dein Kontaktformular auf deiner Webseite wurde verwendet! Hier die Benutzerdaten:
    Name = "%s"
    E-mail = "%s"
    Nachricht = "%s"', $name, $mail, $text);

    $mailfunktion = mail($empf, $betreff, $nachricht, $from);

    if ($mailfunktion) {
        $msg = '<p><b>Vielen Dank für Ihre E-mail</p></b>';
    } else {
        $msg = 'E-mail konnte nicht verschickt werden! Bitte probieren Sie es später nocheinmal!';
        $error = true;
    }
}



if ($error) {
    echo 'Es ist ein Fehler aufgetreten: ';
}

echo $msg;
 
erstmal vielen lieben dank das ihr mir weiter helft...
hab das jetz alles ausprobiert, aber es funzt trotzdem nich...
ich weiß nich, vielleicht bin ich echt zu blöd...??? :?

ich hab jetz in meiner HTML zu stehen:

<div id="Kontakt">
<?php include "kontakt.php" ?>
<form method="post" action="kontakt.php" name="kontakt">
<table border="0" cellspacing="1" cellpadding="1">
<tr>
<td>name*</td>
<td><input type="text" name="name" size="25"></td>
</tr>

<tr>
<td>Firma</td>
<td><input type="text" name="firma" size="25"></td>
</tr>

<tr>
<td>E-mail*</td>
<td><input type="text" name="mail" size="25"></td>
</tr>

<tr>
<td>Telefonnr.:</td>
<td><input type="number" name="telefon" size="25"></td>
</tr>

<tr>
<td>Nachricht*</td>
<td><textarea name="text" rows="6" cols="35" >Ihre Nachricht</textarea></td>
</tr>

<tr>
<td><input type="submit" name="send" value=" abschicken " ></td>
<td><input type="reset" name="reset" value=" zurücksetzen " ></td>
</tr>

</table>
</form>
</div>

und in meiner kontakt.php:


<?php


error_reporting(-1);
ini_set('display_errors', 1);

$empf = '[email protected]';
$betreff = 'Kontaktformular wurde verwendet!';
$from = 'mein.Domain.de <[email protected]>';

//variablen füllen
$name = (isset($_POST['name'])) ? trim((string) $_POST['name']) : '';
$firma = (isset($_POST['firma'])) ? trim((string) $_POST['firma']) : '';
$mail = (isset($_POST['mail'])) ? trim((string) $_POST['mail']) : '';
$telefon = (isset($_POST['telefon'])) ? trim((string) $_POST['telefon']) : '';
$text = (isset($_POST['text'])) ? trim((string) $_POST['text']) : '';

$msg = '';
$error = false;

//alles ausgefüllt?

if ($name === '' || $text === '' || $text === 'Ihre Nachricht') {
$msg = 'Bitte alle Felder, die mit einem Sternchen gekennzeinchnet sind, ausfüllen!';
$error = true;
}

if (!$error) {
$nachricht = sprintf('Achtung! dein Kontaktformular auf deiner Webseite wurde verwendet! Hier die Benutzerdaten:
Name = "%s"
E-mail = "%s"
Nachricht = "%s"', $name, $mail, $text);

$mailfunktion = mail($empf, $betreff, $nachricht, $from);

if ($mailfunktion) {
$msg = '<p><b>Vielen Dank für Ihre E-mail</p></b>';
} else {
$msg = 'E-mail konnte nicht verschickt werden! Bitte probieren Sie es später nocheinmal!';
$error = true;
}
}



if ($error) {
echo 'Es ist ein Fehler aufgetreten: ';
}

echo $msg;



?>

aber es geht trotzdem nich. ich krieg jetz zwar den text: Vielen dank für die E-mail...aber es sendet nich...ich krieg jedenfalls keine mail...

ich zieh echt den hut vor euch, die das alles können und verstehen...mein chef wird mich lünchen... HIIIIIILLLLFFFFFEEEEE!!!!
 
Zuletzt bearbeitet:
Ich habe das Problem gerade durch, keine Ahnung, ob es bei dir das Selbe ist, aber ein paar Provider scheinen ihre Mailserver neuerdings mit Filtern auszustatten, wo 99% aller Mail als Spam abgelehnt wird und weil in so einem Fall die PHP mail() Funktion keine Fehlermeldung zurück bekommt sieht es aus, als ob alles richtig ist, nur die Mail kommt nie an.

Ich habe es nach 2 Wochen aufgegeben und zu phpmailer - PHPMailer is a Full Featured Email Transfer Class for PHP - Google Project Hosting gewechselt.
Es war ein wenig Arbeit, bis ich raus hatte, wie das mit SMTP Mail funktioniert, aber am Ende war es die Mühe wert.
 
So wie ich das verstanden habe, bekommst du nun die Erfolgsmeldung, aber es kommt nix an.

Welchen Hoster hast du denn? Versuch doch mal eine Mail zu versenden, ohne großen Schnickschnacks.

test.php
PHP:
<?php
echo 'Mail versand';
$from = 'From: [email protected]' . "\r\n" .
    'Reply-To: [email protected]' . "\r\n";
mail( '[email protected]', 'Test Mail', 'Test', $from);

Wenn das nicht funktioniert, hast du höchstwahrscheinlich kein Funktionierenden Mail Server installiert auf dem Server oder es -müssen- SMTP Authentifizierungs Einstellungen vorgenommen werden. ( Bei allen Hostern die ich hatte, musste ich das noch Nie vornehmen. )
 
Zuletzt bearbeitet:
Zurück
Oben