2016-06-11 4 views
1

Ich versuche, die Werte aus einem Formular zu ziehen und per E-Mail zu senden. Es sendet derzeit nur den $ to- und $ subject-Wert, sendet aber nicht die Header- oder Body-Komponenten. Jede Hilfe wäre willkommen. Formularcode:Ziehen von Werten aus einem Formular mit PHP

<body> 
    <div class="form-style-6" > 
    <h1> <img src="../assets/img/navBar_logo.png" style = " padding-        top: 20px; padding-right:30px; padding-left: 20px;"> Contact Manager</h1>  
    <form action="contactform_email.php" method="get" name="f1"> 
    <input type="text" name="name" placeholder="Name" /> 
    <input type="text" name="email" placeholder="Email" /> 
    <textarea name="message" placeholder=""></textarea> 
    <input type="submit" value="Send" /> 
    </form> 
    </div> 
</body> 

    and the PHP to pull the values 

    <?php 

    $to = "[email protected]"; 
    $subject = "Contact Manager"; 
    $headers = "Reply-To: ".$_GET['email']; 
    $body = "Name : ". $_GET['name']."\n". 
    "Email : ". $_GET['email']."\n". 
    "Message : ". $_GET['message']."\n". 

    mail($to, $subject, $body, $headers); 

    ?> 

    <b>Thank you for applying online! The apartment manager will get back to you shortly.</b> 
+0

Verwenden Sie Post anstelle von get. – C2486

Antwort

0

Denn so viel ich weiß, müssen Sie eine POST-Anfrage verwenden, um ein Textfeld den Inhalt zu bekommen. GET-Anforderungen funktionieren nicht in Abständen und Zeilenumbrüchen, da sie direkt in der URL platziert werden, auf die Ihre Anfrage verweist. Eine POST-Anfrage stellt sicher, dass Ihre Inhalte an Ihre HTTP-Anfrage angehängt werden, sodass Sie alle benötigten Informationen abrufen können.

Beachten Sie auch, dass dieser Code nicht sicher ist und anfällig für Cross Site Scripting ist! Überprüfen Sie immer die Benutzereingaben, bevor Sie sie verarbeiten.

+0

Ich bin neu in PHP. Welche Schritte sollte ich unternehmen, um den Code sicher zu machen? Thx für die Eingabe auch. Habe den Code funktioniert – Rich

+0

Kein Problem. Sehen Sie sich diese Website an: http://www.w3schools.com/php/php_form_validation.asp Bitte kreuzen Sie auch die Antwort an, die Ihnen geholfen hat, Ihren Code zu reparieren, damit auch andere davon lernen können! – Loek

0

Sie haben eine Syntax, die richtig ist, aber tun etwas, das man nicht

$body = "Name : ". $_GET['name']."\n". 
"Email : ". $_GET['email']."\n". 
"Message : ". $_GET['message']."\n". 

mail($to, $subject, $body, $headers); 

will Da Mail-Kontakt mit dem Körper variabel ist, wird er es nicht verwenden, so dass Ihr Code dies ändern:

$body = "Name : ". $_GET['name']."\n". 
"Email : ". $_GET['email']."\n". 
"Message : ". $_GET['message']."\n"; // notice I replaced the dot 

mail($to, $subject, $body, $headers); 

Sie hatten einen Punkt am Ende der Nachricht, die das verursacht hat. Sie können besser POST anstelle von GET,

Da das Senden von E-Mails sehr komplex ist, verwenden Sie eine Bibliothek wie phpmailer oder swiftmailer

0

POST-

<form action="contactform_email.php" method="POST" name="f1"> 

Und in PHP

<?php 
if(isset($_POST)){ 
$to = "[email protected]"; 
$subject = "Contact Manager"; 
$headers = "Reply-To: ".$_POST['email']; 
$body = "Name : ". $_POST['name']."\n". 
"Email : ". $_POST['email']."\n". 
"Message : ". $_POST['message']."\n". 

    mail($to, $subject, $body, $headers); 
    } 
    ?> 
0

Ich stimme mit früheren Antworten über die Verwendung von POST und die Unsicherheit des Coders, sondern um einen Gedanken zu bieten - Sie s Wenn Sie nach dem letzten Formularfeld einen abschließenden Punkt haben möchten, ist das ein Problem, da das nächste Element verkettet werden soll. In diesem Fall handelt es sich um die Mail-Funktion. Es gibt kein abschließendes Semikolon für das $ body-Element:

Ersetzen Sie den Punkt durch ein Semikolon im letzten Teil der verketteten $ body-Anweisung.

"Message : ". $_GET['message']."\n"; 
0

dies tun ... add method = „post“ -Attribut auf das Formular, und in der php, nur um zu testen, müssen Sie diese Zeile: <?php print_r($_POST); ?> - das sollten Sie auf dem richtigen Weg.

Verwandte Themen