Có tương đương với mysql_real_escape_string() để tiêm email không? Tôi có một hình thức mà người dùng gửi email của họ. Tôi sợ rằng ai đó có thể chèn danh sách email được phân cách bằng dấu phẩy và sử dụng trang web của tôi để gửi spam.Chức năng xác thực email PHP
Trả lời
Bạn có thể sử dụng filter_var
để xác nhận địa chỉ email:
if (!filter_var($address, FILTER_VALIDATE_EMAIL)) {
// invalid e-mail address
}
Đơn giản chỉ cần xác nhận lĩnh vực này đối với một biểu thức chính quy thường được tìm thấy cho địa chỉ email duy nhất
function validate_email($e){
return (bool)preg_match("`^[a-z0-9!#$%&'*+\/=?^_\`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_\`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$`i", trim($e));
}
Nếu mối quan tâm chính của bạn là, như câu hỏi nêu rõ, để xác minh rằng người dùng đã không lừa bạn gửi spam cho họ bằng cách nhập danh sách địa chỉ được phân tách bằng dấu phẩy, thì không phải là câu trả lời rõ ràng để kiểm tra xem có bất kỳ dấu phẩy nào trong đầu vào của người dùng không?
Đối với những người có các phiên bản cũ
/*
# PHP Email Validation for versions LESS than PHP 5.2.0)
*/
$strEmail= mysql_real_escape_string($_POST['email_e']);
if (!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$", $strEmail)){
// valid email
} else {
// not a valid email
}
eregi ist khấu hao từ PHP 5.3 – Gerfried
Cảm ơn nhận xét. Dully lưu ý. – TheBlackBenzKid
tôi thấy rằng tốt xác nhận email mà không phải là đơn giản, vì vậy chỉ cần quyết định để kiểm tra xem "@" và "" nằm trong chuỗi.
function email_valid($email){
/* EMAIL VALIDATION, CHECKS IF STRING CONTAINS "@" and "." */
if(strpos($email, "@") AND strpos($email, ".")){
return TRUE;
}
else {
return FALSE;
}
}
P.S. nếu bạn không sử dụng các câu lệnh chuẩn bị PDO để ghi vào cơ sở dữ liệu, BE SURE để lọc ra các biểu tượng có thể gây ra tiêm sql
Bạn ít nhất có thể chắc chắn rằng '.' vị trí lớn hơn '@'. Tuy nhiên tôi nghĩ rằng nó có thể tạo ra một xác nhận tốt hơn với biểu thức regex. – patricia
Thực ra, email thậm chí có thể không chứa ".", Ví dụ:"user @ hostname" trong mạng nội bộ nên hoàn toàn có thể sử dụng được – Victor
@Victor đó là sự thật. Sau một vài năm lập trình kể từ khi tôi trả lời câu hỏi, tôi đã đi đến kết luận rằng nó không đáng để xác thực địa chỉ email hơn ''. Những gì bạn quan tâm là nếu người dùng có thể nhận được email từ bạn, điều này có thể không thực hiện được ngay cả với địa chỉ email hợp lệ, vì vậy việc gửi email xác nhận đơn giản hơn rất nhiều thay vì viết mã xác nhận. – Tomas
Nó sẽ đơn giản hơn để kiểm tra tổng chiều dài chuỗi - tức là phần địa phương tối đa 64 + miền @ + phần tối đa 255 ký tự = 320 ký tự, nhưng sau đó gửi đi các địa chỉ ngắn sẽ vẫn có thể thực hiện được. Tôi hiện đang nghiên cứu xác nhận email cho dự án của mình và tìm thấy bài viết thú vị này email validation giải thích các địa chỉ email hợp lệ và rfc2822. Ở đó, họ đề xuất một cách đơn giản hơn nhiều để xác thực rằng sẽ ngăn chặn các danh sách được phân cách bằng dấu phẩy là một hình thức spam hiệu quả.
$isValid = true;
$atIndex = strrpos($email, "@");
if (is_bool($atIndex) && !$atIndex)
{
$isValid = false;
}
else
{
$domain = substr($email, $atIndex+1);
$local = substr($email, 0, $atIndex);
// ... work with domain and local parts
}
Việc này chỉ đơn giản là ngắt địa chỉ email bằng cách tìm ký hiệu @ cuối cùng và khai báo tất cả mọi thứ trước khi nó là phần địa phương có giới hạn 64 ký tự. Nếu không có ký hiệu @ thì strrpos sẽ trả về giá trị bolean sai. Tôi sẽ sử dụng điều này trong hàm xác nhận của mình.
- 1. Email php xác thực
- 2. Chức năng xác thực email SMTP đơn giản cho php? Ngoài ra, nó có đáng không?
- 3. Xác minh thành công chức năng mail() PHP
- 4. PHP xác nhận email
- 5. NSRegularExpression xác thực email
- 6. PHP DateTime Chức năng
- 7. Tiêu chuẩn xác thực đối số chức năng/phương pháp
- 8. Chức năng của session_module_name chính xác của php là gì?
- 9. Chức năng thư PHP 'từ' địa chỉ
- 10. Chức năng không chặn PHP
- 11. PHP Quên mật khẩu Chức năng
- 12. strptime() chức năng là không xác định
- 13. Chức năng gửi tùy chỉnh sau khi xác thực jQuery
- 14. Xác thực trong Redbean PHP
- 15. Trợ giúp với PHP mail() chức năng
- 16. PHP thiếu chức năng mb_strpos?
- 17. php DateTime createFromFormat chức năng
- 18. Gọi đến chức năng xác định array_column()
- 19. Cách đính kèm PDF vào email bằng chức năng thư PHP
- 20. Chức năng php 'overload' làm gì?
- 21. Gọi để xác định chức năng filter_var()
- 22. Thực hiện Chức năng Hashing MySQL
- 23. chức năng bảo mật và thư() trong php
- 24. Không xác định chức năng sha256()
- 25. PHP - ghi đè chức năng hiện có
- 26. Phantomjs không thực thi chức năng trong page.evaluate chức năng
- 27. Lập trình gửi email từ một chức năng elisp
- 28. PHP: Không thể redeclare lỗi chức năng?
- 29. Xác thực mẫu email cùng một lúc
- 30. Yêu cầu xác thực email jQuery
Đẩy nó qua this regex. –