Tôi có một biểu mẫu liên hệ bên dưới và khi tôi gửi biểu mẫu liên hệ, nó sẽ gửi cho tôi một trang khác có nội dung Tin nhắn của bạn đã được gửi! nhưng tôi không muốn điều đó nên tôi chỉ cần hiển thị một thông báo đơn giản bên trong biểu mẫu liên hệ có nội dung Tin nhắn của bạn đã được gửi và tôi rất mới bắt đầu với PHP và các ngôn ngữ phụ trợ khác, vì vậy nếu ai đó giúp tôi thì điều này sẽ đánh giá rất cao.
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$formcontent= " From: $name, \n Email: $email \n Message: $message";
$recipient = "[email protected]";
$subject = "New Email";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error");
echo "Your Message was sent !";
?>
<form method="POST" action="contact-form.php">
<input name="name" type="text" class="message" placeholder="Name" />
<input name="email" type="text" class="message" placeholder="Email" />
<textarea name="message" class="message" placeholder="Your Message"></textarea>
<input type="submit" value="SUBMIT"/>
</form
Đã rất lâu rồi tôi mới xem php và tôi chưa bao giờ biết rõ về nó, nhưng tôi nghĩ rằng những gì bạn muốn làm là loại bỏ contact-form.php
từ mẫu action
và thay vào đó hãy để tập lệnh php của bạn xem POST
nộp hồ sơ.
Nếu bạn để trống hành động, nó sẽ đăng (gửi biểu mẫu) lên cùng một trang.
Điều đầu tiên bạn cần làm là kiểm tra xem biểu mẫu đã được gửi hay chưa, trước khi nhận các giá trị, thử gửi email và đăng thông báo phản hồi. Cách dễ nhất là kiểm tra xem nút gửi đã được gửi chưa:
if(isset($_POST["submit"])) {
// process form data, send email, output message
}
Bạn cũng nên đảm bảo rằng bạn đang xóa dữ liệu đến từ một biểu mẫu để đảm bảo không có mã độc trong đó. (Xem SQL injection và XSS Scripting)
PHP sẽ không tự động điền lại biểu mẫu HTML, vì vậy đó là điều bạn phải tự làm:
<input value="<?=$email?>" ..... />
Tôi tin rằng thuộc tính giá trị sẽ ghi đè thuộc tính giữ chỗ. Và tùy thuộc vào cách bạn thiết lập mọi thứ, bạn có thể phải kiểm tra xem có tồn tại giá trị cho $email hay không trước khi sử dụng:
<input value="<?php if(isset($email)) print $email ?>" ..... />
Bạn cũng có thể thử xử lý dữ liệu thông qua lệnh gọi Ajax. Có một tin nhắn được định dạng độc đáo cho biết tin nhắn đã được gửi khi vẫn ở trên trang hiện tại.