Sido: Kontaktformular mit PHP

Hallo Forumer,

ich würde gerne für meine Homepage ein Kontaktformular in PHP schreiben... ich habe gelesen das dies mit dem Befehl mail(); möglich ist... ich habe folgenden Code damit ausgearbeitet:

<?
$absender = "beispiel@domain.de";
$message = "Test, dies ist ein Test";

mail("meine@domain.de", message, "From: $absender");
?>

ich hab das dann hochgeladen doch irgendwie will es nicht funktionieren. Habt ihr da ne Idee was da falsch ist oder ein anderes Script was funktioniert ?

MFG

Sido

  1. Hallo Forumer,

    hallo!

    mail("meine@domain.de", message, "From: $absender");

    hier ist der fehler: $-zeichen vergessen.
    und ich glaube, man muss den (das?) betreff auch mit angeben, also insg. 4 parameter:
    mail($empfänger, $betreff, $inhalt, "From: abc@abc.de");

    MFG

    Sido

    gruß,
    lindic

    1. Hey...

      mail("meine@domain.de", message, "From: $absender");
      hier ist der fehler: $-zeichen vergessen.

      sorry diesen Fehler habe ich beim schreiben vergessen... in meinem hochgeladenen Script ist und war dieser Fehler nicht nethalten das kann es also nicht sein...

      MFG

      Sido

      1. Hey...

        könnte mir vielleicht jemand eine andere Mehode oder überhaupt was empfehlen was geht ?

        MFG

        Sido

        1. Noch ma,

          ich habe jetzt diesen Quelltext auf meinen Server geladen:

          <?php
          $empfaenger = "Vanel@gmx.de";
          $betreff = "Die Mail-Funktion";
          $from = "From: Testpeter";
          $text = "Es geht";

          mail($empfaenger, $betreff, $text, $from);
          ?>

          und er will einfach nicht funktionieren ich empfange nichts...
          Kann das vielleicht an dem Server liegen ich habe bei domaingo das Premiumpaket gekauft... könnte das daran liegen ?

          MFG

          Sido

          1. Hello,

            dann solltest Du mal deine php.ini z.B. mittels phpinfo() befragen, ob da überhaupt ein Mailer eingetragen ist für PHP.

            Wenn keiner angemeldet ist, siehst Du sowieso alt aus. Dann solltest Du mal über Providerwechsel nachdenken.

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            1. Hello,

              wo soll ich das denn machen... ich seh auf meinem Server keine PHP.ini... dir ist sicherlich bewusst das die Datei auf dem Server steht... und was müsste denn da stehen ?

              MFG

              Sido

              1. Hello,

                wo soll ich das denn machen... ich seh auf meinem Server keine PHP.ini... dir ist sicherlich bewusst das die Datei auf dem Server steht... und was müsste denn da stehen ?

                Das hatte ich Dir gerade geschrieben: nutze die Funktion phpinfo() um Dir die Einstellungen anzeigen zu lassen.

                Irgendwo steht da z.B. dieser Eintrag:

                sendmail_path     /usr/sbin/sendmail -t -i     /usr/sbin/sendmail -t -i

                Das bedeutet aber nicht, dass dein MTA unbedingt "sendmail" sein muss. Dieser Eintrag kann auch auf einen Link zeigen, der dann erst das wahre Mailprogramm angibt. Wichtig ist aber erstmal, dass überhaupt irgendwas eingetragen ist.

                Liebe Grüße aus http://www.braunschweig.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                1. Hallo Tom,

                  ja es steht dort etwas also kann es der Server schonmal... so jetzt muss ich nur noch dasd Script irgdnwie hinbekommen...
                  oder gibt es da noch einen Hacken ? Das Script was ich verwendet habe ich ja schonmal einige Postings davor erwähnt...

                  MFG

                  Sido

                  1. Hello,

                    ja es steht dort etwas also kann es der Server schonmal... so jetzt muss ich nur noch dasd Script irgdnwie hinbekommen...
                    oder gibt es da noch einen Hacken ? Das Script was ich verwendet habe ich ja schonmal einige Postings davor erwähnt...

                    Naja, er ist zumindest darauf vorbereitet. Wenn dort nichts gestanden hätte, hätte man aber sicher sagen können, dass es NICHT geht. Ob der Umkehrschluss erlaubt ist, vermag ich nicht zu sagen.

                    Dann solltest Du jetzt auf jeden Fall mal den Rückgabewert von mail() abfragen:

                    $ok = mail(...);

                    if ($ok === false)
                    {
                      echo "Mailversand missglueckt<br />";
                      echo $php_errormsg;
                    }
                    else
                    {
                      echo "Rueckgabewert: $ok";
                    }

                    oder so ähnlich...

                    Liebe Grüße aus http://www.braunschweig.de

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                    1. Hallo Tom,

                      ich hab es jetzt hinbekommen. Es lag daran das der GMX Spamschutz die versanten Mails abgewehrt hat. So konnte ich sie gar nicht bekommen... Ich hab ihn jetzt deaktiviert...

                      MFG

                      Sido

  2. Moin!

    mail("meine@domain.de", message, "From: $absender");

    $message würde helfen, die Message rüberzubringen.

    Ansonsten: Gibts Fehlermeldungen? Was genau funktioniert nicht? Kommt eine Mail an?

    - Sven Rautenberg

    --
    Die SelfHTML-Developer sagen Dankeschön für aktuell 20885,68 Euro Spendengelder!
    1. Hey...

      $message würde helfen, die Message rüberzubringen.

      War ja auc nur ein Test wenn ich das Script dann richtig einsetzten würde hätte ich da noch Empfänger und Betreff usw. dazugefügt

      Ansonsten: Gibts Fehlermeldungen? Was genau funktioniert nicht? Kommt eine Mail an?

      Nee, tut sie nicht das ist ja das verwunderliche
      ich dachte mir das die Mail vielleicht noch auf dem Server von gmx liegt und erst heut Abend ankommt aber es ist ja nur eine simple HTML-Mail die kann doch nicht so lange brauchen...

      MFG

      Sido

      1. Hi!

        $message würde helfen, die Message rüberzubringen.

        War ja auc nur ein Test wenn ich das Script dann richtig einsetzten würde hätte ich da noch Empfänger und Betreff usw. dazugefügt

        Tja, Du musst das von vornherein richtig machen, sonst funktioniert es nicht wie Du siehst.

        Vergleiche mal:
        http://de3.php.net/function.mail

        mit Deiner Version:
        mail("meine@domain.de", message, "From: $absender");

        Nur zur Sicherheit - "meine@domain.de" hast Du schon angepasst, ja?

        der 2. Parameter ist dem Manual nach das Subject und nicht die Message, das ist der 3., und einen Absender brauchst Du zu Testen nicht.

        Ansonsten: Gibts Fehlermeldungen? Was genau funktioniert nicht? Kommt eine Mail an?

        Nee, tut sie nicht das ist ja das verwunderliche

        Du könntest mal den Rückgabewert von mail() überprüfen, wie es im Manual steht:

        "mail() gibt TRUE zurück, wenn die Mail erfolgreich für den Versand akzeptiert wurde, sonst FALSE."

        Versuche mal das folgende Script (Füge Deine Mailadresse ein):

        <?php
        $mail_versendet = mail("deine@adresse.de", "hier steht der Betreff", "Hier steht der Body\n\nund jetzt: http://de3.php.net/function.mail");

        if ($mail_versendet == TRUE) {
          echo "mail wurde versendet";
        }
        else {
          echo "Fehler: mail wurde <b>nicht</b> versendet";
        }
        ?>

        ich dachte mir das die Mail vielleicht noch auf dem Server von gmx liegt und erst heut Abend ankommt aber es ist ja nur eine simple HTML-Mail die kann doch nicht so lange brauchen...

        Also HTML-Mails sind wieder ein anderes Thema, da muss man nämlich entsprechende Header setzen, sonst liest der empfänger nur HTML-Quelltext. Aber ich würde erstmal überhaupt gucken dass die mail ankommt. Nicht alles auf einmal.

        Grüße
        Andreas

        1. Hi,

          Versuche mal das folgende Script (Füge Deine Mailadresse ein):

          <?php
          $mail_versendet = mail("deine@adresse.de", "hier steht der Betreff", "Hier steht der Body\n\nund jetzt: http://de3.php.net/function.mail");

          if ($mail_versendet == TRUE) {
            echo "mail wurde versendet";
          }
          else {
            echo "Fehler: mail wurde <b>nicht</b> versendet";
          }
          ?>

          So, hab ich gemacht und auch meine Mail dort reingeschriebne alles hochgeladen und irgendiwe will es nicht funktionieren. Es steht zwar die mail wurde versendet nur es ist noch nicht angekommen...

          MFG

          Sido

  3. Hallo,

    schau mal hier:
    http://www.rpgcommunity.de/clanwissen/p_email.php

    Dein Script müsste so aussehen:

    mail("meine@domain.de", "Betreff", "message", "From: $absender");

    MFG
    Andavos

    --
    http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
    1. Hallo,

      mail("meine@domain.de", "Betreff", "message", "From: $absender");

      ja nur ich möchte die Angeben ja aus einem HTML-Formular entnehmen, welches dann auf diese Datei verlinkt... also, auf der verlinkten Seite von dir steht aber auch das man das mit Variablen machen kann genauso wie ich es mir auch vorgestellt habe...

      MFG

      Sido

      1. Hallo,
        jo das geht natrülich auch:
        Auf der Seite steht ja eigentlich alles Beschrieben:

        $meinedomain = "meine@domain.de";
        $betreff = "Betreff";
        $message = "Message";
        $absender = "deine@domain.de";

        mail("$meinedomain", "$betreff", "$message", "From: $absender");

        Und die daten kannst du auch per $HTTP_POST_VARS["..."] aus einem Formular abfragen und zusammen fügen

        MFG
        Andavos

        --
        http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
        1. Hallo Andavos,

          Und die daten kannst du auch per $HTTP_POST_VARS["..."] aus einem Formular abfragen und zusammen fügen

          Bitte! $HTTP_POST_VARS ist schon seit PHP 4.1.0 veraltet. Verwende lieber $POST, etc.

          Schöne Gruß,

          Johannes

          --
          ss:| zu:} ls:[ fo:} de:] va:} ch:) sh:( n4:| rl:( br:< js:| ie:{ fl:( mo:}
          http://www.zeller-johannes.de/
          1. Hallo,

            $POST geht nicht, dafür $_POST.

            Das ist mir auch bekannt, das es veraltet ist, aber es geht ;)
            Außerdem hätte ich $_POST geschrieben, würden wieder andere rumschreiben, das es bei manchen nicht geht

            MFG
            Andavos

            --
            http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
            1. Moin!

              Außerdem hätte ich $_POST geschrieben, würden wieder andere rumschreiben, das es bei manchen nicht geht

              Die Verbreitung von PHP kleiner 4.1 ist relativ gering geworden. Wer diese Version noch einsetzt, sollte mittlerweile wissen, welche Unterschiede es gibt. Dass gewisse Eigenschaften und Funktionen erst ab einer gewissen Version zur Verfügung stehen, ist im Manual ja ausreichend dokumentiert.

              Ich sehe keinen Sinn mehr, für $HTTP_POST_VARS noch Extrawürste zu braten.

              - Sven Rautenberg

              --
              Die SelfHTML-Developer sagen Dankeschön für aktuell 20885,68 Euro Spendengelder!
              1. Hello,

                Außerdem hätte ich $_POST geschrieben, würden wieder andere rumschreiben, das es bei manchen nicht geht

                Ich sehe keinen Sinn mehr, für $HTTP_POST_VARS noch Extrawürste zu braten.

                Ist das eigentlich nur ein Alias oder ist es ein eigenständiger Baum? Hast Du das mal ausprobiert?

                Liebe Grüße aus http://www.braunschweig.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                1. Moin!

                  Ich sehe keinen Sinn mehr, für $HTTP_POST_VARS noch Extrawürste zu braten.

                  Ist das eigentlich nur ein Alias oder ist es ein eigenständiger Baum? Hast Du das mal ausprobiert?

                  Hä? Alias? Baum? Wie meinen?

                  - Sven Rautenberg

                  --
                  Die SelfHTML-Developer sagen Dankeschön für aktuell 20885,68 Euro Spendengelder!
                  1. Hello Sven,

                    Ich sehe keinen Sinn mehr, für $HTTP_POST_VARS noch Extrawürste zu braten.

                    Ist das eigentlich nur ein Alias oder ist es ein eigenständiger Baum? Hast Du das mal ausprobiert?

                    Hä? Alias? Baum? Wie meinen?

                    DIESE Rückfrage von Dir? Das erstaunt mich aber nun!
                    Habs allerdings zwischendurch ausprobiert. Es sind tatsächlich zwei verschiedene "Arrays", also Datenbäume. Die Veränderung in einem der "Arrays" wirkt sich im anderen nicht aus. Das hatte ich bestimmt auch irgendwann schon mal ausprobiert oder nachgelesen oder beides. Aber es war mir nicht mehr im Gedächtnis.

                    Das bringt mich natürlich auf die lästige Frage, wie man denn die Erzeugung von $HTTP_POST_VARS verhindern kann. Schließlich kostet das Speicher. Kann man das irgendwo abschalten?

                    Liebe Grüße aus http://www.braunschweig.de

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                    1. Hallo,

                      @Sven Rautenberg:
                      Die meisten die noch 4.0.5 benutzen, haben nicht viel Ahnung von PHP.
                      Denn wenn man PHP Triad installiert, dann ist da normalerweise noch PHP 4.0.5 dabei.

                      Und was ist an $HTTP_POST_VARS so schlimm??
                      Das geht mit 4.0.5 und mit 4.3.4 ohne Probleme.

                      MFG
                      Andavos

                      --
                      http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
                      1. Hallo!

                        Und was ist an $HTTP_POST_VARS so schlimm??
                        Das geht mit 4.0.5 und mit 4.3.4 ohne Probleme.

                        Es wird aber irgendwann abgeschaltet. Dann laufen die Scripte nicht mehr die das verwenden.

                        Grüße
                        Andreas

                    2. Moin!

                      Ich sehe keinen Sinn mehr, für $HTTP_POST_VARS noch Extrawürste zu braten.

                      Ist das eigentlich nur ein Alias oder ist es ein eigenständiger Baum? Hast Du das mal ausprobiert?

                      Hä? Alias? Baum? Wie meinen?

                      DIESE Rückfrage von Dir? Das erstaunt mich aber nun!

                      Weil du dich nicht wirklich klar ausgedrückt hast, was du meinst.

                      Habs allerdings zwischendurch ausprobiert. Es sind tatsächlich zwei verschiedene "Arrays", also Datenbäume. Die Veränderung in einem der "Arrays" wirkt sich im anderen nicht aus. Das hatte ich bestimmt auch irgendwann schon mal ausprobiert oder nachgelesen oder beides. Aber es war mir nicht mehr im Gedächtnis.

                      Demnach war die Frage gewesen, ob in PHP Versionen >= 4.1.0 die beiden existierenden Variablen $_POST und $HTTP_POST_VARS als Referenz oder als Kopie behandelt werden.

                      Nein, habe ich nie ausprobiert. Ist mir auch egal, ich verwende $_POST & Co.

                      Das bringt mich natürlich auf die lästige Frage, wie man denn die Erzeugung von $HTTP_POST_VARS verhindern kann. Schließlich kostet das Speicher. Kann man das irgendwo abschalten?

                      Wenn, dann wäre es eine Option in der php.ini - für PHP5 gibts das.

                      - Sven Rautenberg

                      --
                      Die SelfHTML-Developer sagen Dankeschön für aktuell 20885,68 Euro Spendengelder!
                      1. Hello,

                        Habs allerdings zwischendurch ausprobiert. Es sind tatsächlich zwei verschiedene "Arrays", also Datenbäume. Die Veränderung in einem der "Arrays" wirkt sich im anderen nicht aus.

                        Demnach war die Frage gewesen, ob in PHP Versionen >= 4.1.0 die beiden existierenden Variablen $_POST und $HTTP_POST_VARS als Referenz oder als Kopie behandelt werden.

                        Klar, wollte mit Dir auch mal "lustiges Fragenraten" spielen ;-)

                        Die andere Frage hat sich auch geklärt:
                        register_long_arrays heißt die Config-Einstellung. Jetzt muss ich nur noch ausprobieren, ob ich das pro virtual Host getrennt regeln kann, da einige uralte Seiten noch mit den Long-Names arbeiten.

                        Und dann würde mich auch noch interessieren, ob uploaded Files auch zweifach vorliegen, oder ob in beiden Arrays der selbe Temporärname drinsteht...

                        Liebe Grüße aus http://www.braunschweig.de

                        Tom

                        --
                        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                2. Hi!

                  Ist das eigentlich nur ein Alias oder ist es ein eigenständiger Baum? Hast Du das mal ausprobiert?

                  Sowas probiert man nicht aus, sondern RTFM ;-)

                  http://de3.php.net/manual/en/reserved.variables.php#reserved.variables.post

                  Grüße
                  Andreas

                  1. Hello Andreas,

                    Ist das eigentlich nur ein Alias oder ist es ein eigenständiger Baum? Hast Du das mal ausprobiert?
                    Sowas probiert man nicht aus, sondern RTFM ;-)
                    http://de3.php.net/manual/en/reserved.variables.php#reserved.variables.post

                    Das wird ja immer schlimmer. Das hatte ich bestimmt auch schon mal gelesen, aber das ganze Manual auswendig zu wissen, ist nicht so mein Ding.

                    Aber da es ja für alle $_POST, $_GET, $_FILES, $_SESSION ... noch die alten Doubletten zu geben scheint, wird mir das Ganze langsam unheimlich. Das kostet ja enorm viel nutzlosen Speicherplatz!

                    Hatte es ja weiter untern schon gefragt: Kann man diesen Unsinn irgendwie unterbinden und abschalten?

                    Liebe Grüße aus http://www.braunschweig.de

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                    1. Hi!

                      Aber da es ja für alle $_POST, $_GET, $_FILES, $_SESSION ... noch die alten Doubletten zu geben scheint, wird mir das Ganze langsam unheimlich. Das kostet ja enorm viel nutzlosen Speicherplatz!

                      Naja, die Apache Prozesse sind ja eh meist 10MB und größer. Hast Du denn  in den Variablen so viele Daten dass es überhaupt so viel ausmacht?
                      Aber prinzipiell hast Du Recht, aber das ist halt der Preis der Abwärtskompatibilität. Wobei man das in der Tat abschaltbar machen könnte.

                      Hatte es ja weiter untern schon gefragt: Kann man diesen Unsinn irgendwie unterbinden und abschalten?

                      AFAIK nein.

                      Grüße
                      Andreas

                      1. Hello,

                        Hatte es ja weiter untern schon gefragt: Kann man diesen Unsinn irgendwie unterbinden und abschalten?
                        AFAIK nein.

                        ...aber ich habs inzwischen gefunden bzw in einem anderen Thread gab es einen Hinweis

                        register_long_arrays heißt die Config-Einstellung. Jetzt muss ich nur noch ausprobieren, ob ich das pro virtual Host getrennt regeln kann, da einige uralte Seiten noch mit den Long-Names arbeiten.

                        http://de2.php.net/manual/en/configuration.directives.php#ini.register-long-arrays

                        Liebe Grüße aus http://www.braunschweig.de

                        Tom

                        --
                        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                        1. Hallo Tom,

                          Hatte es ja weiter untern schon gefragt: Kann man diesen Unsinn irgendwie unterbinden und abschalten?
                          AFAIK nein.

                          ...aber ich habs inzwischen gefunden bzw in einem anderen Thread gab es einen Hinweis

                          register_long_arrays heißt die Config-Einstellung.

                          Nur zur Sicherheit: Dir ist klar, dass dieses Konfigurationsanweisung erst ab Version 5.0.0 verfügbar ist?

                          Schöne Grüße,

                          Johannes

                          --
                          ss:| zu:} ls:[ fo:} de:] va:} ch:) sh:( n4:| rl:( br:< js:| ie:{ fl:( mo:}
                          http://www.zeller-johannes.de/
                          1. Hello Johannes,

                            register_long_arrays heißt die Config-Einstellung.

                            Nur zur Sicherheit: Dir ist klar, dass dieses Konfigurationsanweisung erst ab Version 5.0.0 verfügbar ist?

                            Nein!
                            Das hatte ich leider überlesen.

                            Nun bin ich aber enttäuscht *schnüff*
                            Und ich hab mich schon gewundert, wieso mir das bei phpinfo()-Aufrufen noch nicht begegnet ist...

                            Danke.

                            Liebe Grüße aus http://www.braunschweig.de

                            Tom

                            --
                            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
  4. Hallo,
    wenn wir schon dabei sind: Wie kann man das ganze mit JavaScript machen (mein Server kann kein PHP)?
    MfG
    Inselchef

    1. Moin!

      wenn wir schon dabei sind: Wie kann man das ganze mit JavaScript machen (mein Server kann kein PHP)?

      Gar nicht. Javascript kann nicht mailen.

      - Sven Rautenberg

      --
      Die SelfHTML-Developer sagen Dankeschön für aktuell 20885,68 Euro Spendengelder!
      1. Hallo,

        Gar nicht. Javascript kann nicht mailen.

        Gibt's denn noch was anderes, nicht zu kompliziertes, Client-seitiges?
        Inselchef

        1. Hello,

          Gibt's denn noch was anderes, nicht zu kompliziertes, Client-seitiges?

          Ja: Brieftauben. Aber die können leider auch Viren bekommen...

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen