Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mail in Formular nur von einer Domain zulassen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Mail in Formular nur von einer Domain zulassen

    Hallo
    Ich arbeite an einer Schule. Für einen Wettbewerb ist es wichtig, dass die Schüler nur von ihrer Schuladresse (mit der entsprechenden Domain) das Auswahl-Formular abschicken können.
    Mit dem vorliegenden Formular ist es möglich, von allen Domains aus zu verschicken. Wie kann ich aus dem eingegebenen Benutzernamen und einer festen Konstante (@xy.ch) die Mail-Adresse generieren, die dann übergeben wird?
    Danke für Hinweise!
    Gruss aus der Schweiz
    p.

    PHP-Code:
    <? $mail = $_POST['mail'];
    $text = $_POST['text'];
    $auswahl = $_POST['auswahl'];

    if (isset($mail) 
    && (isset($auswahl))
    ){

    $name = $_POST['name'];
    $mail = $_POST['mail'];
    $auswahl = $_POST['auswahl'];
    $empfaenger = "peter.haslebacher@ksstadelhofen.ch";

    // IP bestimmen
    $ip = getenv('REMOTE_ADDR');
    // IP auflösen und Host bestimmen
    $host = gethostbyaddr($ip);
    // Zeit bestimmen
    $zeit = date("d.m.Y H:i:s");
    $subject = "Ihre Abstimmung vom ".$zeit;

    $header = "From: <".$empfaenger.">\n";
    $header .= "X-Mailer: PHP/" . phpversion(). "\n";
    $body = "Hallo ".$name.",\n\n";
    $body .= "Vielen Dank fürs Abstimmen!\n";
    $body .= "Folgende Daten wurden am ".$zeit." gespeichert:\n\n";
    $body .= "Name: ".$name." (".$mail.")\n";
    // $body .= "Text: ".$text."\n";
    $body .= "Auswahl: ".$auswahl."\n\n";
    $body .= "Der Eintrag wurde von IP ".$ip." (".$host.") vorgenommen.\n";
    $body .= "Dies ist eine automatisch generierte Mail!\n\n";
    mail($mail,$subject,$body,$header);
    $send = "1";

    // Kontaktmail senden

    $subject = "Auswahl: ".$auswahl;

    $header = "From: <".$mail.">\n";
    $header .="To: ".$empfaenger." <".$empfaenger.">\n";
    $header .= "X-Mailer: PHP/" . phpversion(). "\n";
    $body = "Hallo ".$empfaenger.",\n\n";
    $body .= "".$name." hat folgende Mitteilung geschickt:\n";
    $body .= "Folgende Daten wurden am ".$zeit." gespeichert:\n\n";
    $body .= "Name: ".$name." (".$mail.")\n";
    $body .= "Auswahl: ".$auswahl."\n\n";
    $body .= "Der Eintrag wurde von IP ".$ip." (".$host.") vorgenommen.\n";
    $body .= "Dies ist eine automatisch generierte Mail!\n\n";
    mail($empfaenger,$subject,$body,$header);
    $send = "1";




    }
    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE>Logo-Wettbewerb: Abstimmung</TITLE>
    <META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript">
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
    <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
    <META NAME="audience" CONTENT="All">
    <META NAME="author" CONTENT="Conrad Beck/Peter Haslebacher">
    <META NAME="description" CONTENT="Wettbewerbsformular">
    <META NAME="Keywords" CONTENT="Kontakt">
    <META NAME="Language" CONTENT="De">
    <META NAME="robots" CONTENT="all">
    <LINK REL="STYLESHEET" TYPE="TEXT/CSS" HREF="style.css">

    <script type="text/javascript">
    function FensterOeffnen (Adresse) {
      MeinFenster = window.open(Adresse, "Zweitfenster", "width=500,height=500,left=50,top=50,scrollbars=auto");
      MeinFenster.focus();
    }
    </script>

    </HEAD>

    <BODY>

    <DIV>
    <h2>Abstimmung Logo</h2>
    <p> </p>

    <?
    if ($send != "1") {

    echo '
    <form method="POST" action="index.php">

    <table border="0" width="100%" align="left" summary="Abstimmung Logo">
    <tr>
    <td><a href="logo1.html" onclick="FensterOeffnen(this.href); return false"><img src="logo1.jpg" width="150px" alt="Logo1" border=0></a></td>
    <td><a href="logo2.html" onclick="FensterOeffnen(this.href); return false"><img src="logo2.jpg" width="150px" alt="Logo2" border=0></a></td>
    <td><a href="logo3.html" onclick="FensterOeffnen(this.href); return false"><img src="logo3.jpg" width="150px" alt="Logo3" border=0></a></td>
    <td><a href="logo4.html" onclick="FensterOeffnen(this.href); return false"><img src="logo4.jpg" width="150px" alt="Logo4" border=0></a></td>
    <td><a href="logo5.html" onclick="FensterOeffnen(this.href); return false"><img src="logo1.gif" width="150px" alt="Logo5" border=0></a></td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td>Logo 1</td>
    <td>Logo 2</td>
    <td>Logo 3</td>
    <td>Logo 4</td>
    <td>Logo 5</td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    </table>
    <p></p>
    <table border="0" width="60%" align="left" summary="Abstimmung Logo">
    <tr>
    <td width="150" valign="top" align="left">Vorname/Name</td>
    <td valign="top" align="left">
    <input type="text" name="name" size="40" maxlength="50" value="'.$_POST['name'].'"></td>
    <td colspan="3"</td>
    </tr>
    <tr>
    <td  valign="top" align="left">E-Mail</td>
    <td valign="top" align="left">
    <input type="text" name="mail" size="40" maxlength="100" value="'.$_POST['mail'].'"></td>
    <td colspan="3"</td>
    </tr>

    <tr>
    <td colspan="5"> </td>
    </tr>


    <tr>
    <td colspan="5"> </td>
    </tr>

    <tr>
    <td>Auswahl: </td>
    <td>Logo 1:<input type="radio" value="Logo 1" name="auswahl"><td />
    <td colspan="3"</td>
    </tr>

    <tr>
    <td></td><td>Logo 2:<input type="radio" value="Logo 2" name="auswahl"></td>
    <td colspan="3"</td>
    </tr>

    <tr>
    <td></td><td>Logo 3:<input type="radio" value="Logo 3" name="auswahl"></td>
    <td colspan="3"</td>
    </tr>

    <tr>
    <td></td><td>Logo 4:<input type="radio" value="Logo 4" name="auswahl"></td>
    <td colspan="3"</td>
    </tr>

    <tr>
    <td></td><td>Logo 5:<input type="radio" value="Logo 5" name="auswahl"></td>
    <td colspan="3"</td>
    </tr>

    <tr>
    <td colspan="2"> </td>
    <td colspan="3"</td>
    </tr>

    <tr>
    <td > &nbsp;</td>
    <td valign="top" align="center">
    <input type="Submit" name="Senden" value="Mail senden"></td>
    <td colspan="3"</td>
    </tr>

    <tr>
    <td > &nbsp;</td>
    <td valign="top" align="center">
    <input type="reset" value="Formular zurücksetzen"></td>
    <td colspan="3"</td>
    </tr>

    </table>
    </form>
    ';
    } else {

    echo '
    <h2>Vielen Dank für Ihre Anfrage!</h2>
    <p>Folgenden Daten wurden übermittelt:</p>
    <ul class="weit">
    <li>Name: <SPAN STYLE="color:#0000FF;">'.$name.'</SPAN></li>
    <li>Mail: <SPAN STYLE="color:#0000FF;">'.$mail.'</SPAN></li>
    <li>Auswahl: <SPAN STYLE="color:#0000FF;">'.$auswahl.'</SPAN></li>
    <li>gesendet von: <SPAN STYLE="color:#0000FF;">'.$host.'</SPAN>   <SPAN STYLE="color:#0000FF;">('.$ip.')</SPAN></li>
    <li>Am: <SPAN STYLE="color:#0000FF;">'.$zeit.'</SPAN> Uhr.</li>
    </ul>
    <p>Ein Bestätigungsmail ist unterwegs zu Ihnen!</p>
    ';

    }
    ?>

  • #2
    dass die Schüler nur von ihrer Schuladresse
    Was genau meinst du damit?

    Heisst das, dass nur von Rechnern, die in der Schule stehen das versendet werden darf? Oder dass die eingegebene eMail-Adresse (also $mail) vorgegeben ist?
    Zweiten Fall kannst du durch die String-Funktionen umsetzen. Wahlweise per Regular Expressions oder, wenn du das nicht kannst, schneide die letzten XXXX Zeichen ab und prüfe ob dort das richtige drin steht.

    PHP-Code:
    if (substr($mail, -6) != "@xy.ch") die("Böses Hacker!"); 

    Kommentar


    • #3
      Zitat von peha24 Beitrag anzeigen
      Wie kann ich aus dem eingegebenen Benutzernamen und einer festen Konstante (@xy.ch) die Mail-Adresse generieren, die dann übergeben wird?
      Wenn du nur wissen willst, wie simple Stringverkettung funktioniert, dann bitte hier entlang: http://www.php.de/php-einsteiger/489...nsammlung.html

      Kommentar


      • #4
        HTML-Code:
        Deine Emailadresse: <input type = "text" name = "emailteil">@schule.de
        PHP-Code:
        $email $_POST['emailteil'] . '@schule.de'
        Mails schickt man NICHT mit mail()
        http://www.php.de/adventskalender-20...fverkehrs.html
        http://www.robo47.net/text/38-Mail-ist-tot-es-lebe-mail

        Hier findest du die besprochenen Klassen
        http://sourceforge.net/projects/phpmailer/
        http://swiftmailer.org/
        http://pear.php.net/package/Mail/

        Kommentar


        • #5
          Naja, der erste Link ist ja wohl ein schlechter Witz. Wer (in der Art) formatierte Mails senden möchte und sich dafür ein Formular baut ist ja wohl nicht ganz klar im Kopf...

          Warum man nicht mit mail() sendet? Weil es ganz schnell zur Spam-,.. Schleuder werden kann wenn man nicht weiß, was man macht bzw. einige Lücken nicht dicht macht (zusätzliche Header, beenden des Mail bodies,..).

          Wenn man diese Lücken zu schließen weiß ist mail() optimal, da es einfach ist, genau das kann was man für Webformulare braucht: Nämlich das Versenden von Emails.

          Kommentar


          • #6
            Warum man nicht mit mail() sendet? Weil es ganz schnell zur Spam-,.. Schleuder werden kann wenn man nicht weiß, was man macht bzw. einige Lücken nicht dicht macht (zusätzliche Header, beenden des Mail bodies,..).

            Wenn man diese Lücken zu schließen weiß ist mail() optimal, da es einfach ist, genau das kann was man für Webformulare braucht: Nämlich das Versenden von Emails.
            Nun, dann muss ich für dieses einfache Mail eine Klasse einrichten? Ist hier mail() nicht legitim?
            Dann gehe ich wohl am besten nochmals über die Bücher, ob ich es wirklich so machen will :-/
            @mepeisen: Genau, so etwas hätte ich mir gedacht ...

            Kommentar


            • #7
              mail ist legitim und im Grund macht die vorgeschlagene Klasse nichts anderes. ABER: Gerade mit Umlauten, Sonderzeichen, Dateianhängen, HTML usw. usw. ist die direkte Benutzung der mail Funktion nicht anzuraten.
              mail erwartet immer deine Mail im"Klartext". Dann mir base64 usw. zu hantieren, wie es das Mail-Protokoll numal verlangt, geht in 99% der Fälle schief. Deswegen der Verweis auf diese Klassen, denn die machen vieles richtig, was sonst schief läuft.

              Kommentar


              • #8
                Wenn man diese Lücken zu schließen weiß ist mail() optimal, da es einfach ist, genau das kann was man für Webformulare braucht: Nämlich das Versenden von Emails.
                Wenn du das Rad wieder neu erfinden musst, dann kannst du das so machen.

                Für das Erzeugen einer UTF-8-Mime-Multipart-Mail mit drei Attachements über SMTP brauche ich mit PHPmailer vielleicht 10 Zeilen. Mit der Hand am Arm sind das locker 60 Zeilen. Und wenn du dann noch den geringsten Fehler reinbaust, dann wird die Mail von den Spamfiltern draußen aufgefressen.

                Kommentar


                • #9
                  Mir geht es auch nicht darum, dass man keine fertigen Klassen verwendet, aber wenn du schreibst, dass man Mails NICHT mit mail() schickt und dann diese Links postest...

                  Wenn du mir schreibst man fährt nicht betrunken Auto und dann einen Link postest in dem steht, welche tollen Landschaften man beim Autofahren sehen kann denke ich mir auch "scheiß auf die Landschaften, ich fahre trotzdem"
                  Wenn du aber schreibst es ist gefährlich aus dem und dem Grund dann überlege ich mir das eher.

                  Doofes Beispiel, aber von einer Funktion abzuraten, weil ich dann keine Mails mit grünem Text verschicken kann ist schon "komisch". Ich hoffe, du verstehst was ich meine.

                  Kommentar


                  • #10
                    Naja, der erste Link ist ja wohl ein schlechter Witz. Wer (in der Art) formatierte Mails senden möchte und sich dafür ein Formular baut ist ja wohl nicht ganz klar im Kopf...
                    Ich glaube, Du hast die Botschaft nicht verstanden. Grundlegend geht es da um das Absenden von HTML-Mails. Das sollte man eigentlich abstrahieren können. Zudem wurden weitere Thematiken genannt, wenn auch im gegebenen Rahmen (es war ein Weihnachtsthread, Herrjeh.. ) Und so groß ist der Unterschied zu Deinem Ansatz nun auch wieder nicht.

                    Kommentar


                    • #11
                      Danke euch allen! Ich konnte das so umsetzen und werde den Beitrag als "erledigt" setzen.

                      Kommentar

                      Lädt...
                      X