Zeig uns mal deine ganze PHP Datei bitte.![]()
wurde gemacht... doch alles beim alten...
ach, verstehe ich wirklich nicht warum das jetzt aufeinmal nicht geht...
Zeig uns mal deine ganze PHP Datei bitte.![]()
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
also das ist das script, liegt aber auf der knjiga_o_kavi.php datei... e-mail adresse ist mit XXXXX gekennzeichnetPHP-Code:<div class="narudzbenica" id="narudzbenica"> <?php
//erstmal Variablen definieren
$pagename="Knjiga_o_kavi.php";
$error=$name=$adresa=$email=$message="";
error_reporting(E_ALL | (defined('E_STRICT') ? E_STRICT : 0));
// an wen geht die Mail ?
$empfaenger= "XXXXXXXXXXX";
if(isset($_POST['domail'])) {
// es wurde abschicken gedrückt, also erst mal die Felder holen
$name=get_magic_quotes_gpc() ? stripslashes($_POST['name']) : $_POST['name'];
$adresa=get_magic_quotes_gpc() ? stripslashes($_POST['adresa']) : $_POST['adresa'];
$mjesto=get_magic_quotes_gpc() ? stripslashes($_POST['mjesto']) : $_POST['mjesto'];
$email=get_magic_quotes_gpc() ? stripslashes($_POST['email']) : $_POST['email'];
$telefon=get_magic_quotes_gpc() ? stripslashes($_POST['telefon']) : $_POST['telefon'];
$br=get_magic_quotes_gpc() ? stripslashes($_POST['br']) : $_POST['br'];
//Form-Attacken verhindern (suche nach \r\n oder \n)
if(strpos($name,"\r\n")>0 || strpos($name,"\n")>0) {
DebugAttack(substr($name,strpos($name,"\r\n")));
$name="";
}
if(strpos($adresa,"\r\n")>0 || strpos($adresa,"\n")>0) {
DebugAttack(substr($adresa,strpos($adresa,"\r\n")));
$adresa="";
}
if(strpos($mjesto,"\r\n")>0 || strpos($mjesto,"\n")>0) {
DebugAttack(substr($mjesto,strpos($mjesto,"\r\n")));
$mjesto="";
}
if(strpos($email,"\r\n")>0 || strpos($email,"\n")>0) {
DebugAttack(substr($email,strpos($email,"\r\n")));
$email="";
}
if(strpos($telefon,"\r\n")>0 || strpos($telefon,"\n")>0) {
DebugAttack(substr($telefon,strpos($telefon,"\r\n")));
$telefon="";
}
if(strpos($br,"\r\n")>0 || strpos($br,"\n")>0) {
DebugAttack(substr($br,strpos($br,"\r\n")));
$br="";
}
//Message setzt sich aus allen Eingaben zusammen
$message=get_magic_quotes_gpc() ? stripslashes($_POST['message']) : $_POST['message'];
// wir setzen einen Flag, um Fehler zu registrieren
$ok=true;
//jetzt werden die Felder überprüft
if (strlen($name)<5) // Ime mora imati minimalno 5 slova
{
$err[0]=true; //Fehler merken
$ok=false; //Fehlerflag setzen
$error.='Molimo da upišete vaše ime i prezime. (minimalno 5 slova)<br>'; // Fehlertext
}
if (strlen($adresa)<3) // Adresa mora imati minimalno 3 slova
{
$err[3]=true; //Fehler merken
$ok=false; //Fehlerflag setzen
$error.='Molimo da upišete vašu adresu. (minimalno 3 slova)<br>'; // Fehlertext
}
if (strlen($mjesto)<3) // Mjesto mora imati minimalno 3 slova
{
$err[4]=true; //Fehler merken
$ok=false; //Fehlerflag setzen
$error.='Molimo da upišete vaš poštanski broj i mjesto. (minimalno 3 slova)<br>'; // Fehlertext
}
if ( (!(eregi('^[a-z0-9_\.-]+@[a-z0-9_-]+\.[a-z0-9_\.-]+$',$email))) && (strlen($email)>0) || $email=="")
{
//email-Adresse ist ungültig
$err[1]=true;
$ok=false;
$error.='Molimo da provjerite dali ste dobro upisali e-mail adresu.<br>';
}
if (strlen($telefon)<6) // Mjesto mora imati minimalno 3 slova
{
$err[5]=true; //Fehler merken
$ok=false; //Fehlerflag setzen
$error.='Molimo da upišete vaš telefonski broj ili broj mobitela. (minimalno 6 slova)<br>'; // Fehlertext
}
if (strlen($br)<1) // Mjesto mora imati minimalno 3 slova
{
$err[6]=true; //Fehler merken
$ok=false; //Fehlerflag setzen
$error.='Molimo da upišete koliko knjiga želite narućiti. <br>'; // Fehlertext
}
// ist alles ok ? dann senden
if($ok)
{
//Mail komponieren
$mailheader="From: dinamozg@gmx.de\r\nX-Mailer: PHP/" . phpversion(). "\r\nX-Sender-IP: ".$_SERVER['REMOTE_ADDR']."\r\nContent-Type: text/html; charset=ISO-8859-1;";
$message=nl2br("Ime: $name\nEmail: <a href=\"mailto:$email\">$email</a>\nAdresa: $adresa\nPošt. broj i mjesto: $mjesto\nTelefon: $telefon\nBroj knjiga: $br\n<hr>$message");
$subject="Narudzbenica za knjigu od ".date("d.m.Y");
if (@mail($empfaenger, $subject, $message, $mailheader)) {
//Alles ok, Seite neuladen (Reloadsperre)
header("Location:$pagename?success");
//falls kein Header gesendet werden kann, dann mit javascript
//echo '<script type="text/javascript">document.location.href="'.$pagename.'?success"</script>';
exit;
} else {
$error='<h3>Greška kod slanja nastala</h3>';
}
} else {
// Greška nastala
$error='<h3>Greška nastala</h3><p class="error">'.$error.'</p>';
}
}
?>
<style type="text/css">
form {width:100%;}
label {display:block;}
input, textarea {font-size:11px;}
textarea {
width:230px;
height:120px;
}
input.button {
border:1px solid #000;
margin-top:12px;
font-weight: bold;
background-color: #514839;
color: #FFFFFF;
}
.fehler {border:1px solid red;}
p.error {color:red;}
.Stil1 {
color: #FFFFFF;
font-weight: bold;
background-color: #000000;
}
#Natrag {
background-color: #514839;
padding-left: 4px;
margin-left: 2px;
margin-right: 310px;
padding-bottom: 2px;
padding-top: 2px;
font-size: 13px;
color: #FFFFFF;
font-family: Arial, Helvetica, sans-serif;
}
.Stil3 {
color: #FFFFFF;
font-size: 11px;
}
body,td,th {
color: #FFFFFF;
}
</style>
<p class="Stil1"><?php
if($error!="") echo $error;
if(isset($_GET['success'])) {
//Erfolgsnachricht ausgeben
echo '<p>Uspješno ste poslali narudžbu. U roku od 24 sata ćete biti obaviješteni o zaprimanju Vaše narudžbe</p>';
} else {
// Form ausgeben
?>
</p>
<p class="Stil1">
Ispunjavanjem ove narudžbenice možete narućiti Knjigu o kavi po cijeni 139kn/kom. U cijenu su uraćunati troškovi dostave i PDV-a (po stopi 0%). Knjiga će Vam biti dostavljena u roku od nekoliko dana s plaćanjem po uzeću.</p>
<form action="<?php echo $pagename;?>" method="post" name="Narudzbenica" class="Stil1">
<fieldset>
<legend>Ispuniti ove podatke:</legend>
<label for="name">Ime i prezime</label>
<input type="Text" value="<?php echo $name;?>" maxlength="40" size="40" name="name" <?php if(isset($err[0])) echo 'class="fehler"';?>>
<label for="adresa">Ulica i broj</label>
<input type="Text" value="<?php echo $adresa;?>" maxlength="40" size="40" name="adresa" <?php if(isset($err[3])) echo 'class="fehler"';?>>
<label for="mjesto">Poštanski broj i mjesto</label>
<input type="Text" value="<?php echo $mjesto;?>" maxlength="40" size="40" name="mjesto" <?php if(isset($err[4])) echo 'class="fehler"';?>>
<label for="email">e-mail adresa</label>
<input type="Text" value="<?php echo $email;?>" maxlength="60" size="40" name="email" <?php if(isset($err[1])) echo 'class="fehler"';?>>
<label for="telefon">Telefon ili mobitel</label>
<input type="Text" value="<?php echo $telefon;?>" maxlength="20" size="15" name="telefon" <?php if(isset($err[5])) echo 'class="fehler"';?>>
<label for="br">Broj knjiga</label>
<input type="Text" value="<?php echo $br;?>" maxlength="20" size="08" name="br" <?php if(isset($err[6])) echo 'class="fehler"';?>>
<label for="comment">Poruka/komentar (nije obavezno)</label>
<p>
<textarea cols="3" rows="3" name="message" <?php if(isset($err[2])) echo 'class="fehler"';?>><?php echo $message;?></textarea>
</p>
<p>
<input type="submit" class="button" value="Naruči" name="domail">
<input type="reset" class="button" value="Sve izbrisati" name="reset">
</p>
</fieldset>
</form>
<span class="Stil1">
<?php
}
function DebugAttack($s) {
//Hier den Pfad für die Protokolldatei einfügen, wenn kein Protokoll erwünscht ist, einfach auskommentieren
$fp=fopen("http://www.kava.hr/attack.txt","ab");
fwrite($fp,$s);
fclose($fp);
}
?>
</div>
hi...
jetzt wird es wieder angezeigt... nur... wieder nicht ganz korrekt?!
http://www.kava.hr/Knjiga_o_kavi.php
Ich hätte auch man ne blöde Frage zu dem Formmail-Script
Habs grade getestet, und es funktioniert auch tadellos. Allerdings hätte ich gerne, daß die Absenderadresse nicht festgelegt ist, sondern die im Formular angegebene E-Mail-Adresse dafür genommen wird. Ist halt angenehmer, wenn man im Mail-Programm direkt auf "antworten" klicken kann
Technisch kriege ich das schon da reingefriemelt .. ich frage mich nur gerade, ob damit dann auch der Schutz flöten geht? Oder kann ich das ohne große Bedenken machen ..?
Naja, du müsstest sicher stellen, daß da keine Header- Injection drin ist. Ich weiß Adhoc gerade nicht, ob Rizzo für die Emailadresse einen angegeben hat.
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
Öhmm .. weiß nicht .. ist es das hier?
Zusammengebaut wird der mailheader dann so:Code:if(strpos($email,"\r\n")>0 || strpos($email,"\n")>0) { DebugAttack(substr($email,strpos($email,"\r\n"))); $email="";
*kratzamkopp* ..Code:$mailheader="From: formular@domain.de\r\nX-Mailer: PHP/" . phpversion(). "\r\nX-Sender-IP: ".$_SERVER['REMOTE_ADDR']."\r\nContent-Type: text/html; charset=ISO-8859-1;";
Wieso ich? Das ist Steffen's Script.
Du kannst einfach den Header etwas erweitern, damit als Antwortadresse (wenn Du auf "Antworten" im Mail Proggi klickst) die Mail Adresse vom Formular genommen wird, ohne deswegen den ganzen Absender zu ändern.
Da die eMail Adresse vorher ja schon validiert wird, sollte das sicherheitstechnisch unproblematisch sein.
Die wichtige Zeile ist die zweite Zeile. Dort wird Name und eMail aus dem Formular übernommen, damit man direkt dorthin antworten kann.PHP-Code:$mailheader = "From: " . $woher_die_mail_kommt . "\r\n";
$mailheader .= "Reply-To: " . $name. "<" . $email . ">\r\n";
$mailheader .= "X-Mailer: PHP/" . phpversion() . "\r\n";
$mailheader .= "X-Sender-IP: " . $_SERVER['REMOTE_ADDR'] . "\r\n";
$mailheader .= "Content-Type: text/html; charset=ISO-8859-1;";
Mehr über PHP und eMail findest Du in diesem Tutorial - auf Seite 2 wird der Header erklärt.
#.Viele Grüße - Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PHP Tutorials und kostenlose Scripts gibt's bei phpBuddy.eu
Follow phpBuddy on Twitter
LTFB - anfängerfreundliche Tutorials
.
Ah, OK, an reply-to hatte ich nicht gedacht .. allerdings sieht man die Adresse dann nicht in der Mail-Übersicht, oder? .. Stell ich mir bei ein paar Mails am Tag etwas unübersichtlich vor .. alternativ könnte man dann wohl $name mit in den Betreff einbauen ...
Hallo.
Erst mal danke für das Script. Funktioniert auch soweit.
Allerdings hab ich ein kleines Problem mit dem ?success.
Ich benutz auf meiner index dieses script:
Meine Links sehen also generell so aus: index.php?p=emailPHP-Code:<?php
if($_GET['p'] == "")
{
include ("hpfiles/news.php");
}
elseif ($_GET['p'] == "geschichte") include ("hpfiles/story.php");
elseif ($_GET['p'] == "bearbeitung") include ("hpfiles/undercon.php");
elseif ($_GET['p'] == "tagebuch") include ("hpfiles/diary.php");
elseif ($_GET['p'] == "email") include ("hpfiles/mail.php");
?>
Wenn der mir jetzt nach dem Versand noch das ?success dahinter packt, bekomm ich leider nur eine leere Seite angezeigt.
Hat jemand vielleicht einen Rat für mich, was ich ändern muss?
Hab schon einiges probiert aber ich komm einfach nicht weiter...
Gruß
ich kram den Thread nochmal hoch ...
.. *seufz* .. ich habe das Script jetzt bei jemandem in die Seite gebaut (2 verschiedene Seiten, um genau zu sein). Bei mir funktioniert Alles wunderbar. Und jetzt hat mir der Seiteninhaber gesagt, daß die Testnachrichten, die er sich über die Formulare schickt, nicht ankommen. Ohne Fehlermeldung o.ä.
Ich hab also nochmal testweise die Empfängeradresse geändert und dort meine eingetragen, mir ne Testnachricht geschickt - sie war in 6 Sekunden da.
Kann es überhaupt am Formular / der Webseite liegen, wenn Nachrichten an die eine Mailadresse ankommen, an die andere aber nicht? Kann ich mir irgendwie gar nicht vorstellen ..
Kann es seinem Outlook liegen? Oder seinem Firmen-Mailserver? .. im Spam-Ordner sollen die Nachrichten jedenfalls nicht gelandet sein .. oder ist es möglich, daß es Probleme gibt, wenn die Absenderadresse identisch mit der Empfängeradresse ist, bzw. wenn diese über dieselbe Domain laufen ..? Ich nehme mal an, daß er da beim Ausfüllen des Formulars nicht drauf geachtet hat .. ok, der letzte Punkt lässt sich wohl bald ausschließen, hab gerade nochmal ne Testnachricht von "meiner Seite aus" geschickt, wenn die auch nicht ankommt, kanns ja nicht daran liegen![]()
Hallo zusammen,
ich nutze das Script von Steffen und bin super zufrieden da mit. Nur ein Problem habe ich. Ich würde gern die Anfrage / Formular eingabe an zwei Adresse weiterleiten. Leider bekomme ich das nicht hin. Kann mit vielleicht jemand helfen? Am besten wäre noch als BCC weiterleiten aber kein muß.
Habe es so versucht:
aber das klappt leider nicht.PHP-Code:// an wen geht die Mail ?
$empfaenger="ich@zuhause.de, ich 2@zuhause.de";
Danke für eure Hilfe!
lg Powerfly
PHP-Code:<?php
/*******************************************/
/* formmailer.php */
/* */
/* FORMMAILER mit Reloadsperre */
/* */
/* von Steffen Kamper */
/* erstellt für das Traumprojekt-Forum */
/* */
/*******************************************/
//erstmal Variablen definieren
$pagename="formmailer.php";
$error=$name=$email=$message="";
// an wen geht die Mail ?
$empfaenger="ich@zuhause.de";
if(isset($_POST['domail'])) {
// es wurde abschicken gedrückt, also erst mal die Felder holen
$name=get_magic_quotes_gpc() ? stripslashes($_POST['name']) : $_POST['name'];
$email=get_magic_quotes_gpc() ? stripslashes($_POST['email']) : $_POST['email'];
$message=get_magic_quotes_gpc() ? stripslashes($_POST['message']) : $_POST['message'];
//Form-Attacken verhindern
if(strpos($name,"\r\n")>0) {
DebugAttack(substr($name,strpos($name,"\r\n"));
$name="";
}
if(strpos($email,"\r\n")>0) {
DebugAttack(substr($email,strpos($email,"\r\n"));
$email="";
}
// wir setzen einen Flag, um Fehler zu registrieren
$ok=true;
//jetzt werden die Felder überprüft
if (strlen($name)<3) // der Name muss mindestens 3 Zeichen haben
{
$err[0]=true; //Fehler merken
$ok=false; //Fehlerflag setzen
$error.='Bitte geben Sie Ihren Namen an. (mindestens 3 Zeichen)<br>'; // Fehlertext
}
if ( (!(eregi('^[a-z0-9_\.-]+@[a-z0-9_-]+\.[a-z0-9_\.-]+$',$email))) && (strlen($email)>0) || $email=="")
{
//email-Adresse ist ungültig
$err[1]=true;
$ok=false;
$error.='Bitte kontrollieren Sie die angegebene E-Mail-Adresse.<br>';
}
if (strlen($message)<10) // die Message muss mindestens 10 Zeichen haben
{
$err[2]=true; //Fehler merken
$ok=false; //Fehlerflag setzen
$error.='Bitte geben Sie eine Message von mindestens 10 Zeichen ein.<br>'; // Fehlertext
}
// ist alles ok ? dann senden
if($ok)
{
//Mail komponieren
$mailheader="From: $name <$email>\r\nX-Mailer: PHP/" . phpversion(). "\r\nX-Sender-IP: ".$_SERVER['REMOTE_ADDR']."\r\nContent-Type: text/plain; charset=ISO-8859-1;";
$subject="Webseiten-Nachricht von $name";
if (@mail($empfaenger, $subject, $message, $mailheader)) {
//Alles ok, Seite neuladen (Reloadsperre)
header("Location:$pagename?success");
} else {
$error='<h3>Fehler beim Mailen aufgetreten</h3>';
}
} else {
// Fehler ausgeben
$error='<h3>Fehler bei der Eingabe</h3><p class="error">'.$error.'</p>';
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Form-Mailer</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
body {background:#fff;}
form {width:360px;}
label {display:block;}
input, textarea {font-size:11px;}
textarea {width:360px;height:240px;}
input.button {border:1px solid #000;background:#ffcc00;margin-top:12px;}
.fehler {border:1px solid red;}
p.error {color:red;}
</style>
</head>
<body>
<h1>Form-Mailer mit Reloadsperre</h1>
<?php
if($error!="") echo $error;
if(isset($_GET['success'])) {
//Erfolgsnachricht ausgeben
echo '<p>Vielen Dank für Ihre Nachricht. Sie wurde erfolgreich verschickt.</p>';
} else {
// Form ausgeben
?>
<form action="<?php echo $pagename;?>" method="post" name="formmailer">
<fieldset><legend>Mail schreiben</legend>
<label for="name">Name</label>
<input type="Text" value="<?php echo $name;?>" maxlength="60" size="50" name="name" <?php if(isset($err[0])) echo 'class="fehler"';?>>
<label for="email">Email-Adresse</label>
<input type="Text" value="<?php echo $email;?>" maxlength="80" size="50" name="email" <?php if(isset($err[1])) echo 'class="fehler"';?>>
<label for="comment">Message</label>
<textarea cols="10" rows="10" name="message" <?php if(isset($err[2])) echo 'class="fehler"';?>><?php echo $message;?></textarea>
<input type="reset" class="button" value="zurücksetzen" name="reset">
<input type="submit" class="button" value="abschicken" name="domail">
</fieldset>
</form>
<?php
}
function DebugAttack($s) {
//Hier den Pfad für die Protokolldatei einfügen, wenn kein Protokoll erwünscht ist, einfach auskommentieren
$fp=fopen("/tmp/attack.txt","ab");
fwrite($fp,$s);
fclose($fp);
}
?>
</body>
</html>
Hilft Dir das weiter?
http://www.selfphp.de/praxisbuch/pra...e=286&group=50
Wie kann man dem Sender einer Nachricht an seine Email-Adresse eine Kopie seiner Anfrage senden lassen?
Gruß Torsten
Meine Bilder im Internet: See the world through my eyes
Aber Vorsicht: Meine Bilder können nicht sprechen
Ich biete keinen privaten Support an!
Fragen oder Probleme? Nur keine Scheu verfasse einen Beitrag
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)