Antworten auf deine Fragen:
Neues Thema erstellen

Kontaktformular- Mailhandler von TemplateMonster

kurze

Noch nicht viel geschrieben

Hallo alle zusammen,

ich habe für einen Kunden eine Template gekauft und kenne mich aber kaum mit php und js aus. Dabei ist ein Kontaktformular, wo ich auch meine Mailadresse zum testen hinterlegt habe, aber es funktioniert nicht. Es ist auch nicht markiert wo ich was ändern müsste mit meinen eigenen Daten. Vielleicht kennt Ihr euch aus und könnt mir dabei behilflich sein.

Hier mal der Code von dem Formular:

HTML:
<form id="contact-form">
												<div class="success">Das Kontaktformular wurde übermittelt!<br>
															<strong>Wie werden uns in kürze melden.</strong>
													</div>
												<fieldset>
													<label class="name">
														<input type="text" value="Name:">
															<span class="error">*Das ist kein gültiger Name.</span> <span class="empty">Bitte füllen Sie das Feld richtig aus!</span>
													</label>
													<label class="email">
														<input type="text" value="E-mail:">
															<span class="error">*Das ist keine gültige E-mailadresse.</span> <span class="empty">*Bitte füllen Sie das Feld richtig aus!</span>
													</label>
													<label class="phone">
														<input type="text" value="Telefon:">
															<span class="error">*Das ist keine gültige Telefonnummer.</span> <span class="empty">*Bitte füllen Sie das Feld richtig aus!</span>
													</label>
													<label class="message">
														<textarea>Nachricht:</textarea>
															<span class="error">*Die Nachricht ist zu kurz.</span> <span class="empty">*Bitte füllen Sie das Feld richtig aus!</span>
													</label>
													<div class="buttons2">
															<a href="#" data-type="reset" class="button1">zurück</a>
															<a href="#" data-type="submit" class="button1">senden</a>
													</div>
												</fieldset>
</form>


hier das form.js

