Formmailer mit html-Formular auf einem Server, php-Skript auf einem anderen

Diskutiere mit über: Formmailer mit html-Formular auf einem Server, php-Skript auf einem anderen im Web-Programmierung Forum

  1. marian

    marian Thread Starter MacUser Mitglied

    Beiträge:
    57
    Zustimmungen:
    0
    Registriert seit:
    04.11.2002
    Hallo,

    ich betreue eine kleine Homepage eines kleines Vereins. Diese Homepage befindet sich auf einem Server der nicht php-fähig ist (leider ist der Vertrag auch so dass absehbar die Homepage weiterhin auf dem Server bleibt). Die Email-Adressen die in der Homepage auftauchen sind auch nach dem Motto:
    HTML:
    <a href="mailto:name@provider.net" rel="self">Name</a>
    Ich selber habe ein Vertrag mit einem Provider der mir ein php-fähigen Server zur Verfügung stellt.
    Da in der letzten Zeit vermehrt Spam bei den Email-Adressen des Vereins aufkommt, habe mir gedacht ein Formmailer zu benutzen wo ein Kontakt-Formular auf der Seite des Homepage in als html sich befindet aber "in Verbindung" mit dem php-Skript auf einem anderen Server steht.
    Damit hoffe ich etwas aus der "Hartnäckigkeit" einigen Roboter zu nehmen (da ich ein Anfänger in Web-Programmierung bin, viellleicht bleibt meine Hoffnung nur in Hoffnung-Stadium).
    Ich suche also ein fertigen Skript der lizenzfrei ist und diese Möglichkeit bietet.

    Gesetzt der Fall dass so ein Skript existiert, habe ich noch eine Frage:
    die Problematik Spam und Roboter hat zwei Aspekte (so wie ich verstehe):
    1. Sicherheit des Skripts im Bezug auf seiner Manipulierung für Massen-Spam nach aussen (von irgendwelchen Roboter entarnt und ausgenutzt fürs Versenden des Spam in die "weite Welt").
    2. "gewisse" Sicherheit des Skripts im Bezug auf Entdeckung der Email-Adresse wo die Emails gelangen sollen (und dadurch auch weiterhin Spam an dieser Adresse schickt).
    Was für Sicherheitsmassnahmen sollen für den ersten Punkt getroffen werden?
    Ist für den zweiten Punkt ein Skript empfehlenswert der die Adresse in der php-Code als name@provider.net auftaucht oder könnte man sie auch als
    HTML:
    &# 110;&# 97;&# 109;&# 101;&# 64;&# 112;&# 114;&# 111;&# 118;&# 105;&# 100;&# 101;&# 114;&# 46;&# 110;&# 101;&# 116;
    eingeben oder vielleicht noch besser in einer .txt-Datei woher der Skript die Variablen sich holt?

    Ich bedanke mich für Eueren Antworten und Ratschlägen,
    marian
     
  2. Jakob

    Jakob MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    Registriert seit:
    05.01.2004
    Aus einem normalen formmailer kann ein Spamroboter keine eMail-Adresse auslesen. Die steht ja erst in der PHP-Datei, die auf dem Server ausgewertet wird.

    Ein bestimmtes Mailskript kann ich nicht empfehlen, gibt's wie Sand am Meer. Ich wär für schnell selbst skripten.

    Von DMS habe ich folgendes Skript, eMails einigermaßen zu verschlüsseln:

    Code:
    <head>
    	<script type="text/javascript">
       function genmail(no1,no2,no3) {
          document.write('<a href="mailto:'+no1+'@'+no2+'.'+no3+'">'+no1+'@'+no2+'.'+no3+'</a>');
       }
    </head>
    <body>
    <script type="text/javascript">genmail('name','domain','de');</script>
    </body>
    
    <noscript>
       <div style="display:inline;">na<span style="display:none;">unsichtbar</span>me@doma<span style="display:none;">unsichtbar</span>in.<span style="display:none;">unsichtbar</span>de</div>
    </noscript>
    […]
    
    Für den schnellen Schutz zwischendurch sicher brauchbar.
     
  3. marian

    marian Thread Starter MacUser Mitglied

    Beiträge:
    57
    Zustimmungen:
    0
    Registriert seit:
    04.11.2002
    Danke Jakob. Inzwischen habe ich mich auf die Suche und bei http://thedemosite.co.uk/phpformmailer/ den PHP Form Mailer gefunden.
    Es funktioniert in seinem Ursprungsform sehr gut. Da die Lizenz frei ist, hätte ich noch zwei Fragen:
    1. nach dem Abschicken des Formulars, es wird verbunden mit dem php-fähigen Server und der Skript im Gang gesetzt. In dem original Skript gibt es als "Danke schön" folgendes Code-Stück:
    HTML:
    $success_sent_msg='<p align="center"><strong>&nbsp;</strong></p>
                       <p align="center"><strong>Your message has been successfully sent to us<br>
                       </strong> and we will reply as soon as possible.</p>
                       <p align="center">A copy of your query has been sent to you.</p>
                       <p align="center">Thank you for contacting us.</p>';
    Die obere Meldung kommt allerdings unter der Adresse des Servers wo der Skript sich befindet und der User verlässt so gesehen die Homepage. Da diese HP die HP eines Vereins gehört muss ich damit rechnen dass einige Users nicht so versiert sind und sie werden verunsichert sein (auch wenn die Meldung in deutsch wäre, was ich wohl machen werde wenn keine andere Möglichkeit es gibt). Gibt es eine Möglichkeit das beim erfolgreichen Email-Versand eine "Danke schön"-Seite aus der Homepage zu erscheinen?

    2. In wieweit ist es möglich dass dem Skript einige Variablen eingefügt werden können die dem Adressat einiges über die Umgebung des Anwenders mitteillt (u. U. der Anwender soll auf der Formular-Seite über diese Möglichkeit informiert werden) wie:
    Browser-Software, IP-Adresse, Hostname des Anwenders, Zeit

    Ich bedanke mich im Voraus für die Hilfe. Leider kenne ich mich mit der Programmierung allegemein nicht aus, mit php noch weniger :( . In etwa verstehe ich in dem Code einiges, aber mehr auch nicht.

    Noch einen schönen Tag,
    marian
     
  4. Jakob

    Jakob MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    Registriert seit:
    05.01.2004
    Hab jetzt nur schnell drübergeschaut aber probier mal in der fast letzten Zeile
    PHP:
    echo $success_sent_msg;
    durch
    PHP:
    header("Location: http://www.deineDomain.de/ordner/dankeDatei.html");
    zu ersetzen. Dieser Befehl leitet Deine User wieder auf Deinen Server. Du kannst eine eigene Danke-Datei erstellen.

    Das Weiterleiten funktioniert bloß, wenn sonst nichts anderes auf der PHP-Seite ausgegeben wird.
     
  5. marian

    marian Thread Starter MacUser Mitglied

    Beiträge:
    57
    Zustimmungen:
    0
    Registriert seit:
    04.11.2002
    Danke Jakob, es funktioniert sehr gut.

    Vielleicht hat jemand auch ein Tipp für die Variablen Browser-Software, IP-Adresse, Hostname des Anwenders, Zeit der Absendung die man in php-Skript einbauen könnte um sie dem Adressaten mitgeteillt werden kann.

    Danke,
    marian
     
  6. Hilarious

    Hilarious MacUser Mitglied

    Beiträge:
    2.195
    Zustimmungen:
    5
    Registriert seit:
    25.11.2004
    Diese Werte findest Du im superglobalen Feld »$_SERVER«. Welche für Dich verfügbar sind, siehst Du auch bequem per »phpinfo()«. Hier nur eine kleine Auswahl:
    PHP:
    $_SERVER["REMOTE_ADDR"]
    // zum Beispiel: 192.168.0.20

    $_SERVER["HTTP_USER_AGENT"]
    // zum Beispiel: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; de-de) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3

    $_SERVER["HTTP_REFERER"]
    // zum Beispiel: http://www.google.de/
     
  7. mikne64

    mikne64 MacUser Mitglied

    Beiträge:
    3.097
    Zustimmungen:
    92
    Registriert seit:
    02.04.2004
    Hi,

    mit dem PHP-Befehl gethostbyaddr() kannst Du Dir auch den zugehörigen Hostnamen anzeigen lassen.
    Manchmal kannst Du aber auch HTTP_X_FORWARDED_FOR abfragen.

    Viele Grüße
     
  8. marian

    marian Thread Starter MacUser Mitglied

    Beiträge:
    57
    Zustimmungen:
    0
    Registriert seit:
    04.11.2002
    Hallo,

    ich bedanke mich sehr an Euch. Ihre Tipps konnte ich nach einigen Versuchen in den php-Skript einbauen. Ich habe noch:
    1.
    Code:
    $ip = $_SERVER["REMOTE_ADDR"];
    $host = @gethostbyaddr($_SERVER["REMOTE_ADDR"]);
    $client = $_SERVER["HTTP_USER_AGENT"];
    2. in der "Antwort"-Email nach der Kopie:
    Code:
    Ihre IP-Adresse: $ip ($host)
    Ihr Client: $client
    3. für den Adressat:
    Code:
    $themessage = "Name: $name \nIP: $ip ($host) \nClient: $client \nNachricht: $themessage";
    eingefügt.

    Es funktioniert sehr gut. Nochmal vielen Dank!

    Ich hatte vergessen noch zu fragen woran es liegen könnte dass die Nachrichten die den Adressat und den Anwender erreichen (dem letzten als Bestätigung) in Kleinbuchstaben geschrieben werden. Bei alle meinen Tests wurden die Wörter die groß geschrieben waren in klein gesendet. Allerdings als ich Umlaute in Großbuchstaben geschrieben habe sind sie richtig gesendet.

    Da ich nicht Ahnung mit den php Applikationen habe aber wie ich verstehe auf dem Server wo die php Dateien vorliegen "etwas" schon passiert und vielleicht "was" passiert im Zusammenhang mit den Rechten die diese Dateien (und die Ordner wo sie sich befinden) auf dem Server haben, würde ich noch fragen, wenn das nicht offtopic ist, was für Rechte diese Dateien haben müssen. Denke natürlich an einem eventuellen Misbrauch (aus dem html Code kann man schon lesen wo die php Datei liegt und dann sie vielleicht ändern?).

    Danke Euch wiedermals,
    marian
     
  9. Hilarious

    Hilarious MacUser Mitglied

    Beiträge:
    2.195
    Zustimmungen:
    5
    Registriert seit:
    25.11.2004
    *knifflig*
    In der Regel benötigen die PHP-Skripte keine speziellen Rechte (also 644), da sie nicht wirklich direkt ausgeführt werden, sondern mit Hilfe des PHP-Interpreters und des Apache-HTTP-Servers umgesetzt werden (dies gilt, solange PHP nicht als CGI installiert ist, was inzwischen unüblich geworden ist).
     
  10. marian

    marian Thread Starter MacUser Mitglied

    Beiträge:
    57
    Zustimmungen:
    0
    Registriert seit:
    04.11.2002
    Hallo Hilarious,

    danke für die Tipps, habe ich gleich umgesetzt.

    Was die Kleinbuchstaben betrifft, habe ich nach einigen Funktionen aus dem Code in Google gesucht und ich bin auf dem folgenden String fundig:
    Code:
    return preg_replace($patterns, "", strtolower($value));
    Über strtolower steht in php Manual: Setzt einen String in Kleinbuchstaben um.
    Allerdings es kommen mehrere Fehlermeldung wenn ich diese Funktion aus dem String rausnehme: viermal Wrong parameter count for preg_replace() für die Zeile 28 und eine Cannot modify header information - headers already sent by... für die Zeile 41 (wo eigentlich header("Location: http://www.deineDomain.de/ordner/dankeDatei.html"); steht)
    Diese Code-Zeile (return preg_replace($patterns, "", strtolower($value));) bezieht sich für die anderen die davor sind (wie ich vermute, deswegen kopiere ich die ganze Stelle:
    Code:
    //clean input in case of header injection attempts!
    function clean_input_4email($value, $check_all_patterns = true)
    {
     $patterns[0] = '/content-type:/';
     $patterns[1] = '/to:/';
     $patterns[2] = '/cc:/';
     $patterns[3] = '/bcc:/';
     if ($check_all_patterns)
     {
      $patterns[4] = '/\r/';
      $patterns[5] = '/\n/';
      $patterns[6] = '/%0a/';
      $patterns[7] = '/%0d/';
     }
     //NOTE: can use str_ireplace as this is case insensitive but only available on PHP version 5.0.
     return preg_replace($patterns, "", strtolower($value));
    }
    
    $name = clean_input_4email($_POST["name"]);
    $email = clean_input_4email($_POST["email"]);
    $thesubject = clean_input_4email($_POST["thesubject"]);
    $themessage = clean_input_4email($_POST["themessage"], false);
    
    $error_msg='ERROR - not sent. Try again.';
    Hilarious, das meintest Du dass es knifflig ist?

    Alles was Ihr mir bis jetzt geraten habt, konnte ich irgendwie ein bißchen verstehen, allerdings jetzt in diesem Teil des Codes, da ich von php Syntax keine Ahnung habe (und nicht nur davon :) ) verstehe ich nicht was der Entwickler eigentlich davor wollte damit das ganze in Kleinbuchstaben umgewandelt werden soll.
    Vielleicht hat jemand trotzdem ein Rat.

    Danke,
    marian
     
Die Seite wird geladen...
Ähnliche Themen - Formmailer html Formular Forum Datum
Importieren von Csv-Datei in HTML und Verwenden von Knoten js Web-Programmierung 02.11.2016
Formular direkt ausfüllen mit HTML Web-Programmierung 16.05.2015
HTML Code - Einbindung in Joomla möglich ? Web-Programmierung 15.08.2014
PHP Formmailer akzeptiert keine umlaute ?!? Web-Programmierung 25.02.2013
formmailer: betreff definieren Web-Programmierung 23.11.2005

Diese Seite empfehlen

Benutzerdefinierte Suche