PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Mailscript funktioniert, aber sendet trotz Fehler (http://www.selfphp.de/forum/showthread.php?t=22909)

andreasa 01.03.2010 13:27:47

Mailscript funktioniert, aber sendet trotz Fehler
 
Hallo Zusammen,

ich hab mir einen Webmailer nachgebaut und erweitert, welcher zwar genau tut, was er soll, doch wenn ein Fehler auftritt sendet er trotzdem.
So kontrolliert dieses Script, ob Name, Vorname, E-Mail-Adresse und Kommentar eingegeben wurden. Ist dies nicht der Fall, so blockt es die Mail.
Wurde ein "hidden" Kontrollfeld ausgefüllt, so ist es Spam und wird geblockt.
Dies funktioniert so weit.

Wurde eine E-Mailadresse eingegeben, welche ohne @ oder . ist, so meckert es zwar, doch die E-Mail landet trotzdem in meinem Postfach.

Kann mir bitte jemand sagen, wie ich den umbauen muss, dass er dann nicht sendet, wenn die eingegebene Absender-E-Mailadresse nicht die benannten beiden Zeichen enthält.

Schon mal vielen Dank für Eure Hilfe

Liebe Grüße

andreas
PHP-Code:

<?php
$empfaenger
="xxx@xxxxxde";
$betreff="Webmailformular";
$botschaft="Folgendes wurde angegeben:\n\n";
/* Schleife liest Attribut-Werte-Paare aus: */
foreach($_POST as $name=> $value) {
      
/* Alle Daten werden in $botschaft gespeichert: */
      
$botschaft.="$name=$value\n";
}


/* Versenden! Bitte Mail-Feld im Formular vorsehen! */
if (isset($_POST["Mail"]) && $_POST["Mail"]!="" && $_POST["Kommentar"]!=""
// Mail-Feld gesetzt und nicht leer? und Kommentar nicht leer?
/* Dann wird Versenden-Funktion mail() aktiv */
/*Wenn das Ned-Feld Daten enthaelt ist es Spam und wird nicht verschickt*/
    
if (empty($_POST['Ned']))
    {

        
$affe="@";
        
$punkt=".";
        
$absender=$_POST["Mail"];
          
/*Kontrolle ob die E-MailAdresse ein @ und winwn . hat*/
              
$ist_affe strpos($absender$affe);
              
$ist_punkt strpos($absender$punkt);
        if((
$ist_affe === false) or ($ist_punkt === false)) {
              echo 
"<h1>Bitte pruefen Sie ihre E-Mail Adresse</h1>";
              echo 
"<p><a href='javascript:history.back()'>Zurueck</a></p>";
        }
        else {
                
$mailgut=1;
        }
        if((
mail($empfaenger$betreff$botschaft"From: $absender")) && ($mailgut==1))
        {
              
/* War mail() erfolgreich, dann: */
              
echo "<h1>Danke f&uuml;r die Nachricht!</h1>\n";
              echo 
"<p>Die Daten wurden weitergeleitet!</p>\n";
        }
        
/* Sonst gibt es eine Fehlermeldung: */
     
}
        else { 
              echo 
"<h1>Leider konnten Ihre eingegebenen Daten nicht versandt werden.</h1>\n";
        }
}
/* else-Zweig äußere if bei nicht gesetzter Variable $Mail: */
else {
              echo 
"<h1>Bitte geben Sie Ihre E-Mail-Adresse  und/oder einen Kommentar an!</h1>\n<a href='javascript:history.back()'>zur&uuml;ck</a>";
}
?>

a

vt1816 01.03.2010 14:00:09

AW: Mailscript funktioniert, aber sendet trotz Fehler
 
PHP-Code:

<?php
...
        else {
                if(
mail($empfaenger$betreff$botschaft"From: $absender"))
               {
                     
/* War mail() erfolgreich, dann: */
                     
echo "<h1>Danke f&uuml;r die Nachricht!</h1>\n";
                     echo 
"<p>Die Daten wurden weitergeleitet!</p>\n";
               }
        }


?>

Lasse $mailgut weg oder ändere die Reihenfolge im if.

andreasa 01.03.2010 15:18:41

AW: Mailscript funktioniert, aber sendet trotz Fehler
 
Hallo vt1816,

danke für Deine schnelle Antwort.

Zitat:

Zitat von vt1816 (Beitrag 135007)
...
Lasse $mailgut weg oder ändere die Reihenfolge im if.

Ja, genau dies war meine Einfügung, die mich nun foppt.

Nun muss ich zum besseren Verständnis leider etwas ausholen.
Das Mailformular dient auf einer Vereinshomepage für die E-Mailkontakte zu den Vereinsvorständen. Richtige E-Mail-Adressen soll ich wg. Spam und Belästigungen der Konturenz vor Ort nicht angeben.
Das $mailgut wollte ich einfügen, da es vor einer Woche passierte, dass eine Mail ankam, mit einer Beitritts-Anfrage. In dieser Mail war zwar eine Mailadresse angegeben, doch die hatte das Format: Anfrage wegen meines 8 jährigen Sohnes. Den Namen des Interessenten gib es aber in den Telefonbüchern nicht.
Also soll ich, der, der die Homepage zu pflegen hat, eine Kontrolle einbauen, dass nurnoch mit gültiger E-Mailadresse oder evtl. mit Telefonnummer gesendet werden kann.

Nun suchte ich schon Verschiedenes zusammen, doch was ich fand und zusammenbrachte war alles mit Javascript. Das Ganze soll aber ohne Javascript auskommen, wg. der Scpritblocker, welche in dieser Gegend modern zu sein scheinen... (Nach Aussage der meisten Vereinsmitglieder)

(Also bleibt mur nur sowas wie PHP, da das ja den Scriptblocker gar nicht interessiert.)

In PHP fand ich aber noch kein vollständiges Beispiel für eine Kontrolle, ob eine E-Mailadresse gültig aufgebaut ist oder nicht. Also nach dem Schema: Zeichen@zeichen.zeichen.
Nun bastelte ich mir etwas, womit ich wenigstens sehen kann, ob @ und . in der Adresse drin sind, oder nicht.
Aber wie und wo bringe ich das in dem Script nun unter?

Tut mir leid, dass ich nun so viel Text ablassen musste, doch hoffe ich, dass ich alle evtnuellen Unklarheiten dazu geklärt habe.

Nochmal danke für Deine Antwort, wo soll ich denn besser den Teil mit dem $mailgut einfügen, damit das alles andere stoppt, oder bei Erfolg die Mail gesendet wird.

Viele Grüße
aus dem sonnigen Geretsried

andreasa

vt1816 01.03.2010 16:24:53

AW: Mailscript funktioniert, aber sendet trotz Fehler
 
Hast Du mal den von mir geposteten Code(-Schnippsel - bzgl. lass $mailgut weg) in Deinem Script entsprechend angepasst?

andreasa 01.03.2010 20:52:51

AW: Mailscript funktioniert, aber sendet trotz Fehler
 
Zitat:

Zitat von vt1816 (Beitrag 135009)
Hast Du mal den von mir geposteten Code(-Schnippsel - bzgl. lass $mailgut weg) in Deinem Script entsprechend angepasst?

Ja, hab ich, ging nicht.
Erst als ich aus

PHP-Code:

   else {
                if(
mail($empfaenger$betreff$botschaft"From: $absender"))
               { 

PHP-Code:

else if(mail($empfaenger$betreff$botschaft"From: $absender"))
                  { 

machte, dann ging es durch.

Vielen Dank für den Tipp.
Ich probier noch ein wenig, vielleicht kriege ich das Script noch dazu, dass es mir auch kontrolliet, ob nach dem letzten Punkt noch ein Zeichen kommt, denn das ist ihm momentan wurst.

Wenn ich da mit was nicht klarkommen sollte, soll ich das dann hier, in diesem Thread posten, oder einen neuen aufmachen?

Viele Grüße

andreasa

vt1816 02.03.2010 06:50:21

AW: Mailscript funktioniert, aber sendet trotz Fehler
 
Zitat:

Zitat von andreasa (Beitrag 135011)
[...]
Wenn ich da mit was nicht klarkommen sollte, soll ich das dann hier, in diesem Thread posten, oder einen neuen aufmachen?

Neue Frage - neues Thema.

Schau Dir aber mal zum Beispiel explode() an.

festus 08.03.2010 10:47:59

AW: Mailscript funktioniert, aber sendet trotz Fehler
 
Auf je0.de gefunden:

PHP-Code:

<?PHP
if($aktion=="Check") {
$muster='^[-a-z0-9!#$%&\'*+/=?^_<{|}~]+(\.[-a-zA-Z0-9!#$%&\'*+/=?^_<{|}~]+)*@([a-z0-9-]{3,})(\.[a-z0-9-]{2,})+$';
if(
eregi($muster$adresse))
echo 
"Adresse ist gültig.";
else
echo 
"Adresse ist ungültig.";
}
?>
<form action="seite.php" method="post"><br>
<input name="adresse" value="<?=$adresse?>">
<input type="submit" name="aktion" value="Check">
</form>


andreasa 10.03.2010 18:01:09

AW: Mailscript funktioniert, aber sendet trotz Fehler
 
Hallo Festus,

danke für Deinen Tip.
Es war nun ein Volltreffer.

Jetzt tut das Formular Alles, was ich brauche.
Es kontrolliert ob alle Felder ausgefüllt sind, ob die E-Mailadresse stimmen kann (möglich ist).
Etwas weiter oben meinte ich schon, dass es funzt, doch da waren noch einige Fehler.
Jetzt geht es fehlerlos durch.

Für die, die es interessiert, so sieht es jetzt aus:
PHP-Code:

$empfaenger="xx@xxx.de";
$betreff="Mailformular";
$botschaft="Folgendes wurde angegeben:\n\n";
foreach(
$_POST as $name=> $value) {
  
$botschaft.="$name=$value\n";
}
if (isset(
$_POST["Mail"]) && $_POST["Mail"]!="" && $_POST["Name"]!="" && $_POST["Vorname"]!="" && $_POST["Kommentar"]!=""

                   
$madresse=$_POST["Mail"]; $muster='^[-a-z0-9!#$%&\'*+/=?^_<{|}~]+(\.[-a-zA-Z0-9!#$%&\'*+/=?^_<{|}~]+)*@([a-z0-9-]{3,})(\.[a-z0-9-]{2,})+$'
                    if(
eregi($muster$madresse)) 
    if (empty(
$_POST['Ned'])) {
        
$absender=$_POST["Mail"];
        if(
mail($empfaenger$betreff$botschaft"From: $absender")) 
        {
              echo 
"<h1>Danke f&uuml;r die E-Mail!</h1>\n";
              echo 
"<p>Die Daten wurden weitergeleitet!</p>\n";
        }
      }
     else { 
              echo 
"<h1>Leider konnten Ihre eingegebenen Daten nicht versandt werden.</h1><p>Bitten gehen Sie <a href='javascript:history.back()'>zur&uuml;ck</a> und versuchen es erneut</p>\n";
     }

                    else 
                    echo 
"Diese E-Mail Adresse kann nicht stimmen. Bitte korrigieren.<br><a href='javascript:history.back()'>Zur&uuml;ck</a>"

else {
              echo 
"<h1>Bitte alle Felder ausf&uuml;llen!</h1><p><a href='javascript:history.back()'>Zur&uuml;ck</a></p>\n";


Vielleicht kann es ja der Eine oder Andere brauchen.

Nochmals Danke

bis zum nächsten Mal

andreasa

cortex 10.03.2010 18:25:04

AW: Mailscript funktioniert, aber sendet trotz Fehler
 
Zitat:

Zitat von andreasa (Beitrag 135154)
Vielleicht kann es ja der Eine oder Andere brauchen.

möchte dir nicht zu nahe treten, aber: danke, lass man gut sein. das skript ist nicht nur anfällig gegen angriffe, sondern offen wie ein scheunentor.

hier mal was zum einlesen: Spam-Gefahr durch Kontaktformulare

es wurde ja schon zig male (in anderen threads) gesagt: nutze eine mail-klasse wie swiftmailer. ich bau' ja auch gern alles selbst, aber mail-versand muss echt nicht sein .-

cx

andreasa 11.03.2010 15:05:44

AW: Mailscript funktioniert, aber sendet trotz Fehler
 
Hallo Cortex,

Zitat:

Zitat von cortex (Beitrag 135155)
möchte dir nicht zu nahe treten, aber: danke, lass man gut sein. das skript ist nicht nur anfällig gegen angriffe, sondern offen wie ein scheunentor.
cx

ich hatte zwar schon eine Kontrollmöglichkeit bezüglich Spamrobotter, mit dem Ned-Feld (ist ein verstecktes Feld, welches die Robotter trotzdem ausfüllen, und welches leer sein muss), was bis jetzt gut funktionierte (seit dem [1 Jahr] keine einzige Spammail mehr)
aber, ok. ich orientiere mich um, denn ich will nicht dass meine Site zum Spamzombie wird.

Den geposteten Code kann ich leider nicht mehr entfernen. Könntest ja Du, als Admin, für mich tun.

Danke für Deine Mühe und die Tips.

Bis zum nächsten Mal

andreasa


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:56:35 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.