Autor |
Nachricht |
deliciious
Threadersteller
Dabei seit: 15.11.2006
Ort: Essen
Alter: 39
Geschlecht:
|
Verfasst Do 19.07.2007 12:22
Titel php Formmailer php-code ist im Browser sichtbar |
|
|
Hi
Soll einen formmailer auf einer seite einfügen.
habe gestern eine beispieldatei (von selfhtml) auf unseren server geladen und getestet. funktionierte auch bestens (abgesehen davon, dass die mails stunden später erst ankamen).
jetzt habe ich aber plötzlich folgendes problem:
ich habe den html-code ein wenig geändert (inputs hinzugefügt).
und nun enthält die php-datei bei ansicht im browser auf einmal teile vom php-code. Der php-code an sich ist unverändert.
kann jemand helfen??
woran liegt das? sonstige schwerwiegende fehler im php- oder html-code zu finden?
und noch eine frage: was bedeutet das "<dl>" und "<dd>" - dadurch werden die textfelder/inputs ja "eingerückt" im design. kann man die getrost weglassen???
kenn mich mit so formularen und php absolut nicht aus!
Danke im vorraus!!
deliciiouzz
code (die domain ist rausgenommen):
Code: | <?php
### Konfiguration ###
# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!
# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger = 'info@domain.de';
# Welche Adresse soll als Absender angegeben werden?
# (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$strFrom = '"Formmailer" <Bestellung@domain.de>';
# Welchen Betreff sollen die Mails erhalten?
$strSubject = 'Test';
# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml = 'http://www.domain.de/danke.html';
# 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;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<title>Einfacher PHP-Formmailer</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
<!-- Hier die eigentlichen Formularfelder eintragen. Die folgenden sind Beispielangaben. -->
<dl>
<dd><input type="text" name="Versender" value="Name" /><br/>
<input type="text" name="Adresse" value="Straße" /><br/>
<input type="text" name="PLZ" value="PLZ" size="5" maxlength="5" /><input type="text" name="Ort" value="Ort" size="17" /><br/>
<input type="text" name="E-Mail" value="E-Mail" /><br/>
</dd>
<dd><input type="text" name="Telefon" value="Telefon" /><br/>
<br/>
<input type="text" name="Betreff" value="Bestellung" /><br/>
<textarea name="Bemerkungen" rows="7" cols="30" tabindex="0">Nachricht</textarea></dd>
<dd>Bei Bestellungen bitte hier bestätigen:<br/>
<input type="checkbox" name="Akzeptiert[]" value="HTML" />Ich habe die AGB gelesen und akzeptiere diese.<br/>
</dd>
<dd></dd>
</dl>
<!-- Ende der Beispielangaben -->
<p><input type="submit" value="Senden" /></p>
</form>
</body>
</html>
|
im Browser ist dann folgendes zu sehen:
Code: | '; # Welchen Betreff sollen die Mails erhalten? $strSubject = 'Test'; # Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden? # Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben! $strReturnhtml = 'http://www.domain.de/danke.html'; # 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; } ?> |
(dann folgt ganz normal das formular, was auch richtig angezeigt wird.
Zuletzt bearbeitet von deliciious am Do 19.07.2007 12:26, insgesamt 1-mal bearbeitet
|
|
|
|
|
bambam42
Dabei seit: 10.04.2007
Ort: Dessau
Alter: 59
Geschlecht:
|
Verfasst Do 19.07.2007 12:47
Titel
|
|
|
<Bestellung@domain.de>
nimm mal die <> dort weg
|
|
|
|
|
Anzeige
|
|
|
Account gelöscht
Ort: -
Alter: -
|
|
|
|
|
deliciious
Threadersteller
Dabei seit: 15.11.2006
Ort: Essen
Alter: 39
Geschlecht:
|
Verfasst Do 19.07.2007 13:10
Titel
|
|
|
bambam42 hat geschrieben: | <Bestellung@domain.de>
nimm mal die <> dort weg |
danke! lag (hoffentlich) tatsächlich daran. nun ist der code im browser zumindest weg beim ersten Test!!
hat noch jemand eine Antwort auf die Frage mit "<dl>" und "<dd>"? kann ich die getrost weglassen oder benötigt der php-code die irgendwo/irgendwie??
würde es ja auch einfach testen, aber müsste dann ja wieda 4 stunden auf die Test-Email warten xD
Woran liegt es eigentl. dass die Email erst stunden später ankommt? Am Server?
Vielen Dank!
|
|
|
|
|
Skyw4lker
Dabei seit: 30.08.2004
Ort: Bergisch Gladbach
Alter: 43
Geschlecht:
|
Verfasst Do 19.07.2007 13:12
Titel
|
|
|
ja das liegt am server wenn das so lange dauert und nein den php code interessieren diese format tags nicht
|
|
|
|
|
deliciious
Threadersteller
Dabei seit: 15.11.2006
Ort: Essen
Alter: 39
Geschlecht:
|
Verfasst Do 19.07.2007 14:39
Titel
|
|
|
Danke!
mhhh..... bin schon die ganze zeit am googeln aber finde keine richtige Lösung (die ich auch noch ohne viel php wissen selbst abändern kann). Hat jemand ne ahnung, wie ich gleichzeitig eine kopie der email (cc oder bcc) an den sender des formulars schicken (lassen) kann - (kein MUSS diese Kopie, aber wäre schon nice).
und wie erstelle ich pflichtfelder, die ausgefüllt werden müssen - bzw. in meinem fall reicht es wenn das Optionsfeld: "AGB wurden akzeptiert" angeklickt wurde! Wenn dieses nicht angeklickt wurde sollte die email auch nicht versendet werden und eine fehlermeldung sollte auftauchen.
kann da jemand weiterhelfen? erfahrene leute wissen da doch best. - selbst auf die schnelle - bescheid?
ansonsten googel ich noch paa stunden weiter =(
vielen dank!
|
|
|
|
|
bambam42
Dabei seit: 10.04.2007
Ort: Dessau
Alter: 59
Geschlecht:
|
Verfasst Do 19.07.2007 15:38
Titel
|
|
|
jetzt fängt es an, wo du dann doch mehr wissen brauchst
und wenn du so gar keine ahnung hast, wie du ja schreibst, dann solltest du dich doch besser mit xschinkenx's link befassen, um die grundkenntnisse zu erlangen
|
|
|
|
|
deliciious
Threadersteller
Dabei seit: 15.11.2006
Ort: Essen
Alter: 39
Geschlecht:
|
Verfasst Do 19.07.2007 16:14
Titel
|
|
|
mh ja das sowieso...
damit auseinandersetzen will ich mich privat eh solange ich zeit und lust (in meiner geringen freizeit xD) dazu finde.. zumindest die grundkenntnisse aneignen
aber dachte vielleicht gibt es da ein patentrezept, da die frage doch best. häufiger kommt - 3, 4 zeilen hinzugefügt und die pflichtfeld-abfrage wäre drin. wenn dem nicht so ist, wie gesagt werde ich googeln und mich später damit auseinandersetzen..
trotzdem mal eben dieser code, den ich gefunden habe:
Code: |
"mit dem folgenden code alles ab "mail" bis "exit" ersetzen.
vor dem Versenden der Mail prüfst Du, ob deine Pflichtfelder einen Wert besitzen:"
$valid = true;
if (strlen(trim($_POST["email"])) < 1) // Wenn keine Mailadresse angegeben....
$valid = false;
if (strlen(trim($_POST["name"])) < 1) // Wenn kein Name angegeben...
$valid = false;
// Wenn $valid immer noch true ist, wurden die Pflichtfelder ausgefüllt und wir versenden die Mail:
if ($valid)
{ mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
or die("Die Mail konnte nicht versendet werden.");
header("Location: $strReturnhtml");
exit;
}
// ansonsten senden wir die Mail nicht ab und leiten nicht zur
// "Dankeschön"-Seite weiter, sondern definieren eine
// Fehlermeldung, die im Formular ausgegeben wird:
else
{
$message = "Bitte füllen Sie die Pflichtfelder aus!";
}
Für die eventuelle Ausgabe der Fehlermeldung platzierst Du folgenden Schnipsel irgendwo im HTML-Code:
<?
if ($message)
{
echo "<font style='color:red'>$message</font>";
}
?>
|
ich könnte mir denken (vl. liege ich aba au ganz falsch xD), dass dieses:
["name"])) < 1)
eine eingabe erfordert. 0 = keine eingabe. 1 = eingabe. aber in meinen feldern ist ja von vornerein bereits text (die beschriftung innerhalb des inputs) - dann könnte dies ja eh net bei mir funktionieren?!
und zudem benötige ich ja eine pflichtfeldangabe auf einem "kontrollkästchen" nicht auf den textfeldern.
also falls noch jemand helfen will und kann und mag..
wäre sehr dankbar
und natürl. ersetzt es nicht die tatsache dass ich mich privat selbst noch hinsetzen will und mir die grundkenntnisse und bei gefallem vl. auch mehr aneigne in zukunft (!). das hilft mir aber für dieses problem heute/morgen nicht weiter
Danke..
|
|
|
|
|
|
|
|
Ähnliche Themen |
[PHP] Code wird in Browser nicht ausgeführt
HTML-Code wird im Browser angezeigt
Formulardaten nach Browser-"Zurück" sichtbar machen
Mobile Design - Objekte Sichtbar und Sichtbar Bootstrap
Formmailer
php formmailer
|
|