phpmaker: tell-a-friend problem

Hi@ all,
Ich hab jetzt mal so´ne tell-a-friend sache gemacht,
aber wenn ich als Absender und Empfänger meine mail angeben,
und auf Sanden klicke, und davor und danach meine Mails abhole, hab
ich keine Mail bekommen....
Was ist falsch?
code:
<?PHP   @$emailf2 = "$emailf";   //Absender-Email  $email_from_mail = "$mailfselbst";   //Absender-Name  $email_from_name = "$mailfselbst"; ?>
<html>
<head>
<title>Mail</title>
</head>
<?php if(!isset($email_freund)){ ?>
<table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%">
<tr><td align="left" valign="top">
<form action="mail.php" method="post">
<font face="Comic Sans MS,Arial" size="4">Deine E-Mail:
<input type="text" name="mailf"><br>
Mail deines Freundes:
<input type="text" name="mailfselbst"><br>
Nchricht:<br>
<textarea cols="35" rows="5" name="kommentar" readonly>
Hallo! Guck mal was ich für eine coole Star Wars Seite unter
www.Darth-Martin.tk gefunden hab!
Gruß,
</textarea><br>
Dein Name: <input type="text" name="name2"><br>
<input type="submit" value="Tell-a-friend Mail senden" name="submit">
</font>
</form>
</table>
<?php } else{
mail($emailf2,Darth-Martin,$kommentar + $name2);}?>
</body>
</html>

