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&uuml;llt
$err[0] = 'Fehler, Sie haben nicht alle Felder ausgef&uuml;llt:';

# Kein Name eingegeben
$err[1] = '<br />- Ung&uuml;ltiger Name';

# Ung&uuml;ltige E-Mailadresse eingegeben
$err[2] = '<br />- Ung&uuml;ltiger E-Mailadresse';

# Kein Betreff eingegeben
$err[3] = '<br />- Ung&uuml;ltiger Betreff';

# Keine Nachricht eingegeben
$err[4] = '<br />- Ung&uuml;ltige Nachricht';

# Ung&uuml;ltiger Sicherheitscode
$err[5] = '<br />- Ung&uuml;ltiger Sicherheitscode';

# Alle Felder sind OK
$ok = 'Vielen Dank f&uuml;r Ihre Nachricht, wir werden Sie so schnell wie m&ouml;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">&nbsp;</td>
<td>&nbsp;</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 olli26 am 14.03.2010 - 14:44
Geht nicht, dann zeigt er mir einen Fehler an.

http://www.schabenonkel.de/kontakt.php

Die Zeilenbenummerung ist bei mir etwas anderst.

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($tdsubstr(md5 (uniqid (rand())), 06));
$data base64_encode($data);
$data strtr($data'+/''-_');
}else{
$data mdecrypt_generic($tdbase64_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">&nbsp;</td>
<td>&nbsp;</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 ...



Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.