Archivlink: javarea.de Forum > PHP, MySQL & CGI > Fehler im Kontaktformular
Vollständigen Link anzeigen: javarea.de Forum > PHP, MySQL & CGI > Fehler im Kontaktformular
Pages: [1]
| geschrieben von olli26 am 14.03.2010 - 13:04 |
Hallo
Ich nutze ein Kontaktformular das beim Antworten nicht an den User sendet, sondern die Antzwort an das Kontaktformular, was ja nicht geht.
Nun weiß ich nicht, wie ich das Formular so abändere, das beim Antworten auf die Nachricht es direkt zu dem Absendet geht.
Hoffe jemand kann mir da helfen.
Gruss, Oliver
| HTML-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
| <!-- Start Script -->
<?php
// Einstellungen
# Ihre E-Mailadresse
$sys_webmaster = 'info@schabenonkel.de';
# Absender || Muster(From: NAME <EMAIL>) // Beispiel: 'From: Max Mustermann <max@musterdomain.tld>'
$sys_absender = 'From: Kontaktformular <system@domain.tld>';
# Betreff
$sys_betreff = 'Kontaktformular-Anfrage';
// Nachrichten
# Nicht alle Felder ausgefüllt
$err[0] = 'Fehler, Sie haben nicht alle Felder ausgefüllt:';
# Kein Name eingegeben
$err[1] = '<br />- Ungültiger Name';
# Ungültige E-Mailadresse eingegeben
$err[2] = '<br />- Ungültiger E-Mailadresse';
# Kein Betreff eingegeben
$err[3] = '<br />- Ungültiger Betreff';
# Keine Nachricht eingegeben
$err[4] = '<br />- Ungültige Nachricht';
# Ungültiger Sicherheitscode
$err[5] = '<br />- Ungültiger Sicherheitscode';
# Alle Felder sind OK
$ok = 'Vielen Dank für Ihre Nachricht, wir werden Sie so schnell wie möglich bearbeiten!<br /><br />';
?>
<form name="kontaktformular" action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
<table width="500" align="center">
<tr><td colspan="2">
<?php
function PAS_CRYPT($data=NULL){
$key = md5($_SERVER["DOCUMENT_ROOT"].$_SERVER['SELF_PHP']);
$td = mcrypt_module_open(MCRYPT_GOST, '', MCRYPT_MODE_ECB, '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
if ($data==NULL) {
$data = mcrypt_generic($td, substr(md5 (uniqid (rand())), 0, 6));
$data = base64_encode($data);
$data = strtr($data, '+/', '-_');
}else{
$data = mdecrypt_generic($td, base64_decode($data));
preg_match_all("/[.a-z0-9_-]+/i", $data, $heurix);
$data = $heurix[0][0];
}
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $data;
}
$pas = PAS_CRYPT();
$name = trim(strip_tags($_POST['name']));
$email = trim(strip_tags($_POST['email']));
$betreff = trim(strip_tags($_POST['betreff']));
$homepage = trim(strip_tags($_POST['homepage']));
$nachricht = trim(strip_tags($_POST['nachricht']));
if(isset($_POST['submit'])){
$timestamp = time ();
$datum = date ("d.m.Y",$timestamp);
$uhrzeit = date ("H:i:s",$timestamp);
$msg = '<span style="color:red">'.$err[0];
if($name == ''){
$msg .= $err[1];
$error = true;
}
if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $email)){
$msg .= $err[2];
$error = true;
}
if($nachricht == ''){
$msg .= $err[4];
$error = true;
}
if(PAS_CRYPT($_POST['xpas']) != strip_tags($_POST['code'])){
$msg .= $err[5];
$error = true;
}
$msg .= '</span><br /><br />';
if($error != true){
$sys_nachricht = "-- Kontakformularanfrage --\n\nBetreff: $betreff\nName: $name\nE-Mail: $email\nHomepage: $homepage\n\nNachricht:\n$nachricht\n\nGesendet am $datum um $uhrzeit.";
mail($sys_webmaster, $sys_betreff, $sys_nachricht, $sys_absender);
$name = NULL;
$betreff = NULL;
$homepage = NULL;
$email = NULL;
$nachricht = NULL;
echo $ok;
}else{
echo $msg;
}
}
?></td>
</tr>
<tr>
<td width="150"><p><strong>Dein Name *:</strong></td>
<td><input name="name" type="text" value="<? echo $name; ?>" size="40" maxlength="100"></td></tr>
<tr>
<td width="150"><p><strong>E-Mail *:</strong><br></td>
<td><input name="email" type="text" id="email" value="<? echo $email; ?>" size="40" maxlength="100"></td></tr>
</tr>
<tr>
<td width="150"><p><strong>Betreff *:</strong></td>
<td><INPUT NAME="betreff" TYPE="text" id="betreff" value="<? echo $betreff; ?>" SIZE="40" maxlength="50"></td></tr>
<tr>
<td width="150"><p><strong>Nachricht:</strong></td>
<td><textarea name="nachricht" cols="40" rows="5" wrap="VIRTUAL" id="nachricht"><? echo $nachricht; ?></textarea></td></tr>
<tr>
<td width="150"> </td>
<td> </td>
</tr>
<tr>
<td width="150"><p><strong>Sicherheitscode:</strong></td>
<td><img src="captcha_form.php?pa_s=<? echo $pas; ?>" alt="Captcha" border="1" /></td>
<td><p>* Pflichtfelder </td>
</tr>
<tr>
<td width="150"><p><strong>Sicherheitscode <br>
wiederholen: </strong></td>
<td><input name="code" type="text" id="code" size="20" maxlength="50" /></td>
<td><input type="submit" value="Abschicken" style="background-color:#9E763B; color:#2C2B2B; border:0 ridge ; font:bold 12px Verdana" name="submit">
<input name="xpas" type="hidden" id="xpas" value="<? echo $pas; ?>" /></td>
</tr>
<p><span style="font-size:10px; font-family:Verdana, Arial, Helvetica, sans-serif">
</p>
</td></tr>
</table>
</form> |
|
| geschrieben von Micha am 14.03.2010 - 13:32 |
Hi,
| Zitat von: olli26 am 14.03.2010 - 13:04 | | |
Ich nutze ein Kontaktformular das beim Antworten nicht an den User sendet, sondern die Antzwort an das Kontaktformular, was ja nicht geht. |
Doch, das ist schon in Ordnung so. Per HTML kannst Du keine Mails versenden. Insofern ist eine serverseitige Sprache nötig (hier wohl PHP), die das übernimmt. In Zeile 88 wird in Deinem Script dann auch die entsprechende Funktion MAIL() aufgerufen, die dann das Versenden übernimmt. Vorraussetzung ist jedoch, dass Dir PHP auch zur Verfügung steht.
Gruß Micha
|
| geschrieben von olli26 am 14.03.2010 - 13:46 |
Hi
Sorry, hatte mich falsch ausgedrückt.
Das Versenden klappt über das Kontaktformular. Abrufen tu ich die Mails mit meinem Outlook und wenn ich dann auf eine Anfrage klicke um sie zu beantworten, steht bei dem Absender bzw. dem neuen Empfänger das: system@domain.tld.
Also muss ich ständig in der Mail auf die Mailadresse klicken und so antworten. Aber das kann man doch bestimmt auch abändern.
Gruss, Oliver |
| geschrieben von Danny am 14.03.2010 - 14:09 |
Hallo Olli,
wenn nicht anders angegeben verwendet Outlook als "Antwort-Adresse" die Absenderadresse, in dem Fall system@domain.tld wie in Zeile 9 konfigurierbar
| PHP-Quelltext | 1:
2:
3:
|
<?
$sys_absender = 'From: Kontaktformular <system@domain.tld>';
?>
|
man kann aber noch einen optionalen Reply-To Header mitsenden, dessen Adresse dann für die Antwort Funktion verwendet wird.
Dafür fügst du zwischen Zeile 93 ($sys_nachricht = " ...") und Zeile 94 (mail($sys_webmaster, $sys_betreff, $sys_nachricht, $sys_absender);) folgende neue Zeile ein:
| PHP-Quelltext | 1:
2:
3:
|
<?
$sys_absender .= "\r\nReply-To: ".$email;
?>
|
und schaust mal ob das damit funktioniert.
Gruß Danny |
| geschrieben von Danny am 14.03.2010 - 14:45 |
| wie sieht der Code denn jetzt aus bei dir ? |
| geschrieben von olli26 am 14.03.2010 - 14:48 |
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
|
<form name="kontaktformular" action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
<table width="500" align="center">
<tr><td colspan="2">
<?php
function PAS_CRYPT($data=NULL){
$key = md5($_SERVER["DOCUMENT_ROOT"].$_SERVER['SELF_PHP']);
$td = mcrypt_module_open(MCRYPT_GOST, '', MCRYPT_MODE_ECB, '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
if ($data==NULL) {
$data = mcrypt_generic($td, substr(md5 (uniqid (rand())), 0, 6));
$data = base64_encode($data);
$data = strtr($data, '+/', '-_');
}else{
$data = mdecrypt_generic($td, base64_decode($data));
preg_match_all("/[.a-z0-9_-]+/i", $data, $heurix);
$data = $heurix[0][0];
}
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $data;
}
$pas = PAS_CRYPT();
$name = trim(strip_tags($_POST['name']));
$email = trim(strip_tags($_POST['email']));
$betreff = trim(strip_tags($_POST['betreff']));
$homepage = trim(strip_tags($_POST['homepage']));
$nachricht = trim(strip_tags($_POST['nachricht']));
if(isset($_POST['submit'])){
$timestamp = time ();
$datum = date ("d.m.Y",$timestamp);
$uhrzeit = date ("H:i:s",$timestamp);
$msg = '<span style="color:red">'.$err[0];
if($name == ''){
$msg .= $err[1];
$error = true;
}
if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $email)){
$msg .= $err[2];
$error = true;
}
if($nachricht == ''){
$msg .= $err[4];
$error = true;
}
if(PAS_CRYPT($_POST['xpas']) != strip_tags($_POST['code'])){
$msg .= $err[5];
$error = true;
}
$msg .= '</span><br /><br />';
if($error != true){
$sys_nachricht = "-- Kontakformularanfrage --\n\nBetreff: $betreff\nName: $name\nE-Mail: $email\nHomepage: $homepage\n\nNachricht:\n$nachricht\n\nGesendet am $datum um $uhrzeit.";
mail($sys_webmaster, $sys_betreff, $sys_nachricht, $sys_absender);
<?
$sys_absender .= "\r\nReply-To: ".$email;
?>
$sys_absender .= "\r\nReply-To: ".$email;
$name = NULL;
$betreff = NULL;
$homepage = NULL;
$email = NULL;
$nachricht = NULL;
echo $ok;
}else{
echo $msg;
}
}
?></td>
</tr>
<tr>
<td width="150"><p><strong>Dein Name *:</strong></td>
<td><input name="name" type="text" value="<? echo $name; ?>" size="40" maxlength="100"></td></tr>
<tr>
<td width="150"><p><strong>E-Mail *:</strong><br></td>
<td><input name="email" type="text" id="email" value="<? echo $email; ?>" size="40" maxlength="100"></td></tr>
</tr>
<tr>
<td width="150"><p><strong>Betreff *:</strong></td>
<td><INPUT NAME="betreff" TYPE="text" id="betreff" value="<? echo $betreff; ?>" SIZE="40" maxlength="50"></td></tr>
<tr>
<td width="150"><p><strong>Nachricht:</strong></td>
<td><textarea name="nachricht" cols="40" rows="5" wrap="VIRTUAL" id="nachricht"><? echo $nachricht; ?></textarea></td></tr>
<tr>
<td width="150"> </td>
<td> </td>
</tr>
<tr>
<td width="150"><p><strong>Sicherheitscode:</strong></td>
<td><img src="captcha_form.php?pa_s=<? echo $pas; ?>" alt="Captcha" border="1" /></td>
<td><p>* Pflichtfelder </td>
</tr>
<tr>
<td width="150"><p><strong>Sicherheitscode <br>
wiederholen: </strong></td>
<td><input name="code" type="text" id="code" size="20" maxlength="50" /></td>
<td><input type="submit" value="Abschicken" style="background-color:#9E763B; color:#2C2B2B; border:0 ridge ; font:bold 12px Verdana" name="submit">
<input name="xpas" type="hidden" id="xpas" value="<? echo $pas; ?>" /></td>
</tr>
<!--Copyright darf NICHT entfernt werden!!-->
<p><span style="font-size:10px; font-family:Verdana, Arial, Helvetica, sans-serif">
</p>
<!--Copyright darf NICHT entfernt werden!!--></td></tr>
</table>
</form>
|
|
| geschrieben von Danny am 14.03.2010 - 14:53 |
Hallo,
ok, das Forum macht wenn in "PHP-Code" schreibe automatisch die <?php und ?> drumherum. Indem Fall sollten die nicht übernommen werden. Und du hast da auch was doppelt und in verkehrter Reihenfolge drin ;)
Deshalb hier jetzt ein paar Zeilen mehr, damit du siehst wo es eingefügt werden muss.
| HTML-Quelltext | 1:
2:
3:
4:
5:
| $sys_nachricht = "-- Kontakformularanfrage --\n\nBetreff: $betreff\nName: $name\nE-Mail: $email\nHomepage: $homepage\n\nNachricht:\n$nachricht\n\nGesendet am $datum um $uhrzeit.";
$sys_absender .= "\r\nReply-To: ".$email;
mail($sys_webmaster, $sys_betreff, $sys_nachricht, $sys_absender);
$name = NULL; |
Gruß Danny
|
| geschrieben von olli26 am 14.03.2010 - 15:32 |
Es funktioniert.
Ich danke dir vielmals.
Gruss, Oliver |
| geschrieben von Patricia am 16.03.2010 - 23:02 |
Olli ich danke Dir dass Du der Javarea treu bleibst
Und Michel Dir dass Du weiter hilfst
danke Jungs |
| geschrieben von Micha am 17.03.2010 - 12:10 |
Hi Patricia,
keine Ursache auch wenns in letzter Zeit seltener ist, weil ich viel um die Ohren habe. Mitlesen tue ich in jedem Fall auch wenn ich nichts sage. Danny sei Dank, dass hier also auch kompetent geholfen wird!
Gruß Micha
|
| geschrieben von olli26 am 17.03.2010 - 18:04 |
Hallo Patty
Na was denkst du dann. Ich kenn kein anderes Portal wo man so schnell Hilfe bekommt, als hier.
Es freut mich immer wieder hier rein zu schnuppern und ich weiß, das ich nicht nur dumme und fachausdrückliche Sprüche bekomme, sondern echte Hilfe und Scriptanpassungen.
Nun ein neues Problemchen. Ich will ein Onlineshop eröffnen und hab den oscommerce-3.0a5 installiert. Doch leider ist der Adminbereich komplett in English udn darin bin ich leider garnicht gut.
Wie kann ich den Adminbereich auf Deutsch einstellen oder Updaten ?
Leider finde ich bei denen nichts und bei Google bin ich auch nicht fündig geworden.
Oder gibt es ein anderen Shop, der auch kostenlos ist und auch so umfangreich und gut ist ?
Lg, Oliver |
| geschrieben von Danny am 17.03.2010 - 22:18 |
Hallo Olli,
kenne osCommerce nur ein wenig (kann es persönlich auch nicht wirklich leiden aber ok). Sprachpakete gibt es hier:
http://addons.oscommerce.com/category/Languages
Im speziellen das Deutsche wird das hier sein: http://addons.oscommerce.com/info/6610
Andere Shopsysteme gibt es einige .. gute nur ein paar Halte persönlich sehr viel von Magento (in der Community Edition kostenlos) http://www.magentocommerce.com/de/
Mindestens so umfangreich wie osCommerce .. erfordert aber etwas Einarbeitung.
Gruß Danny
P.S. Schön von dir zu hören Patty ... wie gehts dir und deiner Familie ? Habe gerade festgestellt das du in Hombug bei Saarbrücken wohnst ... hatte irgendwie Bad Homburg im Kopf. Hab nämlich irgendwann in nächster Zeit mal wieder einen Weg nach Frankfurt zu machen, da hab ich mir gedacht liegt ja auf dem Weg, da wäre ich gerne mal auf einen Kaffe bei dir vorbeigekommen nach all den Jahren ...
Nur war das leider nix .. Homburg/Saar liegt ja genau in der falschen Richtung ... 
|
|