Seite 2 von 3

Verfasst: 06.12.2005 20:21
von nuunuu
tja.... habs eben ausprobiert.... hoffe mal, ich hab alles richtig gemacht, aber ich bekomme keine mail...

Bye nuunuu

Verfasst: 07.12.2005 08:16
von Martin Truckenbrodt
Hallo,
hast Du das Skript aus dem von mir gepostetem Link genommen?

Gruß Martin

Verfasst: 08.12.2005 14:59
von nuunuu
ja, habe ich!

Bye nuunuu

P.S.: Hier der Code:

Code: Alles auswählen

<!--
  <h1>Abgesichertes E-Mail-Formular</h1>
  <p>Das Skript überprüft alle Formulardaten, die der Anwender eingibt. Für eventuelle Fehler können wir keine Haftung übernehmen. Die Fehlerbehandlung mit die()-Anweisungen ist nicht besonders benutzerfreundlich.</p>
-->
  <?php
 //Gib Fehler und Warnungen aus
 error_reporting(E_ALL);
 //Deutschsprachige Umgebung, damit die
 //regulären Ausdrücke auch Umlaute etc. erkennen
 setlocale(LC_ALL, 'de_DE');
 //Erzeuge einen zufällig aussehenden Zugangscode aus dem Datum ...
 $code = chr((date("y") + 7) % 10 + date("m") + 68 + (date("m") % 2) * 32) . chr((date("d") + (date("d") %2)) / 2 + 66 + (37 * (date("d") %2)));
 //... den der Anwender mittels verborgenem Eingabefeld übergibt.
 //So lässt sich das Gros der skriptgesteuerten Angriffe von
 //vornherein abblocken.
 //Wurde das Formular abgeschickt?
 //Falls ja: Daten prüfen und versenden
 if(isset($_POST['los'])) {
  if(!isset($_POST['code']) || $_POST['code'] != $code) die('Mailcode fehlt!');
  //Liste der zu überprüfenden Formularfelder:
  //'absender' muss genau eine Mailadresse sein,
  //'betreff' ist ein mindestens drei Zeichen langer Text ohne Umbruch,
  //'text' muss zehn Zeichen lang sein.
  $pruefung = array(
   'absender' => '/^[\w.+-]{2,}\@[\w.-]{2,}\.[a-z]{2,6}$/',
   'betreff' => '/^[[:print:]]{3,}$/',
   'text' => '/^[[:print:][:space:]]{10,}$/'
  );
  //Durchlaufe alle Formulardaten:
  foreach($_POST as $parameter => $wert) {
   //Formularfelder, die in $pruefung stehen,
   //müssen in die oben definierten Muster passen
   if(isset($pruefung[$parameter])) {
    if(!preg_match($pruefung[$parameter], $wert)) die('Probleme mit Feld ' . $parameter . ': ' . $wert);
   } else {
    //Der Rest wird weggeworfen.
    unset($_POST[$parameter]);
   }
  }
  //Prüfe, ob die Absenderadresse einem gültigen MX-Host angehört
  //Zu jeder Domain in einer Mailadresse (nach dem @-Zeichen)
  //sollte ein Mail Exchange Resource Record (MX-RR) im Domain Name
  //System (DNS) eingetragen sein. Die MX-Hosts versenden die E-Mail
  //per SMTP. getmxrr() schreibt MX-Hosts in das Array $mxhosts
  //ACHTUNG: Dieser Befehl ist nur auf Unix-Maschinen implementiert,
  //unter anderen Betriebssystemen ist die Zeile zu streichen!
  if(!getmxrr(substr(strstr($_POST['absender'], '@'), 1), $mxhosts)) die("Konnte keine gültige Domain für " . $_POST['absender'] . " finden!");
  //Die Formulardaten sind ok -- der Mailversand wird vorbereitet:
  //mail() erwartet Empfänger, Betreff, Text und weitere Kopfdaten
  if(mail('DennisKlein@gmx.net@gmx.net', $_POST['betreff'], $_POST['text'], "From:" . $_POST['absender'])) {
   //Es hat geklappt: Bestätigung ausgeben
   echo "<p>Nachricht von " . $_POST['absender'] . " an Administrator gesendet!</p>";
  } else {
   //Irgendwas ist schiefgelaufen :-(
   echo "<p>Nachricht konnte nicht gesendet werden!</p>";
  }
 } else {
 //Es wurden keine Formulardaten übergeben ->
 //Gib einen HTML-Block mit dem Formular aus.
?>
  <form method="post" action="">
   <table>
    <tbody>
     <tr>
      <td>
       <label for="name">Name:</label><br/>
      </td>
      <td>
       <input id="absender" name="absender"/>
      </td>
     </tr>
	  <tr>
		<td>
       <label for="absender">Email-Adresse::</label><br/>
      </td>
      <td>
       <input id="absender" name="absender"/>
      </td>
     </tr>
     <tr>
      <td>
       <label for="betreff">Betreff:</label><br/>
      </td>
      <td>
       <input id="betreff" name="betreff"/>
      </td>
     </tr>
     <tr>
      <td>
       <label for="text">Nachricht:</label><br/>
      </td>
      <td>
       <textarea id="text" name="text" rows="3" cols="40">
       </textarea>
       <input type="hidden" id="code" name="code" value="<?php echo($code); ?>"/>
      </td>
     </tr>
     <tr>
      <td></td>
      <td>
       <input type="submit" name="los" value="Abschicken!"/>
      </td>
     </tr>
    </tbody>
   </table>
  </form>
<?php
 //Schließt die if-else-Schleife
 }
?>

Verfasst: 08.12.2005 15:52
von Martin Truckenbrodt
Hallo,

DennisKlein@gmx.net@gmx.net

Gruß Martin

Verfasst: 08.12.2005 16:31
von nuunuu
omg....
ok, hab mir den Code auch net mehr angesehen...

Bye nuunuu

€dit: also, jetzt klappt es!!!
THX martin!!!

Verfasst: 09.12.2005 16:56
von nuunuu
komisch. es klappt net mehr! ich hab genau das selbe Formular auf 2 Seiten eingefügt. auf der einen geht es, auf der anderen nicht. warum???

Bye nuunuu

Verfasst: 09.12.2005 16:56
von nuunuu
komisch. es klappt net mehr! ich hab genau das selbe Formular auf 2 Seiten eingefügt. auf der einen geht es, auf der anderen nicht. warum???
Und auf der Seite, auf der es gehen soll, geht es eben net.

Bye nuunuu

Verfasst: 10.12.2005 14:04
von Martin Truckenbrodt
Hallo,
alles beim selben Provider?

Gruß Martin

Verfasst: 11.12.2005 22:43
von nuunuu
nein, das eine, wo es klappt is bei funpic, und bei pytal klappt es leider nicht...

Bye nuunuu

Verfasst: 11.12.2005 22:47
von Martin Truckenbrodt
Hallo,
und was sagen die von pytal?
PHP mail() Funktion nicht nutzbar?

Nutzt Du jeweils die selbe Versender EMailadresse für alle drei Installationen?

Gruß Martin