hilfdirselbst.ch
Facebook Twitter gamper-media
Anonym
Beiträge: 22827
2. Apr 2004, 13:55
Beitrag #1 von 15
Bewertung:
(2856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

formmail mit checkboxen


Hallo zusammen,

im Voraus muß ich sagen, daß ich ein absolutes Greenhorn in Sachen php bin - was wahrscheinlich an dem folgenden script eh offensichtlich wird.

Habe versucht ein paar checkboxen in ein funktionierendes script einzubauen (ein von oesi modifiziertes script aus den golivetipps) mit ein paar Zeilen aus "http://www.dclp-faq.de". Ich ahnte schon, daß es so einfach nicht sein würde. Habe jetzt aber keine Ahnung wie ich die checkboxen-Auswahl in die Mail bekomme. Liegt es an print?


Weiß jemand Rat?



<?php

$vorname = preg_replace ( "/[^\w\d\s]/", " ", $HTTP_POST_VARS['vorname'], -1);
$name = preg_replace ( "/[^\w\d\s]/", " ", $HTTP_POST_VARS['name'], -1);
$email = preg_replace ( "/[^\w\d\s]/", " ", $HTTP_POST_VARS['email'], -1);
$strasse = preg_replace ( "/[^\w\d\s]/", " ", $HTTP_POST_VARS['strasse'], -1);
$wohnort = preg_replace ( "/[^\w\d\s]/", " ", $HTTP_POST_VARS['wohnort'], -1);
$subject = preg_replace ( "/[^\w\d\s]/", " ", $HTTP_POST_VARS['subject'], -1);

if ($vorname!="" AND $name!="" AND $email!="" AND $subject!="" ) {

$mailto ="test@test.de";
$mailfrom ="test@test.de";

$body="Vorname: $vorname
Nachname: $name
Strasse: $strasse
PLZ/Ort: $wohnort
Email: $email
Betrifft: $subject";


if (isset($_REQUEST['Interesse'])) {
reset($_REQUEST['Interesse']);
foreach ($_REQUEST['Interesse'] as $k => $v) {
print "$k $v\n";
}
} else {
print "alle cbutton schlafen schon.\n";
}

$more = "From: $mailfrom\r\nContent-Type: text/plain";
mail($mailto, $subject, $body, $more);


header("location: danke.html");

}
else {

header("location: fehler.html");

}

?> Top
 
X
oesi50  A  S
Beiträge: 2315
3. Apr 2004, 10:10
Beitrag #2 von 15
Beitrag ID: #78269
Bewertung:
(2856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

formmail mit checkboxen


Wie sieht Dein Formular aus?
Was steht in Value?
Welchen Namen hast Du für die Checkboxen verwendet?

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)
als Antwort auf: [#78144] Top
 
Anonym
Beiträge: 22827
3. Apr 2004, 11:48
Beitrag #3 von 15
Beitrag ID: #78279
Bewertung:
(2856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

formmail mit checkboxen


Hallo oesi,

schön von Dir zu lesen. Folgendermaßen sieht das Formular aus:

<form action="/oesi.php" method="post" name="kontakt">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Vorname*<br>
</td>
<td>
</td>
<td><input type="text" name="vorname" size="50"></td>
</tr>
<tr>
<td>Nachname*<br>
</td>
<td>
</td>
<td><input type="text" name="name" size="50"></td>
</tr>
<tr>
<td>Strasse<br>
</td>
<td>
</td>
<td><input type="text" name="strasse" size="50"></td>
</tr>
<tr>
<td>PLZ/Ort<br>
</td>
<td>
</td>
<td><input type="text" name="wohnort" size="50"></td>
</tr>
<tr>
<td>E-mail*<br>
</td>
<td>
</td>
<td><input type="text" name="email" size="50"></td>
</tr>
<tr>
<td>Betrifft*<br>
</td>
<td>
</td>
<td><input type="text" name="subject" size="50"></td>
</tr>
<tr>
<td>Interessen</td>
<td>
</td>
<td><input type="checkbox" name="Interesse[1]" value="test1">test1</td>
</tr>
<tr>
<td>
</td>
<td class="menu">
</td>
<td><input type="checkbox" name="Interesse[2]" value="test2">test2</td></tr>
<tr>
<td>
</td>
<td class="menu">
</td>
<td><input type="checkbox" name="Interesse[3]" value="test3">test3</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td><input type="checkbox" name="checkboxName" value="checkboxValue"></td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td><input type="checkbox" name="checkboxName" value="checkboxValue"></td>
</tr>
<tr>
<td>
</td>
<td class="menu">
</td>
<td><input type="checkbox" name="checkboxName" value="checkboxValue"></td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td><textarea name="text" rows="6" cols="50"></textarea></td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td><input type="submit" name="submitButtonName" value="Absenden"><br>
</td>
</tr>
</table>
</form>
</body>
</html>

Die anderen checkboxen sind noch leer bisher, weil noch nicht klar ist was alles dazukommt.

Viele Grüße, joe

als Antwort auf: [#78144] Top
 
oesi50  A  S
Beiträge: 2315
3. Apr 2004, 22:36
Beitrag #4 von 15
Beitrag ID: #78302
Bewertung:
(2856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

formmail mit checkboxen


hi joe,

versuchs mal so:

if (isset($_POST['Interesse'])) {
reset($_POST['Interesse']);
$body = $body . "Interessen\n";
foreach ($_POST['Interesse'] as $k => $v) {
$body = $body . "$k $v\n";
}
} else {
$body = $body . "alle cbutton schlafen schon.\n";
}



Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)
als Antwort auf: [#78144] Top
 
Anonym
Beiträge: 22827
4. Apr 2004, 13:28
Beitrag #5 von 15
Beitrag ID: #78319
Bewertung:
(2856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

formmail mit checkboxen


hallo oesi,

super, klappt jetzt wunderbar. Es gibt noch einen Schönheitsfehler.
Das Wort "Interesse" steht in einer Zeile mit "Betrifft", die einzelnen chekcboxen stehen dann wieder untereinander.
Zwar weiß ich, daß \n ein Zeilenumbruch bedeutet, aber wo muß ich ihn einsetzen? Bekomme immer irgendwelche parser error. ?????
Und wie kann ich dem "Interesse" noch einen Doppelpunkt verpassen.

Es ist mir bisher nicht aufgefallen, aber der Formmailer überträgt keine Umlaute.
Gab es da nicht auch ein fertiges script?

Viele grüße, joe
als Antwort auf: [#78144] Top
 
oesi50  A  S
Beiträge: 2315
4. Apr 2004, 14:18
Beitrag #6 von 15
Beitrag ID: #78322
Bewertung:
(2856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

formmail mit checkboxen


----------------------------------------------------
$vorname = preg_replace ( "/[^\w\d\sÄÖÜäöüß]/", " ", $HTTP_POST_VARS['vorname'], -1);
$name = preg_replace ( "/[^\w\d\sÄÖÜäöüß]/", " ", $HTTP_POST_VARS['name'], -1);
$email = preg_replace ( "/[^\w\d\s]/", " ", $HTTP_POST_VARS['email'], -1);
$strasse = preg_replace ( "/[^\w\d\sÄÖÜäöüß]/", " ", $HTTP_POST_VARS['strasse'], -1);
$wohnort = preg_replace ( "/[^\w\d\sÄÖÜäöüß]/", " ", $HTTP_POST_VARS['wohnort'], -1);
$subject = preg_replace ( "/[^\w\d\sÄÖÜäöüß]/", " ", $HTTP_POST_VARS['subject'], -1);
----------------------------------------------------
if (isset($_POST['Interesse'])) {
reset($_POST['Interesse']);
$body = $body . "\nInteressen\n";
foreach ($_POST['Interesse'] as $k => $v) {
$body = $body . "$k: $v\n";
}
} else {
$body = $body . "\nalle cbutton schlafen schon.\n";
}
----------------------------------------------------

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)
als Antwort auf: [#78144]
(Dieser Beitrag wurde von oesi50 am 4. Apr 2004, 14:46 geändert)
Top
 
Anonym
Beiträge: 22827
4. Apr 2004, 15:03
Beitrag #7 von 15
Beitrag ID: #78326
Bewertung:
(2856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

formmail mit checkboxen


Hallo oesi,

vielen Dank, der Zeilenumbruch bricht und der Doppelpunkt punktet einwandfrei.

Komischerweise fehlen weiterhin nicht nur die Umlaute, auch das @ aus der email-Adresse ist verschwunden. Es werden keine Ersatzzeichen gezeigt sondern nix. Der vorherige Server war ein Mac-Server (auf dem es lief), jetzt ist es ein Unix-Server. Kann das sein? Ich arbeite am Mac mit Mail.

Unter: http://www.hilfdirselbst.ch/...5&topic_id=13185
hast Du einen Formmailer geschrieben, bei dem die Umlaute erscheinen. Nur, die Interessen (also die checkboxen) erscheinen nicht. Es steht da nur Array in der Mail.
Also kann es nicht am Server liegen.
????

Hoffe es nervt nicht...

Viele Grüße, joe
als Antwort auf: [#78144] Top
 
oesi50  A  S
Beiträge: 2315
4. Apr 2004, 15:15
Beitrag #8 von 15
Beitrag ID: #78327
Bewertung:
(2856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

formmail mit checkboxen


hier wird festgelegt was alles angenommen wird:
preg_replace ( "/[^\w\d\sÄÖÜäöüß]/", " ",

\w Buchstaben von a-zA-Z (ohne Umlaute usw.)
\d Ziffern von 0-9
\s whitespace (Leerzeichen usw.)

alle anderen Zeichen müssen explizit angegeben werden.

Damit hast Du die Möglichkeit für jedes Datenfeld eine andere Regel zu definieren.

bei email ist das also z.B. \w\d@

$email = preg_replace ( "/[^\w\d@]/", " ", $HTTP_POST_VARS['email'], -1);



Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)
als Antwort auf: [#78144] Top
 
Anonym
Beiträge: 22827
4. Apr 2004, 15:32
Beitrag #9 von 15
Beitrag ID: #78328
Bewertung:
(2856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

formmail mit checkboxen


Hallo oesi,

das @ ist jetzt da, aber es fehlen leider immer noch die Umlaute.

Hier nocheinmal das gesamte script:

<?php

$vorname = preg_replace ( "/[^\w\d\sÄÖÜäöüß]/", " ", $HTTP_POST_VARS['vorname'], -1);
$name = preg_replace ( "/[^\w\d\sÄÖÜäöüß]/", " ", $HTTP_POST_VARS['name'], -1);
$email = preg_replace ( "/[^\w\d@]/", " ", $HTTP_POST_VARS['email'], -1);
$strasse = preg_replace ( "/[^\w\d\sÄÖÜäöüß]/", " ", $HTTP_POST_VARS['strasse'], -1);
$wohnort = preg_replace ( "/[^\w\d\sÄÖÜäöüß]/", " ", $HTTP_POST_VARS['wohnort'], -1);
$subject = preg_replace ( "/[^\w\d\sÄÖÜäöüß]/", " ", $HTTP_POST_VARS['subject'], -1);

if ($vorname!="" AND $name!="" AND $email!="" AND $subject!="" ) {

$mailto ="info@muenchundmuench-design.de";
$mailfrom ="info@muenchundmuench-design.de";

$body="Vorname: $vorname
Nachname: $name
Strasse: $strasse
PLZ/Ort: $wohnort
Email: $email
Betrifft: $subject";

if (isset($_POST['Interesse'])) {
reset($_POST['Interesse']);
$body = $body . "\nInteresse:\n";
foreach ($_POST['Interesse'] as $k => $v) {
$body = $body . "$k $v\n";
}
} else {
$body = $body . "alle cbutton schlafen schon.\n";
}


$more = "From: $mailfrom\r\nContent-Type: text/plain";
mail($mailto, $subject, $body, $more);

header("location: danke.html");

}
else {

header("location: fehler.html");

}

?>

Viele Grüße, joe
als Antwort auf: [#78144] Top
 
oesi50  A  S
Beiträge: 2315
4. Apr 2004, 16:23
Beitrag #10 von 15
Beitrag ID: #78330
Bewertung:
(2856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

formmail mit checkboxen


möglicherweise ist bei Deinem PHP die UTF-8 oder/und die UTF-16 Kodierung nicht eingestellt.

Da gibt's zwei Möglichkeiten:

1. PHP Einstellungen ändern

2. die Prüfungen umstellen
nicht die erlaubten Zeichen angeben, sondern die Verbotenen.

[^abc] (alles was nicht a oder b oder c ist, ist verboten)
[abc] (alles was a oder b oder c ist, ist verboten)

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)
als Antwort auf: [#78144] Top
 
Anonym
Beiträge: 22827
5. Apr 2004, 09:47
Beitrag #11 von 15
Beitrag ID: #78387
Bewertung:
(2856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

formmail mit checkboxen


Hallo oesi,

nachdem ich mich beim Anblick von phpMyAdmin in tiefe Verzweiflung gestürzt habe und auch mit der In- bzw. Eklusion nicht zurande kam, habe ich mich fogender Zeilen bedient:

$vorname = $_POST["vorname"];
$name = $_POST["name"];
$email = $_POST["email"];
$subject = $_POST["subject"];

und das funktioniert.

Worin bestand im Einzelnen das Sicherheitsproblem, das Du angesprochen hattest?
Kann man mit obigem leben oder sind da kleine oder große Katastrophen zu erwarten?

Viele Grüße, joe
als Antwort auf: [#78144] Top
 
oesi50  A  S
Beiträge: 2315
5. Apr 2004, 12:37
Beitrag #12 von 15
Beitrag ID: #78423
Bewertung:
(2856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

formmail mit checkboxen


das Sicherheitsproblem liegt darin, daß ein Dir nicht wohlgesonnener Benutzer in die Eingabefelder Deines Formulars div. Scripte eintragen kann. Im schlimmsten Fall könnte er mit Deinem Formular Viren oder Würmer versenden. Ich habe leider keine Zeit, jetzt gerade mal eben nur für Dich ein Beispiel zu konstruieren.

Hier ist der Anfang für einen Wurm, der als Bildschirmschoner getarnt ist:

------=_NextPart_000_0003_000009BA.00001D92
Content-Type: application/octet-stream;
name="unfolds_moonlight.doc.scr"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="unfolds_moonlight.doc.scr"

TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAuAAAAGsiX1YvQzEFL0MxBS9DMQWsXz8FI0MxBcdcOwU0QzEFL0MwBXBDMQWsS2wF
IkMxBcdcOgUqQzEFl0U3BS5DMQVSaWNoL0MxBQAAAAAAAAAAQ29tcHJlc3NlZCBieSBQZXRp
dGUgKGMpMTk5OSBJYW4gTHVjay4AAFBFAABMAQMA7Kc7QAAAAAAAAAAA4AAPAQsBBgAAUAAA
ABwBAAAAAABCoAEAABAAAABgAAAAAEAAABAAAAACAAAEAAAAAAAAAAQAAAAAAAAAALABAAAE
AAAAAAAAAgAAAAAAEAAAEAAAAAAQAAAQAAAAAAAAEAAAAAAAAAAAAAAA/KEBAK8BAAAAkAEA
CAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

usw. usw.
--------------------------------------------------
Wenn man hier also alle Sonderzeichen gefiltert hätte, wäre der Wurm-Code schon entschärft gewesen.


Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)
als Antwort auf: [#78144]
(Dieser Beitrag wurde von oesi50 am 5. Apr 2004, 12:39 geändert)
Top
 
Anonym
Beiträge: 22827
18. Apr 2004, 16:06
Beitrag #13 von 15
Beitrag ID: #80429
Bewertung:
(2856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

formmail mit checkboxen


Hallo,

habe hier aus Schusseligkeit, in einem script-Beispiel die email-adresse angegeben.
Könnte das einer der Moderatoren bitte herausnehmen.

Ich weiß nicht ob es daran liegt, aber ich bekomme in letzter Zeit vermehrt Müll.

Vielen Dank im Voraus!!!
als Antwort auf: [#78144] Top
 
oesi50  A  S
Beiträge: 2315
18. Apr 2004, 18:29
Beitrag #14 von 15
Beitrag ID: #80444
Bewertung:
(2856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

formmail mit checkboxen


hi joe,
das ist jetzt zu spät, Deine Adresse ist nun schon in den Spammerdatenbanken. Ob die noch hier drin steht, oder nicht, ist egal.

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)
als Antwort auf: [#78144] Top
 
Anonym
Beiträge: 22827
19. Apr 2004, 01:16
Beitrag #15 von 15
Beitrag ID: #80484
Bewertung:
(2856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

formmail mit checkboxen


Hallo oesi,

na suuuper,

"c§xxchh></&§?ßö" (unausprechlicher Fluch)


Grüße
als Antwort auf: [#78144] Top
 
X