Vielen Dank schonmal!
mgf phpmaker

  1. Hallo phpmaker,

    verstehe ich Dich richtig:

    Du möchtest ein Formular ins Internet stellen, das folgendermassen aufgebaut ist:

    1. Ein Eingabefeld zur Eingabe der Absender-Mailadresse,
    2. ein Eingabefeld zur Eingabe der Empfänger-Mailadresse,
    3. ein Eingabebereich (read-only) mit dem Inhalt der Nachricht,
    4. ein Absendebutton

    Wenn der Benutzer das Formular ausgefüllt hat und auf Absenden klickt,
    willst Du eine Mail versenden mit der angegebenen Absender-Mailadresse an die angegebene Empfänger-Mailadresse mit dem Inhalt, der im Eingabebereich steht.

    Die Spammer werden sich über solch ein Formular sehr freuen. Es lädt zum Missbrauch geradezu ein. Bitte überdenke Dir Dein Konzept.

    Viele Server versenden außerdem keine Mail mehr mit beliebiger Absenderadresse, andere nehmen keine Mail mehr von Rechnern mit Einwahlverbindung, z.B. DSL mit dynamisch zugewiesener IP-Adresse an.

    Dein Code zeigt, dass Du Dich auf die Einstellung

    register_globals = on

    verlässt. Das ist schon lange nicht mehr die Standardeinstellung in der php.ini und nicht mehr empfohlen. Siehe dazu das Kapitel Verwendung von Register Globals im PHP-Handbuch. Du solltest übrigens auch bei register_globals = on keine Variablen verwenden, denen kein Wert zugewiesen ist.

    Freundliche Grüsse,

    Vinzenz

    1. Ich habe php5 mit ergist_globals off,
      und nen Spamschutz ist vorgesehen, du hast alles
      richtig verstanden.
      Gruß, phpmaker
      HILFE!!!!!!!!!!!!!!!!!!!!

      1. Hallo phpmaker,

        Ich habe php5 mit ergist_globals off,

        Du verwendest die Methode "POST".
        Das bedeutet, dass Du auf die übertragenen Parameter über das superglobale Array $_POST zugreifen kannst, z.B. auf den Inhalt eines Eingabefeldes

        <input type="text" name="eingabe">

        mit $_POST['eingabe']. Dabei musst Du überprüfen, ob überhaupt etwas in das Feld eingegeben wurde.

        und nen Spamschutz ist vorgesehen,

        Davon war in Deinem Code nichts zu sehen.

        Ich empfehle Dir die Lektüre von http://php-faq.de/ch/ch-webvariablen.html und http://php-faq.de/ch/ch-security.html.

        Freundliche Grüsse,

        Vinzenz

        1. Hallo,
          Okok,
          Der spam-schutz besteht daraus, das man die Seite nur einmal aufrufen kann, mit session und cokies.
          Den hab ich hier nicht gepostet.....
          Ich möchte einfach nur ein tall-a-friend das funktioniert....
          mit Freundlichen Grüssen,
          phpmaker

          1. Hallo phpmaker,

            Der spam-schutz besteht daraus, das man die Seite nur einmal aufrufen kann, mit session und cokies.

            Der einfachste Spamschutz besteht darin, dass der Mailtext unveränderlich ist, d.h. _nicht_ aus einem Formularfeld stammt.

            Den hab ich hier nicht gepostet.....

            Solltest Du besser :-)

            Ich möchte einfach nur ein tall-a-friend das funktioniert....

            Sollte doch gar nicht zu schwer sein:

            Wenn erster Aufruf der Formularseite
                Zeige Formular an
            Sonst
                Wenn nicht alle erforderl. Felder ausgefüllt
                    Zeige ausgef. Formular mit Hinweisen an
                Sonst
                    Versende Mail und gebe Benutzer Feedback
                Ende Wenn
            Ende Wenn

            Wie Du auf POST-Parameter zugreifst, stand ja in meinem zweiten Posting, beachte bitte den Zusammenhang zwischen Namen von Formularfeldern und POST-Parametern.

            Falls Dir diese Angaben immer noch nicht reichen, suche doch bitte mal nach "Affenformular".

            Freundliche Grüsse,

            Vinzenz

            1. Hi,
              Vielleicht hastes nicht gesehen, das
              Feld ist readonly und vorbelegt.......#
              Gruß, PHPmaker

              1. Hallo,

                Vielleicht hastes nicht gesehen, das
                Feld ist readonly und vorbelegt.......#

                und was soll den User daran hindern, das Forumlar lokal zu speichern, das 'readonly' zu entfernen, einen anderen Text reinzuschreiben und das ganze dann abzuschicken ...?

                Grüße aus Nürnberg
                Tobias

                1. Hallo,

                  Vielleicht hastes nicht gesehen, das
                  Feld ist readonly und vorbelegt.......#
                  und was soll den User daran hindern, das Forumlar lokal zu speichern, das 'readonly' zu entfernen, einen anderen Text reinzuschreiben und das ganze dann abzuschicken ...?

                  Nichts, aber da könnte ers ja auch selbserschreiben,
                  und wenn das vorbelegt wäre, könnte man das ja auch machen.....
                  (Ein weg zum spammen finden die Spammer sowieso...)
                  mgf phpmaker
                  P.S. HILFE!!!!!!!!!!!

                  1. Hallo phpmaker,

                    und was soll den User daran hindern, das Forumlar lokal zu speichern, das 'readonly' zu entfernen, einen anderen Text reinzuschreiben und das ganze dann abzuschicken ...?
                    Nichts, aber da könnte ers ja auch selbserschreiben,

                    das wird er nicht mache, er will ja den Müll schließlich über deinen Webspace verschicken ...

                    und wenn das vorbelegt wäre, könnte man das ja auch machen.....

                    du darfst einfach nicht den Text der über das Formular kommt übernehmen - schreib den Text doch einfach fest ins Script und ignorier das was vom Formular kommt.

                    P.S. HILFE!!!!!!!!!!!

                    du prellst.

                    Grüße aus Nürnberg
                    Tobias

          2. Moin!

            Der spam-schutz besteht daraus, das man die Seite nur einmal aufrufen kann, mit session und cokies.

            Du kannst NIEMALS verhindern, dass eine Seite mehrfach aufgerufen wird. Das ist nun mal Fakt. Du kannst allerhöchstens versuchen zu erkennen, dass derselbe Benutzer die Seite schon einmal aufgerufen hat, und dann nicht noch einmal eine Mail rausschicken. Das aber gestaltet sich höchst schwierig. Cookies sind jedenfalls keine Lösung - ein Spammer wird ein Cookie einfach nicht annehmen und so deinen Schutz vermutlich leicht umgehen können.

            - Sven Rautenberg

  2. hallo..

    <?php if(!isset($email_freund)){ ?>

    ....

    <?php } else{
    mail($emailf2,Darth-Martin,$kommentar + $name2);}?>

    $email_freund kommt in deinem formular nirgends vor (oder übersehe ich das ?) so kann diese variable natürlich nicht gesetzt sein; also wird die mail nicht geschickt.

    gruss,

    tufi