CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
10.09.2008, 16:37:48
|
Anfänger
|
|
Registriert seit: Sep 2008
Alter: 47
Beiträge: 3
|
|
Formular mit Check als e-mail versenden
Folgendes Formular versendet die eingegeben Daten als e-mail. Bei fehlerhafter bzw. unvollständiger Eingabe erzeugt PHP eine Fehlermeldung, z.B. Bitte geben Sie ihren Vornamen an.
Problem: Die bisher eingegeben Daten müssen nochmal eingegeben werden. Wie kann ich eine Fehlermeldung erzeugen, bei der die schon eingebenen Daten bestehen bleiben?
<?php
if (strlen($_POST['sendmail'])) {
$errorMsg = '';
if (!strlen(trim($_POST['vorname']))) {
$errorMsg = 'Bitte geben Sie Ihren Vornamen an.<br />';
}
$errorMsg = '';
if (!strlen(trim($_POST['name']))) {
$errorMsg = 'Bitte geben Sie Ihren Namen an.<br />';
}
$errorMsg = '';
if (!strlen(trim($_POST['firma']))) {
$errorMsg = 'Bitte geben Sie Ihren Firmennamen an.<br />';
}
$regex = '/^[A-z0-9][\w.-]*@[A-z0-9][\w\-\.]+\.[A-z0-9]{2,6}$/';
if (!preg_match($regex, trim($_POST['email']))) {
$errorMsg .= 'Bitte geben Sie Ihre gültige E-Mail Adresse an.<br />';
}
if (!strlen($errorMsg)) {
$boundary='--' . md5( uniqid("myboundary") );
$sep=chr(13).chr(10);
$disposition="inline";
if(eregi("MIME-Version: ",$_POST['vorname'].$_POST['name'].$_POST['firma'].$_POST['email'].$_POST['mailtext'])){die('Get out, spammer.');}
$to="miss.britta@web.de";
$cc="missbritta@hotmail.com";
$subject = "E-Mail von ".trim($_POST['vorname'])." ".trim($_POST['name']).", Firma ".trim($_POST['firma'])." am ".date("d.m.Y",mktime());
$header ="From: ".trim($_POST['vorname'])." ".trim($_POST['name'])." <".trim($_POST['email']).">\nX-Priority: 3 (Normal)\nCC: $cc\n";
$header.="Mime-Version: 1.0\nContent-Type: multipart/mixed;\n boundary=\"$boundary\"\n";
$header.="Content-Transfer-Encoding: 8bit\nX-Mailer: Php/libMailv1.3\n";
// in der naechsten Zeile wird der inhalt der Textmessage bestimmt
$mailtext = wordwrap(implode("\r\n", preg_split("/\r?\n/", trim($_POST['mailtext'])."\r\n"."\r\nvon Firma ".trim($_POST['firma']).", Ansprechpartner: ".trim($_POST['vorname'])." ".trim($_POST['name']) )),72);
$message .="This is a multi-part message in MIME format.\n--$boundary\n";
$message .= "Content-Type: text/plain; charset=iso-8859-1\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n" . $mailtext ."\n";
foreach($_FILES['attachment']['error'] as $key => $error) {
if($error == UPLOAD_ERR_OK) {
$filename = $_FILES['attachment']['name'][$key];
$ext = strtolower(substr(strrchr($filename, "."), 1));
if (!in_array($ext, array('jpg', 'gif', 'jpeg','zip','tar'))) {
$errorMsg.="Anhang $filename konnte nicht versendet werden - falsches Dateiformat ($ext)<br />";
continue;
}
$filetype = $_FILES['attachment']['type'][$key];
$message .="--$boundary\nContent-type: $filetype ;\n name=\"$filename\"\n";
$message .="Content-Transfer-Encoding: base64\nContent-Disposition: $disposition;\n filename=\"$filename\"\n";
$linesz= filesize( $_FILES['attachment']['tmp_name'][$key])+1;
$fp= fopen( $_FILES['attachment']['tmp_name'][$key], 'r' );
$content = chunk_split(base64_encode(fread( $fp, $linesz)));
fclose($fp);
$message .= $sep.$content;
}
}
$sent = mail($to, $subject, $message, $header);
if ($sent) {
$errorMsg .= "Ihre E-Mail wurde erfolgreich versandt.<br />";
}
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="en"><!-- InstanceBegin template="/Templates/pixeledits_template_neu.dwt" codeOutsideHTMLIsLocked="false" -->
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?=$errorMsg?>
<form action="" method="post" enctype="multipart/form-data">
Schicken Sie uns einfach ihre Nachricht und Datei über dieses Formular!<br><br>
<fieldset>
<label for="firma">Firma:</label>
<input id="firma" maxlength="30" name="firma" size="20"><br>
Ansprechpartner:<br>
<label for="vorname">Vorname:</label>
<input type="text" id="vorname" name="vorname" maxlength="30" size="13" />
<label for="name">Name:</label>
<input type="text" id="name" name="name" maxlength="30" size="14" /><br />
<label for="email">E-Mail:</label>
<input type="text" id="email" name="email" maxlength="40" size="20" /><br />
<label for="mailtext">Ihre Nachricht:</label><br />
<textarea id="mailtext" name="mailtext" rows="10" cols="35"></textarea><br />
<label>Anhang 1:<input type="file" name="attachment[0]" size="20" /></label><br />
<label>Anhang 2:<input type="file" name="attachment[1]" size="20" /></label><br />
<input type="submit" name="sendmail" value="Senden" />
</fieldset>
</form>
</body>
</html>
|
10.09.2008, 18:06:13
|
|
Anfänger
|
|
Registriert seit: Apr 2008
Alter: 57
Beiträge: 92
|
|
AW: Formular mit Check als e-mail versenden
Ich benutze ein Formular und sende dieses an eine extra php-Datei die die Eingaben prüft. Im Falle eines Fehlers kommt
PHP-Code:
if($anrede=="") {
die("<P STYLE='text-align: center;'> </P>
<H4>Bitte Anrede auswählen!</H4><br>
<a href=\"javascript:history.go(-1);\">Zurück</a>
<P STYLE='text-align: center;'> </P>
$copy");
}
Also ein Link über javascript zum zurückgehen. Damit bleiben alle Angaben, bis auf Passwortfelder, erhalten.
Gruß Oliver
PS. Benutze die PHP-Tags sonst kriegste hier Ärger
__________________
Ceterum censeo Carthaginem esse delendam
|
10.09.2008, 22:27:59
|
SELFPHP Profi
|
|
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
|
|
AW: Formular mit Check als e-mail versenden
Zitat:
Zitat von miss.britta
Wie kann ich eine Fehlermeldung erzeugen, bei der die schon eingebenen Daten bestehen bleiben?
|
indem du die POST-daten per echo wieder ausgibst; zb:
PHP-Code:
echo "<input type='text' name='name' value='" . $_POST[ 'name' ] . "'>";
die POST-daten müssen selbstverständlich validiert / escaped werden; bspw. per htmlentities( ).
Zitat:
Zitat von Oskar
Benutze die PHP-Tags sonst kriegste hier Ärger
|
so ist es. kann aber auch passieren, dass man bis zum st. nimmerleinstag auf eine antwort warten kann, da niemand lust verspürt, sich das unformatierte geschmiere reinzuziehen...
cx
|
11.09.2008, 00:06:44
|
Anfänger
|
|
Registriert seit: Sep 2008
Alter: 47
Beiträge: 3
|
|
AW: Formular mit Check als e-mail versenden
1. Sorry - bin sowohl php-Anfänger (seit 24h), als auch neu hier und bemühe mich um Besserung.
2. Die echo - Variante funktioniert super und find ich persönlich besser als die javascript - Variante.
Danke für die schnelle Antwort trotz des unformatierten Zeugs.
|
11.09.2008, 11:21:10
|
SELFPHP Profi
|
|
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
|
|
AW: Formular mit Check als e-mail versenden
Zitat:
Zitat von miss.britta
Sorry - bin sowohl php-Anfänger (seit 24h), als auch neu hier und bemühe mich um Besserung.
|
klingt gut .-p hier einige resourcen, die man sich (nicht nur als anfänger) zu gemüte ziehen sollte:
1. ein wenig veraltet (php4) aber sehr gut geschrieben - ein quasi-standard: http://tut.php-q.net/
2. witzig geschrieben, aktuell und nicht nur für php relevant: http://www.peterkropff.de/
3. jede menge FAQs: http://www.php-faq.de/
Zitat:
Zitat von miss.britta
Die echo - Variante funktioniert super und find ich persönlich besser als die javascript - Variante.
|
die js-methode ist auch nur eine krücke und hat nichts mit "sauberer" programmierung zu tun. wie gesagt, vergiss nicht, die eingaben zu escapen; eine minimalistische lösung könnte so aussehen:
PHP-Code:
echo "<input type='text' name='name' value='" . htmlentities( $_POST[ 'name' ] , ENT_QUOTES ) . "'>";
so hast du zumindest das problem xss http://de.wikipedia.org/wiki/Cross-Site-Scripting erschlagen.
cx
|
13.09.2008, 12:51:45
|
Anfänger
|
|
Registriert seit: Sep 2008
Alter: 47
Beiträge: 3
|
|
AW: Formular mit Check als e-mail versenden
Zitat:
Zitat von cortex
hier einige resourcen, die man sich (nicht nur als anfänger) zu gemüte ziehen sollte:
1. ein wenig veraltet (php4) aber sehr gut geschrieben - ein quasi-standard: http://tut.php-q.net/
|
wurde aktualisiert auf PHP 5 http://tut.php-q.net/de/
sehr gut geschrieben, leicht verständlich
Danke für die Tipps! Langsam nimmt mein Formular Form an.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:26:07 Uhr.
|