Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13
  1. #1
    Finkenwerder Herbstprinz
    Themenstarter

    Registriert
    03.2008
    Ort
    Berlin, Germany, Germany
    Beiträge
    463

    PHP Formmailer

    Hallo ihr lieben!

    Ich habe ein Problem mit meinem PHP Formmailer.
    Wahrscheinlich ist es wieder eine der typischen Nichtigkeiten, die man vermeiden kann,
    doch irgendwie stehe ich grad auf dem Schlauch und wäre glücklich, wenn mal einer von euch einen Blick drauf werfen würde:

    Code:
    <?php 
    
    $betreff = "Betreff";  
    
    $to = "meine e-mail adresse"; 
    
    $inhalt = "Name: $1name $2name\n $country\nBetrag min.: $ammin\nBetrag max.: $ammax\nNachricht: $message"; 
    
    mail ("$to", "$betreff", "$inhalt"); 
    header("location: http://www.google.de"); 
    ?>
    Jetzt frage ich mir nur, warum bei mir keine Mails ankommen, die den versprochenen Inhalt haben.
    Google.de wird irgendeine Adresse. Was da hinkommt weiß ich noch nicht.

    Die zweite Frage, die ich gleich anschließen könnte:
    Kann ich einen Text einrichten, der einfach 3 Sekunden lang angezeigt wird und erst DANN die Weiterleitung greift?



    Vielen Dank für jegliche Hilfe.
    Mini-Leo

    You can only take what you can carry.

  2. #2
    lmb
    lmb ist offline
    Welscher Taubenapfel Avatar von lmb
    Registriert
    01.2009
    Ort
    Hüls
    Alter
    16
    Beiträge
    774
    PHP.net sagt:
    Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP.
    Das heisst, header() muss am Anfang stehen, der darauffolgende Code wird nicht ausgeführt.
    BTW sind auch einige Variablen nicht definiert.
    Anbieten würde sich eine Weiterleitung mit JS oder Meta-HTML
    RTFM. Google. Apfeltalk.

  3. #3
    Jerseymac Avatar von creative7even
    Registriert
    02.2005
    Alter
    30
    Beiträge
    454
    Hallo.

    mit dem Header hat das nichts zu tun - die Funktion header():void darf nur dann aufgerufen werden wenn vorher kein Output produziert wurde (kein echo/print oder HTML-Code ausgegeben wurde).

    Auf welchem Server wird das Script ausgeführt? Was liefert ein einfaches Testmail? Kommt es an?
    Code:
    $ret = mail('your.email@foo.com', 'testmail', 'testmessage');
    var_dump($ret);

  4. #4
    Finkenwerder Herbstprinz
    Themenstarter

    Registriert
    03.2008
    Ort
    Berlin, Germany, Germany
    Beiträge
    463
    Hey Leute!

    Ich habs jetzt!
    Mir ist grad einfach einwahnsinnig blöder Fehler aufgefallen.
    Ich hab lediglich eine Variable versehentlich überschrieben :|

    Habe aber jetzt ein neues Problem.
    Ich bekomme zwar eine e-mail vom Server. Allerdings ist diese leider leer.
    Sprich ich bekomme den Inhalt nicht definiert.

    Code:
    <?php 
    
    $betreff = "Anmeldung";
    
    $inhalt = ("Name: " & "$1name" & " " & "$2name" & "\n " & "$country" & "\nBetrag min.: " & "$ammin" & "\nBetrag max.: " & "$ammax" & "\nNachricht: " & "$message");
    
    mail ("[meine mail]", "$betreff", "$inhalt"); 
    
    echo "Vielen Dank für Deine Anmeldung!"
    
    ?>
    Wenn ich den Code umschreibe, also:

    Code:
    <?php 
    
    $betreff = "Anmeldung";
    
    $inhalt = ("Name: $1name $2name\n $country\n Betrag min.: $ammin\ nBetrag max.: $ammax\n Nachricht: $message");
    
    mail ("[meine mail]", "$betreff", "$inhalt"); 
    
    echo "Vielen Dank für Deine Anmeldung!"
    
    ?>
    dann bekomme ich zwar einen Inhalt in der Mail, allerdings nur die Namen der Variablen mit Dollar-Zeichen.
    Irgendwie eigenartig, oder?!

    Kann es sein, dass die Variablen nicht richtig vom Formular (HTML) befüllt werden?
    Wie rufe ich denn die Variablen im PHP auf? Ich sehe nicht im geringsten, dass da der Inhalt irgendwie übergeben wird

    Bei der zweiten Variante bekomme ich folgende Mail:

    Name: $1name $2name

    Betrag min.:
    Betrag max.:
    Nachricht:

    Dankt für Hilfe.
    Geändert von Mini-Leopard (13.03.2010 um 18:29 Uhr)
    Mini-Leo

    You can only take what you can carry.

  5. #5
    Jerseymac Avatar von creative7even
    Registriert
    02.2005
    Alter
    30
    Beiträge
    454
    Strings werden mit einem Punkt verknüpft (nicht mit & -> das wäre ein Bitweises 'AND').
    Ausserdem ist es ein etwas eigenartiger Stil einzelne Variablen unter doppelte Hochkomma zu setzen. Der Inhalt wird zwar - anders als bei einfachen Hochkomma - übersetzt... naja...
    noch angemerkt zum Stil: verwende stets eine Sprache für Kommentare und Variablen (vorzugsweise EN). Variablen dürfen ruhig auch "sprechend" sein.

    der korrekte Code müsste ungefähr so aussehen:
    Code:
    $message = "Name: " . $firstname . " " . $lasntame . "\nBetrag: " . $maxAmount;

  6. #6
    Finkenwerder Herbstprinz
    Themenstarter

    Registriert
    03.2008
    Ort
    Berlin, Germany, Germany
    Beiträge
    463
    Also die Schreibweise der Variablen ist ja mein Ding
    Ich komme so echt gut klar.

    Mit der zweiten Schreibweise geht das auch sehr gut:
    Zitat Zitat von Mini-Leopard Beitrag anzeigen
    Code:
    <?php 
    
    $betreff = "Anmeldung";
    
    $inhalt = ("Name: $1name $2name\n $country\n Betrag min.: $ammin\ nBetrag max.: $ammax\n Nachricht: $message");
    
    mail ("[meine mail]", "$betreff", "$inhalt"); 
    
    echo "Vielen Dank für Deine Anmeldung!"
    
    ?>
    Mein einziges Problem ist, dass in den Variablen scheibar nichts drin steht.
    In meinem vorangegangenen Beitrag ist ja auch ein Zitat der e-mail, die ich vom Server bekomme.
    Sprich die Aufbereitung der e-mail funktioniert ohne Probeme.

    Kann ich irgendwie ein "Warnfenster" in Safari öffnen lassen, um den Inhalt der Variablen vor dem Absenden der Mail zu überprüfen? Ich glaube echt, dass die Variablen einfach leer sind bzw. das Formular (HTML) den Inhalt nicht übergibt!!!!

    Dazu eine Anregung / einen Tipp?


    Danke.
    Mini-Leo

    You can only take what you can carry.

  7. #7
    Finkenwerder Herbstprinz
    Themenstarter

    Registriert
    03.2008
    Ort
    Berlin, Germany, Germany
    Beiträge
    463
    Ich poste jetzt einfach mal die beiden Dateien (formular.html & send.php).

    formular.html:
    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Anmeldung</title>
    </head>
    
    <body>
    
     <br><form action="senden.php" method="post"> 
    <table><tr> 
    <td>Vorname:</td> 
    <td><input type="text" name="1name"></td> 
    </tr> 
    <tr> 
    <td>Nachname:</td> 
    <td><input type="text" name="2name"></td> 
    </tr> 
    <tr> 
    <td>E-Mail:</td> 
    <td><input type="text" name="mail"></td> 
    </tr>  
    <tr> 
    <td>Land:</td> 
    <td><input type="text" name="country"></td> 
    </tr> 
    <td>Betrag min. (optional):</td> 
    <td><input type="text" name="ammin"></td> 
    </tr> 
    <td>Betrag max. (optional):</td> 
    <td><input type="text" name="ammax"></td> 
    </tr> 
    <td>Nachricht (optional):</td> 
    <td><input type="text" name="message"></td>
    </tr> 
    <td><input type="submit" name="senden" value="Apply!"></td> 
    </form> 
    <td></td> 
    <td> 
    </td> 
    </tr> 
    </table> 
    
    </body>
    </html>
    und send.php:
    Code:
    <?php 
    
    $betreff = "Anmeldung";
    
    $inhalt = ("Name: $1name $2name\n $country\n Betrag min.: $ammin\ nBetrag max.: $ammax\n Nachricht: $message");
    
    mail ("[meine mail]", "$betreff", "$inhalt"); 
    
    echo "Vielen Dank für Deine Anmeldung!"
    
    ?>

    Also wenn ich jetzt wirklich zu doof dafür bin, tu ich mir echt leid
    Aber ich finde meinen Fehler einfach nicht, egal, was ich probiere
    Mini-Leo

    You can only take what you can carry.

  8. #8
    Goldparmäne Avatar von torben1
    Registriert
    08.2008
    Ort
    Essen
    Alter
    35
    Beiträge
    560
    Was passiert wenn Du die Variablen mit $_POST['name_im_formular'] ansprichst? Und Teste dann doch die Ausgabe mit echo.
    Dann sollte es funktionieren.

    Torben

  9. #9
    Jerseymac Avatar von creative7even
    Registriert
    02.2005
    Alter
    30
    Beiträge
    454
    Die Formulardaten werden je nach Methode (<form method="post|get">) in die globale PHP-Variable $_GET oder $_POST übertragen (für beide Methoden gibt es $_REQUEST). Mit var_dump($_POST) sollten alle Formulardaten (nachdem deine Form-Methode auf 'post' gestellt ist) angezeigt werden. Der Einzelzugriff erfolgt dann genau so wie torben1 es beschreibt.

  10. #10
    Finkenwerder Herbstprinz
    Themenstarter

    Registriert
    03.2008
    Ort
    Berlin, Germany, Germany
    Beiträge
    463
    Also gehe ich davon aus, dass ich jede einzelne Variable aus dem $_POST ausklammern und die jeweilige Variable befüllen muss.
    Folgender Maßen:

    Code:
    <?php
    
    $1name = $_POST["1name"];
    
    $2name = $_POST["2name"];
    
    $mail = $_POST["mail"];
    und so weiter.

    Wenn ich das allerdings so mache, passiert gar nichts mehr.
    Das Script bleibt einfach stehen und gut ist.
    Mini-Leo

    You can only take what you can carry.

Seite 1 von 2 12 LetzteLetzte

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •