Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Email senden (https://www.delphipraxis.net/56516-%5Bphp%5D-email-senden.html)

Luckie 14. Apr 2006 16:25

Re: [PHP] Email senden
 
Und wie mache ich das? Ich glaube, das übersteigt etwas meine PHP Kenntnisse.

Daniel 14. Apr 2006 16:29

Re: [PHP] Email senden
 
Ach so. Sorry.

"\n" in einem String repräsentiert einen Zeilenumbruch. Subject wird ja mehr oder weniger ein String sein und dann könntest Du zum Beispiel mit

$subject = string_replace( "\n", '', $_POST['subject'] );

solches Zeug rausfiltern.


Man kann den Spieß auch herumdrehen und über einen regulären Ausdruck alles rausnehmen, was nicht in Ordnung ist:

$subject = preg_replace( "[^a-zA-Z0-9 ]", '', $_POST['subject'] );

Das würde alles rauslöschen, was kein Buchstabe, Zahl oder Leerzeichen ist.

alcaeus 14. Apr 2006 16:34

Re: [PHP] Email senden
 
Hallo Daniel,

gut dass bald Wochenende ist, oder? :zwinker:

Zitat:

Zitat von Daniel
$subject = string_replace( "\n", '', $_POST['subject'] );

Die Funktion heisst in PHP str_replace(), sprechende Namen wie "string_replace" sind eher selten :lol: ;)

Du kannst aber auch den Titel ablehnen wenn \n oder \r im Subject vorkommen; dies kann mit strpos() ueberprueft werden (und schoen brav === bzw. !== verwenden!)

Zitat:

Zitat von Daniel
$subject = preg_replace( "[^a-zA-Z0-9 ]", '', $_POST['subject'] );

Das würde alles rauslöschen, was kein Buchstabe, Zahl oder Leerzeichen ist.

Ja, wuerde es, wenn du denn die Delimiter in die Regexp eingebaut haettest :mrgreen:
Code:
$subject = preg_replace('#[^a-zA-Z0-9 ]#i', '', $_POST['subject']);
Greetz
alcaeus

Luckie 14. Apr 2006 16:35

Re: [PHP] Email senden
 
Ah, besten Dank. Mit diesen Replace-Funktionen habe ich schon mal gekämpft. Ich werde es einbauen.

Daniel 14. Apr 2006 16:38

Re: [PHP] Email senden
 
Ach Andreas,

nu' lass' doch dem Michael auch noch was zum Knobeln.
:mrgreen:

Luckie 14. Apr 2006 16:50

Re: [PHP] Email senden
 
Ich hätte esd ann jetzt so:
Code:
$headers = "MIME-Version: 1.0\n".
   "Content-Type: text/plain; charset=iso-8859-1\n".
   "From: \"".$_POST['yourname']."\" <".$_POST['from'].">\n".
   "To: ".TO." <".TO.">\n".
   "Date: ".date("r")."\n";
   
  $subject = preg_replace('#[^a-zA-Z0-9 ]#i', '', $_POST['subject']);

  $msg = "Name    : ".$_POST['yourname']."\n".
         "E-Mail  : ".$_POST['from']."\n".
         "Betreff : ".$subject."\n\n".$text;
  $msg = stripslashes($msg);

Daniel 14. Apr 2006 16:55

Re: [PHP] Email senden
 
Das, was Du jetzt mit der Subject-Zeile gemacht hast, solltest Du auch noch mit den anderen Daten (from und yourname) machen, weil dort das gleiche Problem existiert.

Luckie 14. Apr 2006 17:00

Re: [PHP] Email senden
 
OK. An was man alles denken muss. :?

Luckie 14. Apr 2006 17:03

Re: [PHP] Email senden
 
Der vollständigkeit halber:
Code:
$headers = "MIME-Version: 1.0\n".
   "Content-Type: text/plain; charset=iso-8859-1\n".
   "From: \"".$_POST['yourname']."\" <".$_POST['from'].">\n".
   "To: ".TO." <".TO.">\n".
   "Date: ".date("r")."\n";
   
  $name = preg_replace('#[^a-zA-Z0-9 ]#i', '', $_POST['yourname']);
  $from = preg_replace('#[^a-zA-Z0-9 ]#i', '', $_POST['from']);
  $subject = preg_replace('#[^a-zA-Z0-9 ]#i', '', $_POST['subject']);

  $msg = "Name    : ".$name."\n".
         "E-Mail  : ".$from."\n".
         "Betreff : ".$subject."\n\n".$text;
  $msg = stripslashes($msg);
Halt, stopp. Jetzt wird ja auch in der Adresse (from) das @ und der Punkt rausgefiltert. Das darf natürlich nicht sein. Desweiteren wird die Absendeadresse ja hier:
Code:
if ((empty($from) || empty($text)) || (!validate_email($_POST['from'])))
  {
     echo "

Bitte füllen Sie mindestens die Felder 'E-Mail Adresse' und 'Text' aus und überprüfen Sie ihre E-Mail Adresse
     auf Gültigkeit.</p>";
  }
  else if (!mail($to, $_POST['subject'], $msg, $headers))
  {
    echo '

Es ist ein Fehler beim Senden der E-Mail aufgetreten.</p>';
  }
  else
  {
    echo '

Die E-Mail wurde erfolgreich gesendet.</p>';
  }
Code:
function validate_email($email)
  {
 
     // Create the syntactical validation regular expression
     $regexp = "^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$";
 
     // Presume that the email is invalid
     $valid = 0;
 
     // Validate the syntax
     if (eregi($regexp, $email))
     {
        list($username,$domaintld) = split("@",$email);
        // Validate the domain
        if (getmxrr($domaintld,$mxrecords))
           $valid = 1;
     } else {
        $valid = 0;
     }
     return $valid;
  }
überprüft.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz