habe dann weiter unten gelesen man soll $GLOBALS(name); verwenden
Das hast du falsch verstanden, $GLOBALS wird da innerhalb einer Funktion benutzt. Aber eine goldene Regel lautet: Finger weg von Globals
habe dann weiter unten gelesen man soll $GLOBALS(name); verwenden
Das hast du falsch verstanden, $GLOBALS wird da innerhalb einer Funktion benutzt. Aber eine goldene Regel lautet: Finger weg von Globals
Mir ist eh aufgefallen das es nix bringt, denn selbst wenn die Felder nach Absenden leer werden, und man neu lädt kommt trotzdem gleiche mail nochmal an. Muss wohl irgendwo noch gespeichert sein. Hätte mal gleich auf dich hören sollen
Aber als ich da nach gelesen habe: php mehrfaches absenden formular verhindern in Google steht überall was mit DB ich benutze ja keine..
Die einfachste Lösung ist das Weiterleiten auf eine andere Seite. Wenn das Script fehlerfrei durchlaufen ist und die Mails raus sind, einfach auf eine Seite, z.B. thx.html weiterleiten, in der halt nur
<p>Ihre Nachricht wurde erfolgreich versandt!</p>
steht. Aber wenn du das machen willst, musst du noch etwas am Script umbauen. Der HTML-Teil am Anfang wird dir Probleme machen, verschiebe diesen hinter den PHP-Teil. Ansonsten gibt's nämlich die schöne Meldung "headers already sent"
ZitatAber wenn du das machen willst, musst du noch etwas am Script umbauen. Der HTML-Teil am Anfang wird dir Probleme machen, verschiebe diesen hinter den PHP-Teil. Ansonsten gibt's nämlich die schöne Meldung "headers already sent"
ah das habe ich schon versucht mit header('Location: index.php') allerdings auf selbe Seite. Muss mal probieren, schreib dann wenns geklappt hat.. Danke lieber unbekannter
Wenigstens verstehe ich deine Erklärungen was ich sonst oft nicht raff, kapier ich auf einmal^^
ah das habe ich schon versucht mit header('Location: index.php') allerdings auf selbe Seite.
Müsste auch gehen
Gib mir 5-8Minuten ich schaff das;-)
mmmh zum Glück habe ich es in einem anderen Ordner gemacht, damit das funktionierende Orginal noch da ist.
So sieht mein Code jetzt aus, aber die Felder werden nicht mehr leer und die Mail kommt nicht mehr an? Zu sehen unter Kontakt1
<?php
error_reporting(E_ALL); ini_set("display_errors", true);
$timestamp_fuer_wochentag = time();
$wochentage = array('Monday' => 'Montag,', 'Tuesday' => 'Dienstag,', 'Wednesday' => 'Mittwoch,', 'Thursday' => 'Donnerstag,', 'Friday' => 'Freitag,','Saturday' => 'Samstag', 'Sunday' => 'Sonntag,');
$tag = strtr(date("l",$timestamp_fuer_wochentag),$wochentage);
$fehler = false; // wird auf true gesetzt wenn Fehler
$name = $email = $nachricht = ''; // Variablen initialisieren, Kurzschreibweise
$fehler_name = $fehler_email = $fehler_nachricht = ''; // Variablen initialisieren, Kurzschreibweise
$email_kopie = $gesendet = $nicht_gesendet = '';
if(isset($_POST['senden']))
{
// wenn senden gedrückt weise Inhalte Variablen zu
// entferne SGML Tags und Leerzeichen
$name = strip_tags(trim($_POST['name']));
$email = strip_tags(trim($_POST['email']));
$nachricht = strip_tags(trim($_POST['nachricht']));
if(empty($name)) // wenn Name leer
{
$fehler_name = 'leer';
$fehler = true;
}
if(!empty($name) && preg_match('#\d#', $name))
{
$fehler_name = 'Ungültig';
$fehler = true;
}
if(empty($email)) // wenn Email leer
{
$fehler_email = 'leer';
$fehler = true;
}
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) // wenn keine gültige Mailadresse
{
$fehler_email = 'Ungültig!';
$fehler = true;
}
if(empty($nachricht)) // wenn Nachricht leer
{
$fehler_nachricht = 'leer';
$fehler = true;
}
if($fehler === false) // wenn kein Fehler dann..
{
$empfaenger = 'email@email.de';
$betreff = 'Nachricht von Kontaktformular http://domain.de';
$mailkopf = 'From: ' .$email. "\r\n";
if(mail($empfaenger,$betreff,$nachricht,$mailkopf))
{
if(isset($_POST['email_kopie']) && $_POST['email_kopie'] == 'kopie')
{
$betreff = 'Ihre Nachricht an http://domain.de';
mail($email,$betreff,$nachricht,$mailkopf);
header('location: index.php');
}
$gesendet = '<p>Ihre Nachricht wurde erfolgreich versandt!</p>';
}
else
{
$nicht_gesendet = '<p>Ein Fehler ist aufgetreten</p>';
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Kontakt - Senden Sie uns eine Nachricht</title>
<meta charset="windows-1252">
<meta name="description" content="">
<meta name="keywords" content="">
<link href="design.css" type="text/css" rel="stylesheet">
<link href="bilder/favicon.ico" type="image/x-icon" rel="shortcut icon">
</head>
<body>
<form action="index.php" method="post" id="kontaktform">
<p id="datum"><?php echo $tag . ' den ' . date('d.m.Y'); ?></p>
<p>Name*:<?php echo $fehler_name; ?><br /><input type="text" name="name" value="<?php echo $name; ?>" /></p>
<p>Email*:<?php echo $fehler_email; ?><br /><input type="text" name="email" value="<?php echo $email; ?>" /></p>
<p>Ihre Nachricht*:<?php echo $fehler_nachricht; ?><br /><textarea name="nachricht" rows="15" cols="32"><?php echo $nachricht; ?></textarea></p>
<p id="mailkopie"><input type="checkbox" name="email_kopie" value="kopie" /> Möchten Sie eine Kopie dieser E-Mail erhalten?</p>
<p><input type="submit" name="senden" value="Absenden" id="sendebutton" /></p>
<p id="pflichtfelder">*Pflichtfelder</p>
<p><?php echo $gesendet; ?></p>
<p><?php echo $nicht_gesendet; ?></p>
</form>
</body>
</html>
Alles anzeigen
Gib mir 5-8Minuten
Was? Solange? 1 Minute und fetisch
fertisch;-) siehe #46 Jop teilweise denn jetzt kommt iweder keine Mail mehr an.. Zu früh gefreut!
Nachtrag: Mist jetzt funktionieren beide nicht mehr, hab wohl irgendwas überschrieben. zum Glück habe ich heute mittag ein Backup erstellt...puuh bin ich froh
Mist selbst mein Backup von heute mittag wo funktioniert hat, geht jetzt nicht mehr. Nix geändert!!!
Weitergeleitet, ja weiß nicht. Ist ja selbe Datei(index.php), werde das nochmal umbauen kurz hoffe ich. Momentan habe ich keins mehr das funktioniert.
habe es jetzt so:
<?php
error_reporting(E_ALL); ini_set("display_errors", true);
$timestamp_fuer_wochentag = time();
$wochentage = array('Monday' => 'Montag,', 'Tuesday' => 'Dienstag,', 'Wednesday' => 'Mittwoch,', 'Thursday' => 'Donnerstag,', 'Friday' => 'Freitag,','Saturday' => 'Samstag', 'Sunday' => 'Sonntag,');
$tag = strtr(date("l",$timestamp_fuer_wochentag),$wochentage);
$fehler = false;
$name = $email = $nachricht = '';
$fehler_name = $fehler_email = $fehler_nachricht = '';
$email_kopie = $gesendet = $nicht_gesendet = '';
if(isset($_POST['senden']))
{
$name = strip_tags(trim($_POST['name']));
$email = strip_tags(trim($_POST['email']));
$nachricht = strip_tags(trim($_POST['nachricht']));
if(empty($name)) // wenn Name leer
{
$fehler_name = 'leer';
$fehler = true;
}
if(!empty($name) && preg_match('#\d#', $name))
{
$fehler_name = 'Ungültig';
$fehler = true;
}
if(empty($email)) // wenn Email leer
{
$fehler_email = 'leer';
$fehler = true;
}
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
$fehler_email = 'Ungültig!';
$fehler = true;
}
if(empty($nachricht))
{
$fehler_nachricht = 'leer';
$fehler = true;
}
if($fehler === false)
{
$empfaenger = 'email@email.de';
$betreff = 'Nachricht von Kontaktformular http://domain.de';
$mailkopf = 'From: ' .$email. "\r\n";
if(mail($empfaenger,$betreff,$nachricht,$mailkopf))
{
if(isset($_POST['email_kopie']) && $_POST['email_kopie'] == 'kopie')
{
$betreff = 'Ihre Nachricht an http://domain.de';
mail($email,$betreff,$nachricht,$mailkopf);
header("Location: http://" . $_SERVER['HTTP_HOST'] . $_SERVER['index.php'];
exit;
}
$gesendet = '<p>Ihre Nachricht wurde erfolgreich versandt!</p>';
}
else
{
$nicht_gesendet = '<p>Ein Fehler ist aufgetreten</p>';
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Kontakt - Senden Sie uns eine Nachricht</title>
<meta charset="windows-1252">
<meta name="description" content="">
<meta name="keywords" content="">
<link href="design.css" type="text/css" rel="stylesheet">
<link href="bilder/favicon.ico" type="image/x-icon" rel="shortcut icon">
</head>
<body>
<form action="index.php" method="post" id="kontaktform">
<p id="datum"><?php echo $tag . ' den ' . date('d.m.Y'); ?></p>
<p>Name*:<?php echo $fehler_name; ?><br /><input type="text" name="name" value="<?php echo $name; ?>" /></p>
<p>Email*:<?php echo $fehler_email; ?><br /><input type="text" name="email" value="<?php echo $email; ?>" /></p>
<p>Ihre Nachricht*:<?php echo $fehler_nachricht; ?><br /><textarea name="nachricht" rows="15" cols="32"><?php echo $nachricht; ?></textarea></p>
<p id="mailkopie"><input type="checkbox" name="email_kopie" value="kopie" /> Möchten Sie eine Kopie dieser E-Mail erhalten?</p>
<p><input type="submit" name="senden" value="Absenden" id="sendebutton" /></p>
<p id="pflichtfelder">*Pflichtfelder</p>
<p><?php echo $gesendet; ?></p>
<p><?php echo $nicht_gesendet; ?></p>
</form>
</body>
</html>
Alles anzeigen
ZitatParse error: syntax error, unexpected ';' in /users/isi/www/kontakt1/index.php on line 59
Bitte schimpf nicht wieder, kann keinen Fehler entdecken:? aber wenn ich zeile 59 auskommentiere dann gehts wieder
1. header("Location: http://" . $_SERVER['HTTP_HOST'] . $_SERVER['index.php'];
habe ich nie geschrieben
2. header("Location: http://" . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'] . "?mail=send");
Da fehlte die schließende Klammer
Jetzt kommt zwar die Mail wieder an, aber: Es kann trotzdem durch drücken von F5 erneut versenden werden. Habe heute zwar derbe viel gelernt in der Praxis, aber wird wohl noch einige Zeit dauern bis ich ganz dahintersteige.
<?php
error_reporting(E_ALL); ini_set("display_errors", true);
$timestamp_fuer_wochentag = time();
$wochentage = array('Monday' => 'Montag,', 'Tuesday' => 'Dienstag,', 'Wednesday' => 'Mittwoch,', 'Thursday' => 'Donnerstag,', 'Friday' => 'Freitag,','Saturday' => 'Samstag', 'Sunday' => 'Sonntag,');
$tag = strtr(date("l",$timestamp_fuer_wochentag),$wochentage);
$fehler = false;
$name = $email = $nachricht = '';
$fehler_name = $fehler_email = $fehler_nachricht = '';
$email_kopie = $gesendet = $nicht_gesendet = '';
if(isset($_POST['senden']))
{
$name = strip_tags(trim($_POST['name']));
$email = strip_tags(trim($_POST['email']));
$nachricht = strip_tags(trim($_POST['nachricht']));
if(empty($name)) // wenn Name leer
{
$fehler_name = 'leer';
$fehler = true;
}
if(!empty($name) && preg_match('#\d#', $name))
{
$fehler_name = 'Ungültig';
$fehler = true;
}
if(empty($email)) // wenn Email leer
{
$fehler_email = 'leer';
$fehler = true;
}
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
$fehler_email = 'Ungültig!';
$fehler = true;
}
if(empty($nachricht))
{
$fehler_nachricht = 'leer';
$fehler = true;
}
if($fehler === false)
{
$empfaenger = 'email@email.de';
$betreff = 'Nachricht von Kontaktformular http://domain.de';
$mailkopf = 'From: ' .$email. "\r\n";
if(mail($empfaenger,$betreff,$nachricht,$mailkopf))
{
if(isset($_POST['email_kopie']) && $_POST['email_kopie'] == 'kopie')
{
$betreff = 'Ihre Nachricht an http://domain.de';
mail($email,$betreff,$nachricht,$mailkopf);
header("Location: http://" . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME']);
exit;
}
$gesendet = '<p>Ihre Nachricht wurde erfolgreich versandt!</p>';
}
else
{
$nicht_gesendet = '<p>Ein Fehler ist aufgetreten</p>';
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Kontakt - Senden Sie uns eine Nachricht</title>
<meta charset="windows-1252">
<meta name="description" content="">
<meta name="keywords" content="">
<link href="design.css" type="text/css" rel="stylesheet">
<link href="bilder/favicon.ico" type="image/x-icon" rel="shortcut icon">
</head>
<body>
<form action="index.php" method="post" id="kontaktform">
<p id="datum"><?php echo $tag . ' den ' . date('d.m.Y'); ?></p>
<p>Name*:<?php echo $fehler_name; ?><br /><input type="text" name="name" value="<?php echo $name; ?>" /></p>
<p>Email*:<?php echo $fehler_email; ?><br /><input type="text" name="email" value="<?php echo $email; ?>" /></p>
<p>Ihre Nachricht*:<?php echo $fehler_nachricht; ?><br /><textarea name="nachricht" rows="15" cols="32"><?php echo $nachricht; ?></textarea></p>
<p id="mailkopie"><input type="checkbox" name="email_kopie" value="kopie" /> Möchten Sie eine Kopie dieser E-Mail erhalten?</p>
<p><input type="submit" name="senden" value="Absenden" id="sendebutton" /></p>
<p id="pflichtfelder">*Pflichtfelder</p>
<p><?php echo $gesendet; ?></p>
<p><?php echo $nicht_gesendet; ?></p>
</form>
</body>
</html>
Alles anzeigen
Ich sehe gerade, dass so ja nur weitergeleitet wird, wenn eine Kopie geschickt wird, deshalb die header und exit-Anweisung statt
$gesendet = '<p>Ihre Nachricht wurde erfolgreich versandt!</p>';
schreiben, denn dieseZeile brauchst du dann ja eh nicht mehr. Außerdem habe ich die header-Zeile noch mal verändert, richtig hinsehen musst du schon.
<?php
error_reporting(E_ALL); ini_set("display_errors", true);
$timestamp_fuer_wochentag = time();
$wochentage = array('Monday' => 'Montag,', 'Tuesday' => 'Dienstag,', 'Wednesday' => 'Mittwoch,', 'Thursday' => 'Donnerstag,', 'Friday' => 'Freitag,','Saturday' => 'Samstag', 'Sunday' => 'Sonntag,');
$tag = strtr(date("l",$timestamp_fuer_wochentag),$wochentage);
$fehler = false;
$name = $email = $nachricht = '';
$fehler_name = $fehler_email = $fehler_nachricht = '';
$email_kopie = $gesendet = $nicht_gesendet = '';
if(isset($_POST['senden']))
{
$name = strip_tags(trim($_POST['name']));
$email = strip_tags(trim($_POST['email']));
$nachricht = strip_tags(trim($_POST['nachricht']));
if(empty($name)) // wenn Name leer
{
$fehler_name = 'leer';
$fehler = true;
}
if(!empty($name) && preg_match('#\d#', $name))
{
$fehler_name = 'Ungültig';
$fehler = true;
}
if(empty($email)) // wenn Email leer
{
$fehler_email = 'leer';
$fehler = true;
}
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
$fehler_email = 'Ungültig!';
$fehler = true;
}
if(empty($nachricht))
{
$fehler_nachricht = 'leer';
$fehler = true;
}
if($fehler === false)
{
$empfaenger = 'mail_22111@web.de';
$betreff = 'Nachricht von Kontaktformular http://domain.de';
$mailkopf = 'From: ' .$email. "\r\n";
if(mail($empfaenger,$betreff,$nachricht,$mailkopf))
{
if(isset($_POST['email_kopie']) && $_POST['email_kopie'] == 'kopie')
{
$betreff = 'Ihre Nachricht an http://domain.de';
mail($email,$betreff,$nachricht,$mailkopf);
}
$gesendet = '<p>Ihre Nachricht wurde erfolgreich versandt!</p>';
header("Location: http://" . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'] . "?mail=send");
exit;
}
else
{
$nicht_gesendet = '<p>Ein Fehler ist aufgetreten</p>';
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Kontakt - Senden Sie uns eine Nachricht</title>
<meta charset="windows-1252">
<meta name="description" content="">
<meta name="keywords" content="">
<link href="design.css" type="text/css" rel="stylesheet">
<link href="bilder/favicon.ico" type="image/x-icon" rel="shortcut icon">
</head>
<body>
<form action="index.php" method="post" id="kontaktform">
<p id="datum"><?php echo $tag . ' den ' . date('d.m.Y'); ?></p>
<p>Name*:<?php echo $fehler_name; ?><br /><input type="text" name="name" value="<?php echo $name; ?>" /></p>
<p>Email*:<?php echo $fehler_email; ?><br /><input type="text" name="email" value="<?php echo $email; ?>" /></p>
<p>Ihre Nachricht*:<?php echo $fehler_nachricht; ?><br /><textarea name="nachricht" rows="15" cols="32"><?php echo $nachricht; ?></textarea></p>
<p id="mailkopie"><input type="checkbox" name="email_kopie" value="kopie" /> Möchten Sie eine Kopie dieser E-Mail erhalten?</p>
<p><input type="submit" name="senden" value="Absenden" id="sendebutton" /></p>
<p id="pflichtfelder">*Pflichtfelder</p>
<p><?php echo $gesendet; ?></p>
<p><?php echo $nicht_gesendet; ?></p>
</form>
</body>
</html>
Alles anzeigen
Jetzt werden die Felder nach Senden leer, es kommt aber keine email an. Und der Benutzer bekommt auch die Meldung nicht Nachricht wurde versandt.
http://isi.square7.ch/kontakt/
Ich glaub stell mich auch bissle doof an, kann das sein
Steht denn nach dem Absenden in der Adresszeile des Browsers index.php?mail=send
Jop(http://isi.square7.ch/kontakt/index.php?mail=send), aber es kommt keine Meldung Nachricht wurde versandt und die Mail kommt leider leider auch nicht mehr an.
Sorry doch jetzt kommen sie wieder an, jetzt nur noch die nachricht für den Benutzer. Aber hab in dem Teil ja nix geändert
if($fehler === false)
{
$empfaenger = 'emailadresse@mail.de';
$betreff = 'Nachricht von Kontaktformular http://domain.de';
$mailkopf = 'From: ' .$email. "\r\n";
if(mail($empfaenger,$betreff,$nachricht,$mailkopf))
{
if(isset($_POST['email_kopie']) && $_POST['email_kopie'] == 'kopie')
{
$betreff = 'Ihre Nachricht an http://domain.de';
mail($email,$betreff,$nachricht,$mailkopf);
}
$gesendet = '<p>Ihre Nachricht wurde erfolgreich versandt!</p>';
header("Location: http://" . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'] . "?mail=send");
exit;
}
else
{
$nicht_gesendet = '<p>Ein Fehler ist aufgetreten</p>';
}
}
}
Alles anzeigen
Mit dem Ankommen der Mails wäre ich sowieso vorsichtig. Manche Hoster blocken mehrfachen Mail-Versand per Script. Da kann es durchaus mal passieren, das eine Mail garnicht oder erst verspätet ankommt. Auch da kann der phpMailer helfen, wenn man Mails per SMTP versendet.
Und nochwas, du benutzt einen HTML5-Doctype, darauf würde ich aktuell noch verzichtem und besser einen HTML4-Doctype nehmen: http://de.selfhtml.org/html/allgemein…htm#dokumenttyp