Seite 4 von 7 ErsteErste 1234567 LetzteLetzte
Ergebnis 46 bis 60 von 94

Thema: [Workshop] Formmailer

  1. #46
    TP-Veteran Avatar von Daniel N.
    Registriert seit
    Sep 2002
    Ort
    Schweiz
    Beiträge
    1.307
    Zitat Zitat von Strogij
    Du bist ja schnell...
    danke??

    Passt auf, ich bin überheblich

    http://orangetree.ch-gnu.ath.cx

  2. #47
    Guest
    Registriert seit
    Aug 2002
    Beiträge
    2.233
    Ich meinte damit, kaum angefangen, schon aufgegeben...

  3. #48
    TP-Veteran Avatar von Daniel N.
    Registriert seit
    Sep 2002
    Ort
    Schweiz
    Beiträge
    1.307
    wieso aufgegeben? habs doch gelöst hach ich glaub ich versteh dich einfach ned richtig

    Passt auf, ich bin überheblich

    http://orangetree.ch-gnu.ath.cx

  4. #49
    TP-Veteran Avatar von Daniel N.
    Registriert seit
    Sep 2002
    Ort
    Schweiz
    Beiträge
    1.307
    aber jetzt trotzdem noch eine frage: ich habe in meinem formular ein select-auswahlmenü, sowie eine checkbox. wenn nun die checkbox aktiviert ist, muss aus dem select-menü nichts mehr zwingend ausgewählt werden. ansonsten aber schon. wie realisiere ich das am besten mit einer funktion? (damit die dann auch ohne was anzupassen wieder verwendet werden kann.)

    ich möchte halt das ganze über die parameter beim aufruf der funktion lösen. hab mal einen lösungsansatz gemacht. funktioniert aber nicht und scheint mir auch sonst nicht ganz koscher

    code:
    PHP-Code:
    function check_form(&$field$chk$chk2)
    {
    global 
    $msg;
    $msg NULL;
        if(empty(
    $field)): $msg "moep"; endif;
            if(isset(
    $chk) && $chk2 != "0"): $msg NULL;
                else: 
    $msg "uaha";
            endif;
    // aufruf
    $chk $_POST['checkbox'];
                    
    $chk2 $_POST['select-menü'];
                   
    check_form($_POST['name'], $_POST['email'], $chk$chk2); 
    irgendwelche vorschläge??

    Passt auf, ich bin überheblich

    http://orangetree.ch-gnu.ath.cx

  5. #50
    Guest
    Registriert seit
    Aug 2002
    Beiträge
    2.233
    wieso aufgegeben? habs doch gelöst hach ich glaub ich versteh dich einfach ned richtig
    Ach, sorry habe gelöscht und nicht gelöst gelesen.

  6. #51
    TP-Veteran Avatar von Daniel N.
    Registriert seit
    Sep 2002
    Ort
    Schweiz
    Beiträge
    1.307
    trotzdem noch lösungsvorschläge?!

    Passt auf, ich bin überheblich

    http://orangetree.ch-gnu.ath.cx

  7. #52
    TP-Newbie
    Registriert seit
    Jan 2005
    Beiträge
    3

    Arrow 2. Fehlermeldung

    Hi erstamal,
    vielen dank es funktioniert so wie ich es mir dachte...
    allerdings gibt es nur ein winziges problemchen.......
    und zwar ist meiner "form" eine telefonnumer eingegeben werden und eine adresse. so dafür muss man aber . , - / und so was eingeben können. ich will das bei den beiden sachen die 2. fehlermeldung weg ist aber bei den anderen noch da. was kann ich machen (alleiniges löschen von diesen fehlermeldung bringt nix weil dann gibts nen fehler in der mailer.php)
    mfg danke im voraus
    mami

  8. #53
    Guest
    Registriert seit
    Aug 2002
    Beiträge
    2.233
    Fehlermeldung löschen soll das Problem beheben?
    Naja du solltest einfach für das input-Feld für die Telefonnummer und Adresse nicht die Funktion pruefe_name() oder pruefe_email() aufrufen.

  9. #54
    TP-Newbie
    Registriert seit
    Jan 2005
    Beiträge
    3
    kann ich nicht einfach in pruefe name einen punkt und ein / einfügen????

  10. #55
    Guest
    Registriert seit
    Aug 2002
    Beiträge
    2.233
    ??? Verstehe ich jetzt nicht, was du meinst; wie gut kannst du mit PHP umgehen? Und was hast du verändert?

  11. #56
    TP-Newbie
    Registriert seit
    Jan 2005
    Beiträge
    3
    naja php nich so viel.... ich hab bis jetzt nur ein paar mehr felder eingefügt so mit tel. und so. und wie kann ich da jetzt machen man bei telefon, adresse und geburtsdatum "./" oder alle sonstigen zeichen eingeben kann ohne das die fehlermeldung kommt???



    HTML-Code:
    //// Global-Array für die Fehlermeldungen
    $GLOBALS['fehler'] = array(); /* Hier wird ein Array definiert mit noch keinen Einträgen $GLOBALS[] ist ein Array
    und sagt aus, dass das Objekt in dem Index überall im Script aufrufbar sein soll. Hätten wir einfach $fehler 
    geschrieben, würden unsere selbstgeschriebenen Funktionen nicht darauf zugreifen können. */
    
    if (isset($_POST['submit'])) // Unsere Hauptanfrage
    	{
    	pruefe_name($_POST['vorname'],
    		"Du hast deinen Vornamen nicht angegeben.",
    		"Du hast unerlaubte Zeichen in deinem Vornamen verwendet.");
    	pruefe_name($_POST['nachname'],
    		"Du hast deinen Nachnamen nicht angegeben.",
    		"Du hast unerlaubte Zeichen in deinem Nachnamen verwendet.");
    	pruefe_name($_POST['geburtsdatum'],
    		"Du hast dein Geburtsdatum nicht angegeben.",
    		"Du hast unerlaubte Zeichen in deinem Geburtsdatum verwendet.");
    	pruefe_name($_POST['gemeinde'],
    		"Du hast deine Gemeinde nicht angegeben.",
    		"Du hast unerlaubte Zeichen in deiner Gemeinde verwendet.");
    	pruefe_name($_POST['adresse'],
    		"Du hast deine Adresse nicht angegeben.",
    		"Du hast unerlaubte Zeichen in deiner Adresse verwendet.");
    	pruefe_name($_POST['land'],
    		"Du hast dein Land nicht angegeben.",
    		"Du hast unerlaubte Zeichen in deinem Land verwendet.");
    	pruefe_name($_POST['telefonnummer'],
    		"Du hast deine Telefonnummer nicht angegeben.",
    		"Du hast unerlaubte Zeichen in deiner Telefonnummer verwendet.");
    	pruefe_name($_POST['jugendleiter'],
    		"Du hast deinen Jugendleiter nicht angegeben.",
    		"Du hast unerlaubte Zeichen in deinem Jugendleiter verwendet.");
    	pruefe_email($_POST['email'],
    		"Du hast keine eMail-Adresse angegeben.",
    		"Du hast unerlaubte Zeichen in deiner eMail-Adresse verwendet.");
    	/* Hier wird überprüft ob das Textfeld "Anfrage" keinen Wert enthällt. Falls
    	es so ist wird wie in unseren Funktionen auch in das Fehlermeldungs-Array geschrieben und der Wert auf NULL
    	umgeändert. Eine Funktion in diesem Fall zu schreiben ist nicht nötig, da hier nur zwei simple Anweisungen 
    	erfolgen. */
    	/* Hier werden die Daten für den Versand eingegeben, sowie der Umgang mit Fehlermeldungen festgelegt: */
    	daten_senden("matzemiro@aol.com",
    		"Anfrage - ".$_POST['thema'],
    		"Von: ".$_POST['anrede']." ".$_POST['vorname']." ".$_POST['nachname']."\n".
    		"Geburtsdatum: ".$_POST['geburtsdatum']."\n".
    		"Gemeinde: ".$_POST['gemeinde']."\n".
    		"Adresse: ".$_POST['adresse']."\n".
    		"Land: ".$_POST['land']."\n".
    		"Telefonnummer: ".$_POST['telefonnummer']."\n".
    		"Jugendleiter: ".$_POST['jugendleiter']."\n".
    		"eMail-Adresse: ".$_POST['email'],
    		"Bestätigung",
    		"Guten Tag ".$_POST['anrede']." ".$_POST['vorname']." ".$_POST['nachname'].",\n".
    		"Sie erhalten diese eMail, da Sie auf unserer Webseite mit uns Kontakt aufgenommen und eine eMail-".
    		"Bestätigung gewünscht haben.\n".
    		"Ihre Anfrage wird so schnell von unseren Mitarbeitern verarbeitet und Sie werden von uns informiert.\n".
    		"Mit freundlichen Grüßen.",
    		"Leider konnte Ihre Nachricht nicht übermittelt werden.",
    		"Leider konnte Ihre Bestätigung nicht übermittelt werden.",
    		"Ihre Anfrage wurde erfolgreich gesendet.",
    		"Ihre Bestätigungsmail wurde erfolgreich an Sie weitergeleitet.",
    		"From: ".$_POST['email']." <".$_POST['vorname']." ".$_POST['nachname'].">",
    		"From: Mustermann");
    	}
    
    // Funktionen:
    function pruefe_name(&$name, $fehlermld_1, $fehlermld_2)
     /* &$name ist eine Referenz, das heißt es wird keine Kopie
    der übergebenen Variable für die Funktion gemacht, sondern ein Aliasname erstellt, der auf die übergebene Variable 
    direkt zugreifen kann. Also wird nach dem Funktionsaufruf z.B. $_POST['vorname'] als Argument direkt verändert, ohne, 
    dass man $_POST['vorname'] = pruefe_name($_POST['vorname']); hinschreiben muss. Die anderen zwei Argumente sind dazu
    da, um die zwei Fehlermeldungen zu übergeben. Die erste ist für den Fall, dass die übergebene Variable nichts
    erhällt und die zweite falls die Variable durch das Muster nicht passt und z.B. unerlaubte Zeichen oder Ziffern 
    erhällt */
    	{
    	$name = trim($name); /* trim() entfernt ua. überflüssige Leerzeichen am Ende und Anfang des Strings. Danach wird
    	ein "sauberer" String ausgegeben und an die Variable $name übergeben */
    	if (empty($name)) : array_push($GLOBALS['fehler'], $fehlermld_1."<BR>"); 
    	$name = NULL; return; endif; /* Vielleicht etwas ungewöhnliche Methode eine if-Abfrage zu machen, aber manchmal 
    	übersichtlicher, wenn es um 2-3 kleine Befehle geht: if (Bedingung) : Befehle... endif; */
    	/* empty() gibt true zurück, falls der String leer, undefiniert oder gleich 0 ist.
    	array_push() wird hier verwendet, um das Fehler-Array zu updaten. Danach wird der Wert der Variable $name evtl.
    	$_POST['vorname'] auf NULL gesetzt. NULL ist sowas wie unbekannt und nicht mit 0 als Zahl zu verwechseln!
    	Wir weisen NULL allen Feldern zu, die irgendwelche Fehler erhalten, das erleichtert die Fehlersuche im Script.
    	return wird verwendet, um in einer Funktion einen Rückgabewert auszugeben (return "Wert") oder die Funktion
    	einfach zu beenden und somit false zu liefern (return;) */
    	if (preg_match("/^[- A-Za-zÄÖÜßäöü]{2,25}$/i", $name))
    		{
    		return $name;
    		}
    		else
    			{
    			array_push($GLOBALS['fehler'], $fehlermld_2."<BR>");
    			$name = NULL;
    			return;
    			} /* Hier wird zuerst in der Funktion preg_match()
    	überprüft ob der String dem Muster entspricht (Argument 1) und falls ja true ausgegeben, wenn preg_match() false
    	zurückliefert wird auch aus unserer Funktion false kommen und die entsprechende Fehlermeldung wird im Array 
    	gespeichert */
    	}
    	// Die nächste Funktion unterscheidet sich kaum, es wird nur ein anderes Überprüfungsmuster geschrieben
    function pruefe_email(&$email, $fehlermld_1, $fehlermld_2)
    	{
    	$email = trim($email);
    	if (empty($email)) : array_push($GLOBALS['fehler'], $fehlermld_1."<BR>"); $email = NULL; return; endif;
    	if (preg_match("/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/i", $email)) /* Dieses lange Ding habe ich nicht selbst geschrieben, da für sowas wie eMails
    	oder URLs es genug fertige Regex im Netz gibt. Man muss ja auch nicht unbedingt zwei Stunden lang etwas in dieser 
    	Art selbst entwickeln. (Es sei denn man lernt es gerade :)) */
    		{
    		return $email;
    		}
    		else
    			{
    			array_push($GLOBALS['fehler'], $fehlermld_2."<BR>");
    			$email = NULL;
    			return;
    			}
    	}
    function daten_senden($email, $betreff, $inhalt, $betreff_empfbest, $inhalt_empfbest, $fehlermld, $fehlermld_empfbest, $erfolgrmld, $erfolgrmld_empfbest, $header = "", $header_empfbest = "")
    /* Funktionsparameter erklärt:
    $email					= eMail-Adresse des Webmasters
    $betreff				= Betreff der Nachricht
    $inhalt					= Inhalt der Mail
    $betreff_empfbest		= Betreff der Bestätigungsmail
    $inhalt_empfbest		= Inhalt der Bestätigungsmail
    $fehlermld				= Fehlermeldung der Nachricht
    $fehlermld_empfbest		= Fehlermeldung der Bestätigungsmail
    $erfolgrmld				= Erfolgreich versendet-Meldung
    $erfolgrmld_empfbest	= Erfolgreich versendet-Meldung der Bestätigungsmail
    $header					= Header der Nachricht (optional)
    $header_empfbest		= Header der Bestätigungsmail (optional)
    */
    	{
    	if (sizeof($GLOBALS['fehler']) == 0) // Prüft ob das Array mit keiner Fehlermeldung gefüllt wurde
    		{
    		/* Prüfen ob die Mail an den SMTP-Server erfolgreich gesendet wird und die passende Meldung ausgeben: */
    		if (@mail($email, $betreff, $inhalt, $header)) { echo $erfolgrmld."<BR>"; } else { echo $fehlermld."<BR>"; }
    		if ($_POST['bestaetigung']) // Prüft, ob der Besucher eine eMail-Bestätigung wünscht
    			{
    			if (@mail($_POST['email'], $betreff_empfbest, $inhalt_empfbest, $header_empfbest))
    				{
    				echo $erfolgrmld_empfbest."<BR>"; // Erfolgreich gesendet-Nachricht
    				}
    				else
    					{
    					echo $fehlermld_empfbest."<BR>"; // SMTP-Fehler aufgetreten
    					}
    			}
    		}
    		else // Falls Fehler in den Feldern gefunden wurden:
    			{
    			foreach ($GLOBALS['fehler'] AS $value) // Schleife, um alle Fehler aufzuzählen, die eingetragen wurden
    				{
    				echo $value;
    				}
    			}
    	}

  12. #57
    Guest
    Registriert seit
    Aug 2002
    Beiträge
    2.233
    Lass doch einfach den Aufruf der Funktion aus! Also ganz weg:
    PHP-Code:
    pruefe_name($_POST['adresse'],
            
    "Du hast deine Adresse nicht angegeben.",
            
    "Du hast unerlaubte Zeichen in deiner Adresse verwendet."); 
    Das gleiche für die Telefonnummer, man braucht diese Funktion nicht zu durchlaufen.

  13. #58
    TP-Veteran Avatar von Elli
    Registriert seit
    Nov 2002
    Ort
    Orscholz
    Beiträge
    1.118

    automatische Bestätigung, aber wie?

    Hallo Strogij,

    leider kenne ich mich in PHP nicht wirklich aus. Im Moment beschränkt
    sich das eher auf die Skriptimplementierung und ein gewisse Anpassung.
    So gesehen betrifft das auch dein Formmailer, der eigentlich Klasse ist


    Ich möchte eigentlich "nur", dass automatisch eine Bestätigungsmail
    an denjenigen geschickt wird, der das Formular ausgefüllt hat. Ich habe
    zwar die Codezeile gefunden, nur wie es nun so angepasst wird, dass
    eben nicht manuell ein Häckchen gesetzt werden muss, no clue!

    PHP-Code:
    if ($_POST['bestaetigung']) // Prüft, ob der Besucher eine eMail-Bestätigung wünscht 
    Tja, da stehe ich nun davor.

    Wäre cool, wenn du mir da noch weiterhelfen könnest!

    Gruß
    Elli
    Es gibt keinen Fortschritt ohne den Glauben an die Zukunft.
    [JFK]

  14. #59
    Guest
    Registriert seit
    Aug 2002
    Beiträge
    2.233
    Hi.
    Sorry, sehe die Antwort jetzt erst... Falls du es noch nicht hinbekommen hast, du brauchst ab Zeile 113 im Script bis zum Ende alles durch das hier zu ersetzen:
    PHP-Code:
    if (sizeof($GLOBALS['fehler']) == 0// Prüft ob das Array mit keiner Fehlermeldung gefüllt wurde
            
    {
            
    /* Prüfen ob die Mail an den SMTP-Server erfolgreich gesendet wird und die passende Meldung ausgeben: */
            
    if (@mail($email$betreff$inhalt$header)) { echo $erfolgrmld."<BR>"; } else { echo $fehlermld."<BR>"; }
            if (@
    mail($_POST['email'], $betreff_empfbest$inhalt_empfbest$header_empfbest))
                    {
                    echo 
    $erfolgrmld_empfbest."<BR>"// Erfolgreich gesendet-Nachricht
                    
    }
                    else
                        {
                        echo 
    $fehlermld_empfbest."<BR>"// SMTP-Fehler aufgetreten
                        
    }
            }
            else 
    // Falls Fehler in den Feldern gefunden wurden:
                
    {
                foreach (
    $GLOBALS['fehler'] AS $value// Schleife, um alle Fehler aufzuzählen, die eingetragen wurden
                    
    {
                    echo 
    $value;
                    }
                }
        }
    ?> 
    Und in der HTML Date kann dann auch das Häckchen weg, die Bestätigung wird immer mitgeschickt.

  15. #60
    TP-Veteran Avatar von Elli
    Registriert seit
    Nov 2002
    Ort
    Orscholz
    Beiträge
    1.118
    Merci.

    Kein Problem, da auch immer viel anderes ansteht, wird einem sowieso nicht
    langweilig und das Forum läuft ja nicht davon


    Gruß
    Elli
    Es gibt keinen Fortschritt ohne den Glauben an die Zukunft.
    [JFK]

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

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