Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

PHP im html





Frage

Hallo bin Quereinsteiger, und deshalb noch nicht recht fit in der Programiersache. Meine Frage: Kann mir jemand sagen wo ich meinen PHP Formmailer in mein html reinschreibe? vor dem <Body>, oder noch im <head>? Danke [*][sup][i] *Threadedit* 18:33:54, 23.05.2008 Admininfo: Führ bitte einen Thread nicht fort indem du Weitere eröffnest, und vermeide Mehrfachanfragen. Die Datenbank und User werden es dir danken. Siehe [u][url=https://supportnet.de/faqsthread/840]FAQ 2, #3[/url][/u].[/i][/sup]

Antwort 1 von katy

Hallo TK24,

vor jeglichem HTML wäre die richtige Antwort.

Ein Beispiel mit Erklärungen siehst du hier: einfacher PHP-Formmailer. Vom Aufbau her muss deiner gleich sein.

katy

Antwort 2 von TK24

Hallo Katy
wäre es so ok?
den Formmailer habe ich von meinem Provider bekommen.
ersetze eigentlich nur admin und subject und message, oder?

<?php
$admin= 'info@sonstiges.de';
$subject= 'Auftrag';
$delimiter= ":\t";
$email= 'HTTP_POST_VARS['email'];
$message= 'Auftrag an'.$admin.' von '.$email.":\n\n";
foreach($HTTP_POST_VARS as $name=> $value) {
$message.= "$name:$value\n";
}
$email = str_replace (array("\r", "\n"), "", $email);
mail($admin,$subject,$message,"Form:$email");
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Ihr Auftrag online</title>
<style type="text/css">
div { font-family:Verdana; color:#000042; }
.A { margin-top: 30px; margin-left: 30px; }
.B { background-color:#C0C0C0; font-size:1em; font-style:italic; text-decoration:underline; font-weight:bold; margin-top: 20px; margin-right:500px}
.C {text-align:right}
td {width:300px; color:#000042; }
</style>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
</head>
<body background="Panorama12.jpg">
<div class="A"><h2><u><i>Ihr Auftrag online:</i></u></h2></div>
<font color="#FF0000">*</font> gekennzeichnete Felder
sind Pflichtfelder.
<form name="Auftrag" action='Auftrag.php' method='POST'></form>
<div class="B">Auftraggeber:
</div>
<TABLE width=599 border=0 cellpadding=0 cellspacing=0>
<TR>
<TD></TD>
<TD>
<select name="Auswahlliste">
<option>Firma
<option>Herr
<option>Frau</select></TD>
</TR>
<TR>
<TD align="right">Name:</TD>
<TD>
<INPUT NAME="Name" CLASS="textfeld1" size="28"></TD>
</TR>

Kannst du mir vielleicht noch sagen, warum das http://validator.w3.org/ immer wegen <TR> meckert? Ich brauch das doch in meinem Table, oder?
Dank dir

Antwort 3 von katy

Hallo TK24,

funktionierts denn so? Bis auf die fehlenden Sicherheitsabfragen sehe ich keine Fehler im PHP. Gerade wegen der Sicherheit würde ich den verlinkten Formmailer vorziehen, der stürzt wenigstens nicht wegen jeder Falscheingabe ab udn ist auch ansonsten felxibler.

Was genau meckert der Vaildator? Als größten Fehler sehe ich dein formular an. Das schließt du nämlich vor den Eingabefeldern, weshalb die nie mit übertragen werden.

katy

Antwort 4 von TK24

Hallo katy

verlinkter formmailer?? klär mich auf. Wie gesagt, diesen habe ich von meinem Provider bekommen. Weiters habe ich mich noch nicht sonderlich gekümmert.

Validator schreibt:

1. This page is not Valid HTML 4.01 Transitional!

2. document type does not allow element "TR" here.

und das bei jedem <TR>

ausserdem meckert er noch bei <div id="ag">
document type does not allow element "DIV" here.

wegen dem <form> tag, wäre es sinnvoll das tag nach unten zu setzen, vor oder nach den Eingabefeldern, oder muss man das tag oben in den <body> schreiben?

Antwort 5 von katy

Hallo TK24,

in Antwort 1 gibt es einen ankickbaren Bereich, einen sogenantten Link. Und weil er zu einem Formailer führt nannte ich ihn einen Formmailer-Link. Bitte klick darauf und lies dir die Seite, auf die du dann kommst, genau durch.

Am sinnvollsten ist es für dich, glaube ich, einfach den dortigen Code zu übernehmen. Zumindest solltest du ihn als Vorlage zur Überarbeitung deines Codes nehmen. Sowohl für das PHP als auch für das HTML.

katy

Antwort 6 von TK24

Hallo

danke erst mal für die Hilfe.
Ich check mal den Link, vielleicht klappt es ja mit diesem formmailer, denn sobald ich meinen eintrage, vor dem <html> wie du gesagt hast, sind alle meine Formatierungen verschwunden.

Melde mich ggf. noch mal wieder.

Antwort 7 von TK24

Hallo Katy

ich habe nun mal dieses Script ausprobiert,

http://www.php-formular.de/eingaben.php?action=3

und auch so angehägt wie da. Wenn ich es dann im Editor speichere und im IE aufmache um es zu testen, ich klicke einfach ohne was auszufüllen auf senden, tut sich absolut nix.
Selbst Eingaben löschen tut nix.
Ausserdem sind meine formatierungen nichtig.

würde es denn nicht auch funktionieren wenn ich mein PHP script zum prüfen und versenden des Formulares auf eine seperate Seite speichere. blablabla.php, und das dann mit <form action="blablabla.php".......> aufrufe?

Antwort 8 von katy

Hallo TK24,

unter der Adresse tut sich nichts! Ich weiß also nicht, was da für ein Script jemals war.
Bitte poste deinen Quellcode oder die Adresse deiner Seite, damit ich überhaupt weiß, worum es sich dreht.

katy

Antwort 9 von TK24

Hallo Katy

Mit copy/paste funktioniert es doch.

ok, hier ist der Code.

<html>
<head>
<title>Kontaktformular</title>
</head>
<body bgcolor='#FFFFFF'>

<?php
// Formulardaten auslesen
$nachname = $_POST["nachname"];
$vorname = $_POST["vorname"];
$email = $_POST["email"];
//Eingabe pruefen
$fehler = "";
if (empty($_POST['nachname']) || empty($_POST['vorname']) || empty($_POST['email'])) {
$formular_ok = 0;
$fehler .= "- Bitte füllen Sie alle Felder aus!<br>";
}
else {
$formular_ok = 1;
}
//E-Mail-Adresse pruefen
if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $email)){
$mail_ok = 0; if ($email != '') {
$fehler .= "- Geben Sie eine gültige E-Mail-Adresse ein!<br>"; }
}
else {$mail_ok = 1;}
//Voraussetzungen erfuellt - dann Formular absenden
if (($formular_ok == '1') && ($mail_ok == '1')) {
$empfaenger = "ihreMailadresse@domain.de";
$betreff = "Kontaktformular";
$mailtext = "Sie haben Post! $vorname $nachname $email";
//Mail versenden
mail($empfaenger, $betreff, $mailtext, "FROM: $nachname $vorname <$email>");
}
else {
//Voraussetzungen nicht erfüllt - Fehlermeldung
print ("
<form action='kontakt.php' method='POST'>
<TABLE width=400 border=0 cellpadding=0 cellspacing=0>
<TR><TD colspan=2>$fehler</TD></TR><TR><TD colspan=2>&nbsp;</TD></TR>
<TR height=24>
<TD width=150>Nachame:</TD>
<TD width=250><INPUT TYPE='text' NAME='nachname' CLASS='textfeld1' VALUE='$nachname'></TD>
</TR>
<TR height=24>
<TD width=150>Vorname:</TD>
<TD width=250><INPUT TYPE='text' NAME='vorname' CLASS='textfeld1' VALUE='$vorname'></TD>
</TR>
<TR height=24>
<TD width=150>E-Mail:</TD>
<TD width=250><INPUT TYPE='text' NAME='email' CLASS='textfeld1' VALUE='$email'></TD>
</TR>
<TR height=24>
<TD width=150>&nbsp;</TD>
<TD width=250><INPUT TYPE='submit' NAME='submit' CLASS='button1' VALUE='Nachricht senden' onFocus='if (this.blur) this.blur()'></TD>
</TR>
</TABLE>
</form>
");
}
?>

</body>
</html>

habe ihn so eingesetzt, nur eben mit meinen Daten. Mein Table ist etwas anders geschrieben. Lieder habe ich diesen PHP code bei mir bereits gelöscht, weil er nicht funktionierte, deshalb kann ich dir meinen nicht mehr senden. Ich hoffe trotzdem das du mir sagen kannst warum sich beim hinzufügen des PHP codes ins html die formatierungen löschen, und sich bei absenden des formulares absolut garnicht tut.
Danke dir

Antwort 10 von katy

Hallo TK24,

was für Formatierungen löschen sich?

Setz die Seite bitte mal online, damit man sich das mal im Betrieb ansehen kann.

katy

Antwort 11 von TK24

Hallo Katy
habe das PHP wieder in das html Formular so reingeschrieben wie es auch bei

www.php-formular.de/eingaben.php?action=3

beschrieben ist. Lediglich so umformatiert, das es zu meinem Formular passt.

Beide Button, "senden" und "löschen", machen garnichts.

www.top-kurier24.de dann auf Auftrag klicken.

Antwort 12 von katy

Hallo TK24,

eine PHP-Seite muss vom Server als solche erkannt werden. Dazu dient die Dateiendung php. Deine Datei heißt aber Auftrag.htm. Bei dieser Endung wird PHP gar nicht ausgeführt und das ganze funktioniert nicht.
Also benenne die Datei um in Auftrag.php (vergiss nicht die Links anzupassen). Dann können wir weiter sehen.

katy

Antwort 13 von katy

Ergänzung:

unter action hast du eine kontakt.php angegeben. Wenn es die gibt und sie auch funktioniert ist der ganze PHP-Teil hier völlig überflüssig. Ansonsten trage hier bitte auch Auftrag.php ein, damit die Daten überhaupt verarbeitet werden können.

Antwort 14 von tk24

Also wenn ich den PHP code seperat speichern würde, und im Form Tag unter action dann Auftrag.php eingebe, dann sollte es doch auch funktionieren, oder?

<input type="checkbox" name="wieAuftraggeber" value="wieAuftraggeber" onclick="document.getElementById('ag').style.display = 'none' "></TD>
</TR>
<div id="ag">

Hast du dir das zufällig auch mal angeschaut, und probiert?
Bei mir funktioniert das so nämlich auch nicht.

Was ist da denn nu wieder falsch?

Antwort 15 von TK24

Habe den PHP code seperat gespeichert.
Habe nun versucht das Formular zu senden, und habe nur eine Zeile ausgefüllt.
Normalerweise sollte er mir die Fehlermeldung bringen
Bitte füllen Sie die mit * gekennzeichneten Felder aus!
Tut es nicht. Stattdessen erhalte ich folgendes:

Parse error: syntax error, unexpected T_STRING in /homepages/26/d242829333/htdocs/Auftrag.php on line 30

Line 30 = $email= 'HTTP_POST_VARS['email'];

Was bedeutet das?

Antwort 16 von katy

Hallo TK24,

das bedeutet: hier ist ein ' zuviel.

Den JavaScriptteil nimm bitte raus, solange bis das PHP läuft. An 2 Problemen gleichzeitig zu arbeiten ist Unsinn.

katy

Antwort 17 von TK24

Habe das ' gelöscht, und neu geladen.
bekomme nun folgenden Fehler

Parse error: syntax error, unexpected '[' in /homepages/26/d242829333/htdocs/Auftrag.php on line 30

Line 30 = $email= HTTP_POST_VARS['email'];

Antwort 18 von katy

Hallo TK24,

was soll das werden? Ein Ratespiel? ich kenne deinen PHP-Code nicht!

katy

Antwort 19 von TK24

<?php
// Formulardaten auslesen
$name = $_POST["Name"];
$Strasse = $_POST["Strasse"];
$PLZ = $_POST["PLZ"];
$Ort = $_POST["Ort"];
$Vorwahl = $_POST["Vorwahl"];
$Nummer = $_POST["Nummer"];
$email = $_POST["email"];
//Eingabe pruefen
$fehler = "";
if (empty($_POST['Name']) || empty($_POST['Strasse']) || empty($_POST['PLZ'])|| empty($_POST['Ort'])|| empty($_POST['Vorwahl']) || empty($_POST['Nummer'])|| empty($_POST['email'])) {
$formular_ok = 0;
$fehler .= "- Bitte füllen Sie die mit * gekennzeichneten Felder aus!<br>";
}
else {
$formular_ok = 1;
}
//E-Mail-Adresse pruefen
if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $email)){
$mail_ok = 0; if ($email != '') {
$fehler .= "- Geben Sie eine gültige E-Mail-Adresse ein!<br>"; }
}
else {$mail_ok = 1;}
//Voraussetzungen erfuellt - dann Formular absenden
if (($formular_ok == '1') && ($mail_ok == '1')) {
$admin = "info@topkurier24.de";
$subject = "Auftrag";
$delimiter = ":\t";
$email= HTTP_POST_VARS['email'];
$message= 'Auftrag an'.$admin.' von '.$email.":\n\n";
foreach($HTTP_POST_VARS as $name=> $value) {
$message.= "$name:$value\n";
}
//Mail versenden
$email = str_replace (array("\r", "\n"), "", $email);
mail($admin,$subject,$message,"Form:$email");
print ("Ihr Auftrag wurde an uns weitergeleitet.")
}
else {
//Voraussetzungen nicht erfüllt - Fehlermeldung
print ("Ihr Auftrag konnte nicht gesendetet werden");}?>

Antwort 20 von katy

Hallo TK24,

du hast doch schon mit
$email = $_POST["email"];
die E-Mail-Adresse des Kunden, warum versuchst du über
$email= HTTP_POST_VARS['email'];
sie noch einmal zu erhalten?

Also: streich die Fehler-Zeile einfach, sie ist überflüssig!

Und in
mail($admin,$subject,$message,"Form:$email");
mache aus dem Form: ein FROM: (das ist nämlich englisch für VON:)

Hast du den Code aus mehreren Scripten zusammengetragen?

katy

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: