php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.06.2006, 19:53  
Neuer Benutzer
 
Registriert seit: 11.06.2006
Beiträge: 9
Avalas
Standard Variablen Wert übergeben aus Dropdown Menü

Hi,

ich habe ein Kontaktformular, bei dem man aus einer Liste einen Betreff auswählen kann. Der jeweils ausgewählte Begriff erscheint dann in der Email als Betreff. Das klappt noch

Nun gibt es noch die Möglichkeit als Betreff "Sonstiges" zu wählen (falls sonst nichts zutrifft). Mittels JS wird bei dieser Auswahl ein Textfeld angezeigt in das man dann selbst einen passenden Betreff eingeben kann. Das funktioniert auch noch

Jetzt soll aber, wenn man als Betreff "Sonstiges" wählt, im Betreff der Email der selbst eingegebene Betreff erscheinen und nicht "Sonstiges" (sonst kann ich mir das Textfeld ja gleich sparen).

Code:
...
<form name="form" method="POST" action="mail.php">
<label><select name="Betreff" onchange="Auswahl()">
		<option>Betreff 1</option>
		<option>Betreff 2</option>
		<option>Sonstiges</option>
		</select></label><input type="text" size="15" name="Betreff_alt" value="alternativer Betreff" style="visibility:hidden">
...
Also, bei Betreff 1 & 2 soll Betreff übergeben werden, bei Sonstiges Betreff_alt.


So, mein bescheidener Versuch den jeweiligen Wert an die mail.php zu übergeben (von einem anderen Script abewandelt):

Code:
<?php
if(($_POST["Betreff"] == "Sonstiges") OR ($_GET["Betreff"] == "Sonstiges"))
{
  $subj = "Betreff_alt";
}
else
{
  $subj = "Betreff";
}
...
Ist das so in etwas korrekt, oder bin ich dabei schon komplett auf dem Holzweg

(so klappt es jedenfalls nicht; es steht gar kein Betreff mehr in der Email)

P.S. mach ich was falsch, oder wieso gehen PHP-Tags hier im Forum nicht?
PHP-Code:
 php-code 
Avalas ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.06.2006, 20:59  
Erfahrener Benutzer
 
Registriert seit: 16.05.2004
Beiträge: 369
Simon9990
Standard

Hi

PHP-Code:
<?php
if(($_POST["Betreff"] == "Sonstiges") OR ($_GET["Betreff"] == "Sonstiges"))
?>
das könntest du auch abkürzen

PHP-Code:
<?php
if($_REQUEST["Betreff"] == "Sonstiges")
?>
und versuch mal statt nur
PHP-Code:
<?php
<option>Sonstiges</option>
?>
mit value angabe

PHP-Code:
<?php
<option value='Sonstiges'>Sonstiges</option>
?>
Und wie geht das Skript weiter ?
Kommt dann $_POST/$_GET- [$subj] ?
Oder ?


Gruß SimonErich
__________________
Der G-Translator
Simon9990 ist offline  
Alt 11.06.2006, 21:21  
Neuer Benutzer
 
Registriert seit: 11.06.2006
Beiträge: 9
Avalas
Standard

Hi,

das bringt leider alles keine Besserung.

Das komplette Script sieht so aus:

Zeile 1-9: der von mir hinzugefügte Teil.
Und für den Betreff dann noch die Zeilen 82-83 und 157-158.

PHP-Code:
<?php
if($_REQUEST["Betreff"] == "Sonstiges")
{
  
$subj "Betreff_alt";
}
else
{
  
$subj "Betreff";
}

#################################################
#
#   (c) PlaNet Concept e.K., Lars Odermath, 2005
#
#################################################
#
# :: planetMail :: Version vom 12.10.2005
#
# COPYRIGHT NOTICE
# Copyright 2005 PlaNet Concept e.K.
# All Rights Reserved.
# EMail: [email]kontakt@planetc.de[/email]
# URL  : [url]http://www.planetc.de[/url]
#
# :: planetMail :: darf von jedem kostenlos benutzt und geändert werden,
# solange dieser Copyright-Verweis und die restlichen Kommentare erhalten bleiben.
#
# Mit dem Einsatz dieses Skripts akzeptieren Sie, daß PlaNet Concept e.K.,
# Lars Odermath, von jeglicher Haftung und Gewährleistung hinsichtlich des
# Einsatzes befreit ist.
#
# Der Verkauf dieses Skripts, auch in modifizierter Form, ist ohne vorherige
# Absprache ausdrücklich untersagt! (Mit anderen Worten: Bitte fragen Sie uns,
# bevor Sie versuchen, mit unserem Script Geld zu verdienen.)
#
# Um dieses Skript über das Internet oder ein anderes Medium
# weiterzuverbreiten, benötigen Sie vorher unsere Erlaubnis. In jeden Fall
# müssen der Copyright-Verweis und die restlichen Kommentare erhalten
# bleiben.
#################################################

sendEmail();

function 
sendEmail(){

#################################################
# KONFIGURATION
#################################################


// Zu Testzwecken
// 1 => Der Inhalt der eMail wird in eine Textdatei geschrieben (wenn Sie offline testen möchten)
// 0 => Die eMail wird verschickt
$testOffline 0;



// Geben Sie hier eine gültige eMail-Adresse von sich an
// Diese eMail-Adresse wird dann auch als Absender-eMail-Adresse angezeigt, wenn die nachfolgende
// Option nicht aktiviert (also auf 1 gesetzt) wird.
// (Dies ist bei manchen Providern Voraussetzung, um Spamming zu verhindern)
$emailFrom "";



// eMail-Adresse des Versenders als Absenderadresse nutzen (um beispielsweise direkt anworten zu können)
// 1 => Ja  | 0 => Nein
$useSendersEmail 1;

// Geben Sie nachfolgend den Namen des Formularfeldes an, in das der Absender seine
// eMail-Adresse einträgt (Voreinstellung ist: eMail || BEACHTEN SIE GROSS- & KLEINSCHREIBUNG!!!!).
// Die Eingabe ist nur dann notwendig, wenn Sie die vorangehende Option ($useSendersEmail) auf "1" setzen!
$mailFromField 'eMail';


// SPAM-MISSBRAUCH-SCHUTZ
// Aktivieren Sie den Schutz vor einem Missbrauch des Formmailers durch Spammer!
// Genauere Informationen finden Sie in der README.txt
// 1 => aktiviert  | 0 => NICHT aktiviert
$spamProtect 1;

// BETREFF
$usesubj =1;

// Empfänger eMail-Adressen, Subject, Zielseite nach dem Versenden der eMail
// Soll KEINE Kopie der eMail an eine zweite Adresse geschickt werden, so löschen Sie die "Dummy"-eMail-Adresse
// "kopie@ihre_domain.de", so daß nur noch die beiden Hochstriche stehen bleiben ("").
// Ansonsten geben Sie dort bitte eine gültige eMail-Adresse ein.
// Genauere Informationen finden Sie in der README.txt
$send_dat = array(

"dat1" => array("name@host.tld""""$subj""send.php"),
#"dat2" => array("", "", "", ""),
#"dat3" => array("", "", "", ""),

);



// Felder aus dem Formular, die NICHT mit der eMail übertragen werden sollen.
// TIPP: Verwenden Sie grafische Buttons als "Absendeknopf", so werden die Koordinaten
// der Klickstelle mit der eMail verschickt. Um diesen (unschönen) Effekt zu umgehen,
// geben sie für den grafischen Button  name="senden" ein.
$ignoreFormFields = array('send_index''Betreff''senden''submit''check_form','Submit','senden_y','senden_x');


###########################################################
# ENDE DER KONFIGURATION (AB HIER SOLLTE NICHTS MEHR GEÄNDERT WERDEN!!!!!!!!!!!)
###########################################################

// Datum (+deutsche Tage)
$name_tag = array('Sonntag''Montag''Dienstag''Mittwoch''Donnerstag''Freitag''Samstag');
$day $name_tag[date('w')];
$year date('Y');
$n date('d');
$month date('m');
$time = (date('H:i'));


// Prüfung, welches send_dat-Array zum senden verwendet werden soll
// Default: dat1
!empty($_POST['send_index']) ? $st $_POST['send_index'] : $st 'dat1';


// Versende Daten
$mailto $send_dat[$st][0]; // Ziel-eMail-Adresse
$mail_cc $send_dat[$st][1]; // 2. Ziel-eMail-Adresse (Kopie)
$subject $send_dat[$st][2]; // Subjekt
$redirect $send_dat[$st][3]; // Zielseite nach eMailversand



// Formularfelder auslesen und in die eMail "einsetzen"
// Zu ignorierende Felder werden NICHT eingesetzt
while (list($fieldName$fieldValue) = each($_POST))
{
    if (
in_array($fieldName$ignoreFormFields) || empty($fieldValue)) continue;
    
$message .= "$fieldName: $fieldValue\r\n";
}


// Funktion zum prüfen des Inhaltes aufrufen
$message cleanContent($message$spamProtect);

// Datum und Zeit voranstellen
$message "Gesendet am $day, den $n.$month.$year - $time Uhr.\r\n\r\n$message";


// Weiterleitung auf eine andere Seite
Header("Location: $redirect");

// Absender-eMail-Adresse
($useSendersEmail == 1) ? $emailFrom $_POST[$mailFromField] : $emailFrom $emailFrom;

$header "From: $emailFrom";

// Betreff
($usesubj == 1) ? $subject $_POST[$subj] : $subj $subj;

// Kopie schicken
if (!empty($mail_cc)) {
    
$header .= "\r\n";
    
$header .= "Cc: $mail_cc";
}


// eMail verschicken
if ($testOffline == '0') {
    @
mail ($mailto$subject$message$header)
        || die(
'[b]Es ist ein Fehler aufgetreten, bitte versuchen Sie es erneut![/b]');
}

// eMail zum testen in ein Textfile schreiben
if ($testOffline == '1') {
    
$testmail fopen('email.txt''w+');
    
fwrite($testmail$message);
    
fclose($testmail);
}


// end function



/***** Inhalte "bereinigen" *****/
function cleanContent($content$spamProtect)
{
    
$content str_replace('
'
"\r\n"$content);
    
$content stripslashes(strip_tags($content));

    
// Spam-Missbrauch-Schutz aufrufen
    
if($spamProtect == 1) { $content checkContent($content); }

    return 
$content;
}


/***** Spam-Missbrauch-Schutz *****/
function checkContent($tpcontent)
{
    
// kritische Zeichen entfernen
    
$checkit = array("/bcc\:/i","/cc\:/i","/to\:/i");
    
$tpcontent preg_replace($checkit""$tpcontent);

    
// Script-Abbruch bei eindeutigem Spamversuchen
    
if (preg_match("/(MIME\-Version\:|Content\-Type\:)/i"$tpcontent)) {
        die(
'Ihre Angaben enthalten kritische Zeichen! Aus Gründen des Spamschutzes wird Ihre Nachricht nicht versendet.');
    }

    if (empty(
$tpcontent)) {
        die(
'');
    }

    return 
$tpcontent;
}


?>
Avalas ist offline  
Alt 11.06.2006, 21:59  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Welche Ausgabe erhälst du mit print_r($_REQUEST)?
xabbuh ist offline  
Alt 11.06.2006, 22:02  
Erfahrener Benutzer
 
Registriert seit: 16.05.2004
Beiträge: 369
Simon9990
Standard

Und mit den anderen Betreffen funktionierts ?
Also die werden angezeigt ?
__________________
Der G-Translator
Simon9990 ist offline  
Alt 11.06.2006, 22:15  
Neuer Benutzer
 
Registriert seit: 11.06.2006
Beiträge: 9
Avalas
Standard

Als Ausgabe erhalte ich:
Array ( [Name] => Name [email] => email@blabla.xyz [Betreff] => Sonstiges [Betreff_alt] => alternativer Betreff [Mitteilung] => Nachricht [Submit] => Abschicken )

Es erscheint aber gar kein Betreff (weder bei sonstiges, noch bei den anderen) in der Mail.
Avalas ist offline  
Alt 12.06.2006, 05:34  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Avalas
das bringt leider alles keine Besserung.
Und zwar deshalb:

Code:
<?php
if($_REQUEST["Betreff"] == "Sonstiges")
{
  $subj = "Betreff_alt";
}
else
{
  $subj = "Betreff";
}

# .....


// Felder aus dem Formular, die NICHT mit der eMail übertragen werden sollen.
##############################################
$ignoreFormFields = array('send_index', >>>'Betreff'<<<, 'senden', 'submit', 'check_form','Submit','senden_y','senden_x');
$_POST['Betreff'] wird also garf nicht verwendet.

Aber was soll das?

Code:
// Weiterleitung auf eine andere Seite
Header("Location: $redirect");
Nach Location header gehört ein exit. Schickt Dein Script danach auch nur noch ein lausiges Byte Content, muß der Client der neuen Location nicht folgen.

Und wenn Du das exit einfügst:
Wolltest Du die Email nicht wenigstens noch wegschicken?
 
Alt 12.06.2006, 10:12  
Neuer Benutzer
 
Registriert seit: 11.06.2006
Beiträge: 9
Avalas
Standard

Das ignore gilt ja nur für den Text in der Email, ein Betreff erhält man (zumindest ohne meine Modifikation) schon.

Das ignore dient halt dazu, damit bestimmte Sachen nicht im Text der Email auftauchen (meinetwegen die Emailadresse des Absenders, oder eben der Betreff, denn die Sachen stehen ja so oder so im Header der Mail).
Zitat:
Aber was soll das?

PHP-Code:
// Weiterleitung auf eine andere Seite 
Header("Location: $redirect"); 
[...]
Weiß leider nicht, was du meinst - das Script ist so fertig vorgegeben und es funktioniert
Avalas ist offline  
Alt 12.06.2006, 10:39  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Avalas
Weiß leider nicht, was du meinst - das Script ist so fertig vorgegeben und es funktioniert
Jesses...! Emails mit dem fehlerhaften header kommen tatsächlich an und werden nicht vom Spamfilter gefressen?

Egal. Wenn alles funktioniert, kann das Thema ja geschlossen werden.
 
Alt 12.06.2006, 12:00  
Neuer Benutzer
 
Registriert seit: 11.06.2006
Beiträge: 9
Avalas
Standard

Ja, das Script geht in der Grundform.

Aber mit der Modifikation, die ich machen will klappt es nicht mehr richtig, es steht kein Betreff mehr in der Email. Und das ist das Problem
Avalas ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
dropdown wert ausgewählt? nixahnung PHP Tipps 2008 4 29.02.2008 12:09
2 Werte per Dropdown abfragen nur einen Wert schreiben thron Datenbanken 13 19.02.2008 18:28
nach grösstem (unbekannten) Wert suchen lindner Datenbanken 2 20.08.2006 22:13
innerhalb heredoc wert einer Variablen zuweiden rudolfs PHP Tipps 2006 5 17.01.2006 20:07
minus wert, plus wert in variable nutzen PHP Tipps 2005-2 5 22.10.2005 19:15
Dropdown gibt falschen Wert an DB PHP Tipps 2005-2 6 30.08.2005 10:53
variablen einen wert aus einer datei zuweisen! nur wie? :( CrashonNet PHP Tipps 2005-2 6 22.07.2005 09:14
in Variablen gespeicherten Wert fuer Objektzugriff HTML, Usability und Barrierefreiheit 3 28.06.2005 17:50
zwei Variablen einen wert zuweisen PHP Tipps 2005 7 13.03.2005 16:38
Dropdown && Checkbox wert speichern? PHP Tipps 2005 2 27.02.2005 21:42
Variablen übergeben bzw. auslesen? PHP Tipps 2005 4 30.01.2005 03:56
Variablen haben alle den gleichen Wert PHP Tipps 2005 7 28.01.2005 11:21
[Erledigt] Wert von Variablen aus E-Mail entnehmen PHP Tipps 2004-2 3 26.11.2004 13:23
[Erledigt] Problem: per klick auf Button Wert erhöhen/verringern HTML, Usability und Barrierefreiheit 7 07.10.2004 08:31
Variablen wert speichern PHP Tipps 2004 3 29.06.2004 20:02

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/php-tipps-2006/40635-variablen-wert-uebergeben-aus-dropdown-menue.html, wert dropdown variable zuordnen php, dropdown auswahl in variable speichern, eingabe eines dropdown menüs übergeben, dropdown menu übergabe in php, post wert übergeben month(modified date), c übergabe werte unter menüs, php buttonwerte an arrays übergeben, else if (document.eingabe.dropdown-menu.value == \\) für kontaktformular, php dropdown datum übergeben, php post wert ignorieren, variablenwert vor löschen schützen php, html pulldown wert zuweisen, datum per dropdown menü auswählen, default heute, dropdown menü php mailto, php select combobox werte zuweisen, wie kann man die auswahl eines dropdown feldes einer variablen zuweisen, php wert aus dropdown feld zuweisen, dropdown textbox db php, ausgewählten wert aus dropdown liste neuen wert zuordnen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:01 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.