HTML:
//forms
;(function($){
	$.fn.forms=function(o){
		return this.each(function(){
			var th=$(this)
				,_=th.data('forms')||{
					errorCl:'error',
					emptyCl:'empty',
					invalidCl:'invalid',
					notRequiredCl:'notRequired',
					successCl:'success',
					successShow:'4000',
					mailHandlerURL:'bat/MailHandler.php',
					ownerEmail:'info@mediadvantage.de',
					stripHTML:true,
					smtpMailServer:'localhost',
					targets:'input,textarea',
					controls:'a[data-type=reset],a[data-type=submit]',
					validate:true,
					rx:{
						".name":{rx:/^[a-zA-Z'][a-zA-Z-' ]+[a-zA-Z']?$/,target:'input'},
						".state":{rx:/^[a-zA-Z'][a-zA-Z-' ]+[a-zA-Z']?$/,target:'input'},
						".email":{rx:/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i,target:'input'},
						".phone":{rx:/^\+?(\d[\d\-\+\(\) ]{5,}\d$)/,target:'input'},
						".fax":{rx:/^\+?(\d[\d\-\+\(\) ]{5,}\d$)/,target:'input'},
						".message":{rx:/.{20}/,target:'textarea'}
					},
					preFu:function(){
						_.labels.each(function(){
							var label=$(this),
								inp=$(_.targets,this),
								defVal=inp.val(),
								trueVal=(function(){
											var tmp=inp.is('input')?(tmp=label.html().match(/value=['"](.+?)['"].+/),!!tmp&&!!tmp[1]&&tmp[1]):inp.html()
											return defVal==''?defVal:tmp
										})()
							trueVal!=defVal
								&&inp.val(defVal=trueVal||defVal)
							label.data({defVal:defVal})								
							inp
								.bind('focus',function(){
									inp.val()==defVal
										&&(inp.val(''),_.hideEmptyFu(label),label.removeClass(_.invalidCl))
								})
								.bind('blur',function(){
									_.validateFu(label)
									if(_.isEmpty(label))
										inp.val(defVal)
										,_.hideErrorFu(label.removeClass(_.invalidCl))											
								})
								.bind('keyup',function(){
									label.hasClass(_.invalidCl)
										&&_.validateFu(label)
								})
							label.find('.'+_.errorCl+',.'+_.emptyCl).css({display:'block'}).hide()
						})
						_.success=$('.'+_.successCl,_.form).hide()
					},
					isRequired:function(el){							
						return !el.hasClass(_.notRequiredCl)
					},
					isValid:function(el){							
						var ret=true
						$.each(_.rx,function(k,d){
							if(el.is(k))
								ret=d.rx.test(el.find(d.target).val())										
						})
						return ret							
					},
					isEmpty:function(el){
						var tmp
						return (tmp=el.find(_.targets).val())==''||tmp==el.data('defVal')
					},
					validateFu:function(el){							
						el.each(function(){
							var th=$(this)
								,req=_.isRequired(th)
								,empty=_.isEmpty(th)
								,valid=_.isValid(th)								
							
							if(empty&&req)
								_.showEmptyFu(th.addClass(_.invalidCl))
							else
								_.hideEmptyFu(th.removeClass(_.invalidCl))
							
							if(!empty)
								if(valid)
									_.hideErrorFu(th.removeClass(_.invalidCl))
								else
									_.showErrorFu(th.addClass(_.invalidCl))								
						})
					},
					getValFromLabel:function(label){
						var val=$('input,textarea',label).val()
							,defVal=label.data('defVal')								
						return label.length?val==defVal?'nope':val:'nope'
					}
					,submitFu:function(){
						_.validateFu(_.labels)							
						if(!_.form.has('.'+_.invalidCl).length)
							$.ajax({
								type: "POST",
								url:_.mailHandlerURL,
								data:{
									name:_.getValFromLabel($('.name',_.form)),
									email:_.getValFromLabel($('.email',_.form)),
									phone:_.getValFromLabel($('.phone',_.form)),
									fax:_.getValFromLabel($('.fax',_.form)),
									state:_.getValFromLabel($('.state',_.form)),
									message:_.getValFromLabel($('.message',_.form)),
									owner_email:_.ownerEmail,
									stripHTML:_.stripHTML
								},
								success: function(){
									_.showFu()
								}
							})			
					},
					showFu:function(){
						_.success.slideDown(function(){
							setTimeout(function(){
								_.success.slideUp()
								_.form.trigger('reset')
							},_.successShow)
						})
					},
					controlsFu:function(){
						$(_.controls,_.form).each(function(){
							var th=$(this)
							th
								.bind('click',function(){
									_.form.trigger(th.data('type'))
									return false
								})
						})
					},
					showErrorFu:function(label){
						label.find('.'+_.errorCl).slideDown()
					},
					hideErrorFu:function(label){
						label.find('.'+_.errorCl).slideUp()
					},
					showEmptyFu:function(label){
						label.find('.'+_.emptyCl).slideDown()
						_.hideErrorFu(label)
					},
					hideEmptyFu:function(label){
						label.find('.'+_.emptyCl).slideUp()
					},
					init:function(){
						_.form=_.me						
						_.labels=$('label',_.form)

						_.preFu()
						
						_.controlsFu()
														
						_.form
							.bind('submit',function(){
								if(_.validate)
									_.submitFu()
								else
									_.form[0].submit()
								return false
							})
							.bind('reset',function(){
								_.labels.removeClass(_.invalidCl)									
								_.labels.each(function(){
									var th=$(this)
									_.hideErrorFu(th)
									_.hideEmptyFu(th)
								})
							})
						_.form.trigger('reset')
					}
				}
			_.me||_.init(_.me=th.data({forms:_}))
			typeof o=='object'
				&&$.extend(_,o)
		})
	}
})(jQuery)
$(window).load(function(){
	$('#contact-form').forms({
		ownerEmail:'info@mediadvantage.de'
	})
})



hier Mailhandler.php

PHP:
<?php
	$owner_email = $_POST["owner_email"];
	$headers = 'From:' . $_POST["email"];
	$subject = 'A message from your site visitor ' . $_POST["name"];
	$messageBody = "";
	
	if($_POST['name']!='nope'){
		$messageBody .= '<p>Visitor: ' . $_POST["name"] . '</p>' . "\n";
		$messageBody .= '<br>' . "\n";
	}
	if($_POST['email']!='nope'){
		$messageBody .= '<p>Email Address: ' . $_POST['email'] . '</p>' . "\n";
		$messageBody .= '<br>' . "\n";
	}else{
		$headers = '';
	}
	if($_POST['state']!='nope'){		
		$messageBody .= '<p>State: ' . $_POST['state'] . '</p>' . "\n";
		$messageBody .= '<br>' . "\n";
	}
	if($_POST['phone']!='nope'){		
		$messageBody .= '<p>Phone Number: ' . $_POST['phone'] . '</p>' . "\n";
		$messageBody .= '<br>' . "\n";
	}	
	if($_POST['fax']!='nope'){		
		$messageBody .= '<p>Fax Number: ' . $_POST['fax'] . '</p>' . "\n";
		$messageBody .= '<br>' . "\n";
	}
	if($_POST['message']!='nope'){
		$messageBody .= '<p>Message: ' . $_POST['message'] . '</p>' . "\n";
	}
	
	if($_POST["stripHTML"] == 'true'){
		$messageBody = strip_tags($messageBody);
	}
	
	try{
		if(!mail($owner_email, $subject, $messageBody, $headers)){
			throw new Exception('mail failed');
		}else{
			echo 'mail sent';
		}
	}catch(Exception $e){
		echo $e->getMessage() ."\n";
	}
?>


Es wäre lieb wenn mir jemand weiterhelfen könnte.
Wenn es zu unübersichtlich ist, kann ich es auch per Mail verschicken.

Danke
Ramona
 
Zuletzt bearbeitet:

Myhar

Hat es drauf

AW: Kontaktformular- Mailhandler von TemplateMonster

Ein schlechtes Form-Plugin, welches du hier gekauft hast. Das form hat kein action Attribut und auch keine submit Buttons, das heißt Benutzer ohne Javascript können das Formular nicht abschicken.
Abgesehen davon: Nachdem das Formular mit JS funktioniert, sagt die Fehlerkonsole etwas? Liegt das PHP Script auch in dem im JS definierten mailHandlerURL-Pfad?
 

kurze

Noch nicht viel geschrieben

AW: Kontaktformular- Mailhandler von TemplateMonster

Hallo, danke für deine Antwort. Man sieht ja nicht vorher was man kauft bei solchen Templates! Ein Submit-button ist im Formtag drin! Die Ordnerstrucktur stimmt.
 

Duddle

Posting-Frequenz: 14µHz

AW: Kontaktformular- Mailhandler von TemplateMonster

"Funktioniert nicht" ist keine Fehlermeldung. Du musst isolieren, ab wann das System vom erwarteten Ablauf abweicht.
Das heißt, du musst schauen ob die Daten im JavaScript korrekt ankommen, danach ob sie korrekt an das PHP-Script geschickt werden und was dort drin nach und nach mit ihnen passiert.

Übrigens führt das PHP-Script keinerlei Validierung durch, d.h. es ist ein Angriffsvektor für Spammer.


Duddle
 

kurze

Noch nicht viel geschrieben

AW: Kontaktformular- Mailhandler von TemplateMonster

Hallo, das ist ein guter Hinweis, werde ich mir mal in Ruhe anschauen. Danke
 

Curanai

Aktives Mitglied

AW: Kontaktformular- Mailhandler von TemplateMonster

Moinsen, Du hast ein "offenes Relay" gekauft - wenn Du das so auf Deinen Server schiebst, lässt sich für Außenstehende problemlos eine E-Mail an beliebige Empfänger verschicken. Das liegt an der Verwendung des extern zugeführten JavaScript E-Mail-Empfängers und der in der Folge fehlenden Parts. Das musst Du aus eigenem Interesse dringend überarbeiten!!!
 

kurze

Noch nicht viel geschrieben

AW: Kontaktformular- Mailhandler von TemplateMonster

Hallo, Danke für den Hinweis. Weißt du wo man ordentliche Formulare als Baukasten herbekommt? Da ich mich nicht so auskenne mit js und php, ist es schwierig zu verstehen was an das gekaufte geändert werden muss :(! Ich habe mir jetzt die Lern DVD von PSD "Formulare im Web gekauft und werde wohl lernen müssen.
LG
 

Curanai

Aktives Mitglied

AW: Kontaktformular- Mailhandler von TemplateMonster

So schwer sind Formulare nicht - sie sollten nur keine multiplen oder gar gänzlich unbekannte Empfänger zulassen und Spam auf den Empfänger nicht ermöglichen. Inwiefern Dir die DVD helfen wird, kann ich nicht beurteilen. Und da ich meine Formulare eigentlich selbst baue, kann ich Dir keinen Tipp für einen Baukasten o. ä. geben - aber die Gefahr mit den Dingern ist ja dann wieder identisch (wenn der Baukastenanbieter nicht aufgepasst hat).

Viele Handgriffe benötigst Du für das Modell oben nicht - setze PHP-seitig den Empfänger und vergleiche, ob das, was vom Client (potentiell immer "giftig") kommt, identisch ist mit der im PHP-hinterlegten E-Mail. Ist dies der Fall, wird die E-Mail verschickt. Zum Spaß kannst Du Dir dann auch noch den "Versuch" zeigen lassen, falls es mal wer probiert etc. ;)

Bevor wer mit mir meckert: Ich gehe davon aus, dass die verwendete Funktion irgendwas "chic'es" macht - daher ist ein Soll/Ist-Vergleich eines Strings serverseitig wohl zügiger realisiert als der Umbau des Templates, der dadurch evtl. Funktionsweisen/optisches Handling verliert.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.614
Beiträge
1.538.351
Mitglieder
67.525
Neuestes Mitglied
mgtaucher
Oben