Loading...   Upload Image

eigener Formmailer klappt nichtForum » Webzone » PHP & MySQL » eigener Formmailer klappt nicht

Neues Thema verfassen Neues Thema

  • NiniEngelUser ist offline
    Newbie


    NiniEngel

    Registriert: 09.08.2009
    Beitraege: 18

    22.08.2009 um 18:37 Uhr

    Da ich leider hier kein Tutorial zu einem eigenen Formmailer gefunden habe, bin ich natrlich im Internet auf die Suche gegangen. Habe auch eine recht einfache Anleitung gefunden.
    Habe alles so gemacht, wie es in der Anleitung steht -> www.webmaster-portal.de/Tutorial_9_Webmaster.html (allerdings habe ich die HTML Seiten bei mir in PHP Seiten gendert, damit es in meine Homepage passt... sprich, ich hab den ganzen Mist mit "html body usw." einfach weggelassen, das braucht man ja beim includen nicht.

    Das abschicken klappt auch und die Dankeseite erscheint auch, nur kommt in meinem Emailpostfach keine Mail an.

    Hier ist nochmal meine Seite, damit ihr euch das vielleicht anschauen knnt -> www.little-strange.de/contact.php

    Ich sag schon mal Danke!! Kuss
    Nini

    PS: Achja, auerdem habe ich leider nichts darber gefunden, wie ich einen Dateiupload einbinde. Muss ich da einfach nur

    <input type="file">
    einfgen? Irgendwie kommt mir das zu einfach vor.
    Argh, ich bei mir gleich den Arm ab.



    Der Beitrag wurde insgesamt 1 mal editiert, zuletzt 22.08.2009 um 18:52 Uhr ...
  • AliceUser ist offline
    Admin


    Alice

    Registriert: 14.12.2006
    Beitraege: 1058

    22.08.2009 um 21:22 Uhr

    Hallo,

    mit dem Link zur Seite kann ich da nicht viel anfangen, ich braeucht den Code, sonst kann ich da recht wenig zu sagen ;)

    Liebe Gruesse
    Alice



    ... { signatur } ...
  • NiniEngelUser ist offline
    Newbie


    NiniEngel

    Registriert: 09.08.2009
    Beitraege: 18

    22.08.2009 um 22:48 Uhr

    Hihi stimmt, ist ja logisch. Tut mir leid. Warte, hier ist der Code von der Contactseite:

    <?php include("head.php");?>
    
    <!--------------INHALT----------------->
    
    
    <div class="title">Contact</div>
    <form action="mail.php" method="post">
    <table border="0" width="500" cellspacing="0" cellpadding="0" align="center">
     <tr>
      <td width="200">Name <b>*</b></font></td>
      <td width="300"><input type="text" name="name"></td>
     </tr>
     <tr>
      <td height="15" colspan="2"></td>
     </tr>
     <tr>
      <td width="200">Telefon</td>
      <td width="300"><input type="text" name="telefon"></td>
     </tr>
     <tr>
      <td height="5" colspan="2"></td>
     </tr>
     <tr>
      <td width="200">Telefax</td>
      <td width="300"><input type="text" name="telefax"></td>
     </tr>
     <tr>
      <td height="15" colspan="2"></td>
     </tr>
     <tr>
      <td width="200">eMail <b>*</b></td>
      <td width="300"><input type="text" name="email"></td>
     </tr>
     <tr>
      <td height="15" colspan="2"></td>
     </tr>
     <tr>
      <td width="200" valign="top">Mitteilung <b>*</b></td>
      <td width="300"><textarea cols="30" rows="10" name="text"></textarea></td>
     </tr>
     <tr>
      <td height="15" colspan="2"></td>
     </tr>
     <tr>
      <td width="200">Formular</td>
      <td width="300"><input type="submit" value="Senden"></td>
     </tr>
     <tr>
      <td height="15" colspan="2"></td>
     </tr>
     <tr>
      <td width="200"></td>
      <td width="300"><b>*</b> - notwendige Angaben!</td>
     </tr>
    </table>
    </form>
    
    <!--------------INHALT ende----------------->
    
    <?php include("foot.php");?>





    Dann kommt hier der Code von der Mailseite (also mail.php)


    <?php
     $empfaenger = "nini@little-strange.de";
     $betreff = "Contact";
     $mailtext = "Name: $name
     Telefon: $telefon
     Telefax: $telefax
     eMail: $email
     Betreff: $auswahl
     Mitteilung: $text";
     if(empty($name) || empty($email) || empty($text))
     {
     header("Location: danke_fehler.php");
     }
     else
     {
     mail("$empfaenger", "$betreff", "$mailtext", "From: $email");
     header("Location: danke.php");
     }
     ?> 



    Die von der Dankeseite brauchst du glaub ich nicht, weil das ist ja eigentlich ne ganz normale Seite. Die funktionierte auch (:

    So msste dir das eigentlich was sagen. Tut mir leid, wegen meiner Doofiheit (:
    Kuss
    Nini



  • AliceUser ist offline
    Admin


    Alice

    Registriert: 14.12.2006
    Beitraege: 1058

    22.08.2009 um 23:39 Uhr

    $from = "From: EMAILADRESSEn";
    mail($empfaenger, $betreff, $mailtext, $from);

    Dann klappts auch mit dem Nachbarn Verschicken ;)



    ... { signatur } ...
  • NiniEngelUser ist offline
    Newbie


    NiniEngel

    Registriert: 09.08.2009
    Beitraege: 18

    22.08.2009 um 23:50 Uhr

    Also muss ich das dann so einbinden:

    <?php
    $empfaenger = "nini@little-strange.de";
    $betreff = "Contact";
    $mailtext = "Name: $name
    Telefon: $telefon
    Telefax: $telefax
    eMail: $email
    Betreff: $auswahl
    Mitteilung: $text";
    if(empty($name) || empty($email) || empty($text))
    {
    header("Location: danke_fehler.php");
    }
    else
    {
    $from = "From: EMAILADRESSEn";
    mail($empfaenger, $betreff, $mailtext, $from);
    header("Location: danke.php");
    }
    ?> 



    *am Kopf kratz*
    Ich weiss, ist wahrscheinlich eine doofe Frage, aber was muss ich denn dann als
    $from = "From: EMAILADRESSEn";
    EMAILADRESSEN eingeben?
    Oder soll das so bleiben? Kommt da meine rein... nee, oder? Weil wre ja nicht "from" XO :C

    PS: Achja und sind die Anfhrungszeichen unwichtig? Kann man die einfach weglassen?


    ... hab jetzt alles ausgetestet. Ich glaub, ich bin zu doof. Nichts funktioniert.



    Der Beitrag wurde insgesamt 2 mal editiert, zuletzt 23.08.2009 um 01:42 Uhr ...
  • AliceUser ist offline
    Admin


    Alice

    Registriert: 14.12.2006
    Beitraege: 1058

    23.08.2009 um 08:17 Uhr

    Kennst du eigentlich das PHP Manual?
    Das ist ein prima Nachschlagewerk, gerade fuer so haeufig gebrauchte Befehle wie mail(); ...

    Und ja die Doubleqoutes(";) sind wichtig, gehoeren da aber NUR hin,
    wenn keine Variable uebergeben wird, sonst wird die Variable als String behandelt, sprich der Empfaenge haette bei dir $empfaenger gelautet, der Betreff $betreff usw.

    Variablen werden bei mail();, und vielen anderen Befehlen auch, ohne DQ gehandhabt ;)

    $from = "From: EMAILADRESSEn";

    War als Beispiel gedacht und muesste bei dir lauten:
    $from = "From: ".$email."";

    Ich wuerde das Script allerdings so niemals einsetzen, ohne vorher Usereingaben gefiltert zu haben, da Formmailer gerne missbrauch werden ...

    Denn wenn man da jetzt z.B. "/r/nbcc: emails@email.com" ins Feld schreiben wuerde, dann wuerde die Mail auch an emails@mail.com verschickt werden, was sicherlich nicht nach deinem Geschmack waere ...

    Weiterfuehrende Links:
    www.dislabs.de/index.php?ac=labor&sub=5&id=16
    www.damonkohler.com/2008/12/email-injection.html

    Liebe Gruesse
    Alice



    ... { signatur } ...
  • NiniEngelUser ist offline
    Newbie


    NiniEngel

    Registriert: 09.08.2009
    Beitraege: 18

    23.08.2009 um 20:25 Uhr

    Nein, das PHP Manual kannte ich nicht. Aber hab mir den Link angeschaut und glaube, dass ich das verstehe. Das heisst also praktisch, dass jemand das Formular "hacken" kann und deswegen muss diese Reloadsperre rein.

    Hab das aber erstmal gelassen und den Code von dir hineingefgt. Der sieht jetzt so aus:

    <?php
    $empfaenger = "nini@little-strange.de";
    $betreff = "Contact";
    $mailtext = "Name: $name
    Telefon: $telefon
    Telefax: $telefax
    eMail: $email
    Betreff: $auswahl
    Mitteilung: $text";
    if(empty($name) || empty($email) || empty($text))
    {
    header("Location: danke_fehler.php");
    }
    else
    {
    $from = "From: ".$email.";
    mail($empfaenger, $betreff, $mailtext, $from);
    
    header("Location: danke.php");
    }
    ?>


    Doch nun geht es gar nicht mehr. Wenn ich meine Eingaben gemacht habe, werde ich auf die Seite mail.php weitergeleitet *lol*
    Ich glaub, ich werd noch verrckt. Ist mir schon richtig peinlich.



  • AliceUser ist offline
    Admin


    Alice

    Registriert: 14.12.2006
    Beitraege: 1058

    23.08.2009 um 22:28 Uhr

    Die Reloadsperre ist eigentlich nur dazu da, dass man ueber das Formular nicht massenweise Nachrichten verschickt, viel viel wichtiger ist die Ueberpruefung der Usereingaben, damit nicht jeder Depp dahergegen kann, um dein Script fuern Spamversand nutzen zu koennen!

    => Kontaktformulare absichern

    So funktionierts auf alle Faelle ;)

    <?php // include("head.php");?>
    
    <!--------------INHALT----------------->
    
    <?php
    
    if(isset($_POST['submit'])){
    
    	$name = get_magic_quotes_gpc() ? stripslashes($_POST['name']) : $_POST['name']; 			// Name
    	$email = get_magic_quotes_gpc() ? stripslashes($_POST['email']) : $_POST['email']; 			// Emailadresse
    	$telefon = get_magic_quotes_gpc() ? stripslashes($_POST['telefon']) : $_POST['telefon']; 	// Telefon
    	$telefax = get_magic_quotes_gpc() ? stripslashes($_POST['telefax']) : $_POST['telefxa']; 	// Telefax
    	$text = get_magic_quotes_gpc() ? stripslashes($_POST['text']) : $_POST['text']; 			// Nachricht
    
    	if(empty($name) || empty($email) || empty($text)){ // Sofern nicht alles angegeben
    		$message .=  "Bitte danke alle benoetigten Felder ausfuellen ...<br />"; $error = "1";
    	}
    	
    	if(!(eregi("^[A-Za-z0-9]", $name)) OR (eregi("n|r", $name))){ // Name pruefen
    		$message .=  "Der Name enthaelt unzulaessige Zeichen ...<br />"; $error = "1";
    	}
    		
    	if (!(eregi("^.+@.+..+$", $email)) OR (eregi("n|r", $email))){ // Email auf korrektheit pruefen
    		$message .=  "Die Emailadresse scheint nicht korrekt zu sein ...<br />"; $error = "1";
    	}		
    
    	if($error == "1"){ // Fehlermeldung ausgeben
    	
    		echo "<h2>Error ...</h2><p>".$message."</p>";
    	
    	}else{  // Wenn kein Fehler war
    	
    		// Mailtext ...		
    		$mailtext = "Name: $name\n";
    		$mailtext.= "Telefon: $telefon \n";
    		$mailtext.= "Telefax: $telefax \n";
    		$mailtext.= "eMail: $email \n\n";
    		$mailtext.= "Mitteilung: $text\n";
    		
    		// Mail verschicken
    		if(mail("nini@little-strange.de", "Contact", $mailtext, "From: ".$email)){
    			header("Location: danke.php"); // Weiterleitung
    		}
    	} // close fehler
    } // close submit
    ?>
    
    <div class="title">Contact</div>
    <form action="" method="post">
    <table border="0" width="500" cellspacing="0" cellpadding="0" align="center">
    <tr>
    <td width="200">Name <b>*</b></font></td>
    <td width="300"><input type="text" name="name"></td>
    </tr>
    <tr>
    <td height="15" colspan="2"></td>
    </tr>
    <tr>
    <td width="200">Telefon</td>
    <td width="300"><input type="text" name="telefon"></td>
    </tr>
    <tr>
    <td height="5" colspan="2"></td>
    </tr>
    <tr>
    <td width="200">Telefax</td>
    <td width="300"><input type="text" name="telefax"></td>
    </tr>
    <tr>
    <td height="15" colspan="2"></td>
    </tr>
    <tr>
    <td width="200">eMail <b>*</b></td>
    <td width="300"><input type="text" name="email"></td>
    </tr>
    <tr>
    <td height="15" colspan="2"></td>
    </tr>
    <tr>
    <td width="200" valign="top">Mitteilung <b>*</b></td>
    <td width="300"><textarea cols="30" rows="10" name="text"></textarea></td>
    </tr>
    <tr>
    <td height="15" colspan="2"></td>
    </tr>
    <tr>
    <td width="200">Formular</td>
    <td width="300"><input type="submit" value="Senden" name="submit"></td>
    </tr>
    <tr>
    <td height="15" colspan="2"></td>
    </tr>
    <tr>
    <td width="200"></td>
    <td width="300"><b>*</b> - notwendige Angaben!</td>
    </tr>
    </table>
    </form>
    
    <!--------------INHALT ende----------------->
    
    <?php // include("foot.php");?>



    Der Beitrag wurde insgesamt 1 mal editiert, zuletzt 23.08.2009 um 22:30 Uhr ...
    ... { signatur } ...
  • NiniEngelUser ist offline
    Newbie


    NiniEngel

    Registriert: 09.08.2009
    Beitraege: 18

    23.08.2009 um 22:49 Uhr

    Du bist ein Schatz!!! Ich danke dir eine Millionen mal!!!
    Ich werd das gleich mal austesten gehen.
    Ja, ich dachte mir schon, dass das mit Mailrobots zu tun hat... oki...
    DANKE!!!!

    /edit
    Also die Seite sieht gut aus... aber es klappt noch nicht ganz. Habe alle ntigen Angaben gemacht und nun kommt die Fehlermeldung:
    Der Name enthaelt unzulaessige Zeichen
    Die Emailadresse scheint nicht korrekt zu sein
    obwohl ich ja ganz normal alles eingetragen hab.
    Hab deinen Code mit einem anderen verglichen und kann keinen Fehler entdecken, ausser dass ein Code so ist:

    if ( (!(eregi('^[a-z0-9_\.-]+@[a-z0-9_-]+\.[a-z0-9_\.-]+$'


    und du das so hast

    if(!(eregi("^[A-Za-z0-9]", $name)) OR (eregi("n|r", $name))){ // Name pruefen 



    Der Beitrag wurde insgesamt 1 mal editiert, zuletzt 23.08.2009 um 23:08 Uhr ...
  • AliceUser ist offline
    Admin


    Alice

    Registriert: 14.12.2006
    Beitraege: 1058

    24.08.2009 um 08:14 Uhr

    Mhh, ja ich seh grad, mein Forum hat da ein paar / gefuttert ...

    Bei den Zeilen fehlte etwas:

    if(!(eregi("^[A-Za-z0-9]", $name)) OR (eregi("\n|\r", $name))){ // Name pruefen
    $message .= "Der Name enthaelt unzulaessige Zeichen ...<br />"; $error = "1";
    }

    if (!(eregi("^.+@.+\\..+$", $email)) OR (eregi("\n|\r", $email))){ // Email auf korrektheit pruefen
    $message .= "Die Emailadresse scheint nicht korrekt zu sein ...<br />"; $error = "1";
    }



    ... { signatur } ...

[ 1 ] 2 » ... Letzte » Seite 1 von 2


       ALL-INKL.COM - Webhosting Server Hosting Domain Provider