Az alábbi hibával küzdök. Nem vagyok túl erős phpban és nem találom a hibát. Az email elüldésre kerül a honlapról. Megérkezik a mail címre, de a beírt tartalom helyett az undefiened szó jelenik csak meg. Mi a gond?
<form action="php/form-process.php" class="form-contact" id="contactForm" data-toggle="validator">
<div class="form-group">
<input type="text" class="form-control" id="p_name" placeholder="NÉV" required="">
<div class="help-block with-errors"></div>
</div>
<div class="form-group">
<input type="email" class="form-control" id="p_email" placeholder="EMAIL CÍM" required="">
<div class="help-block with-errors"></div>
</div>
<div class="form-group">
<textarea id="p_message" class="form-control" rows="6" placeholder="FELADAT LEÍRÁSA"></textarea>
<div class="help-block with-errors"></div>
</div>
<div class="form-group">
<div id="success"></div>
<button type="submit" class="btn btn-primary">ÁRAJÁNLAT KÉRÉSE</button>
</div>
</form>
<?php
$headers = "Content-Type: text/html; charset=UTF-8";
$errorMSG = "";
// NAME
if (empty($_POST["name"])) {
$errorMSG = "Name is required ";
} else {
$name = $_POST["name"];
}
if (empty($_POST["email"])) {
$errorMSG .= "Email is required ";
} else {
$email = $_POST["email"];
}
// MESSAGE
if (empty($_POST["message"])) {
$errorMSG .= "Message is required ";
} else {
$message = $_POST["message"];
}
$EmailTo = "a@a.hu";
$Subject = "új email érkezett a honlapról";
// prepare email body text
$Body = "";
$Body .= "Nev: ";
$Body .= $name;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $email;
$Body .= "\n";
$Body .= "Üzenet: ";
$Body .= $message;
$Body .= "\n";
// send email
$success = mail($EmailTo, $Subject, $Body, "From:".$email);
// redirect to success page
if ($success && $errorMSG == ""){
echo "success";
}else{
if($errorMSG == ""){
echo "Something went wrong :(";
} else {
echo $errorMSG;
}
}
?>
1. Az űrlap mezőinak nincsen name, email, message értékű name attribútuma, így az űrlapról nem adódik át semmi a feldolgozó PHP-szkriptnek.
2. Felhasználótól érkező adatokat tessék ellenőrizni. Például az e-mailnél ott a filter_var() függvény:
ahol a második paramétere:
legyen
FILTER_VALIDATE_EMAIL
Az üzenet szövegénél pedig szűrd a HTML-t:
nehogy HTML-kódokat csempésszenek az e-mailedbe.
3. Levél tartalmánál sortöréshez használ CRLF-et (\r\n-t), és ne legyen 70 karakternél hosszabb egy sor:
"Each line should be separated with a CRLF (\r\n). Lines should not be larger than 70 characters."
4. Levél küldésére hatékonyabb a PHPMailer:
több beállítási lehetősége van.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!