2012-11-30 3 views
6

Tôi phải sao chép trang web hiện tại của mình cho mục đích thử nghiệm tại nhà. Tôi đã được sự cho phép của công ty.Làm cách nào để đảm bảo rằng tôi không gửi bất kỳ email nào cho khách hàng từ trang web thử nghiệm trong php

Nhưng trong cơ sở dữ liệu tôi có hơn 10.000 bản ghi khách hàng bằng email. Tôi không muốn vô tình gửi bất kỳ email nào cho họ trong khi tôi thực hiện một số mớ hỗn độn với trang web trong các thử nghiệm khác nhau.

whats cách tốt nhất để tránh điều đó

tôi cần các chức năng email để thử nghiệm công cụ khác

+2

Đơn giản! Làm trống cơ sở dữ liệu người dùng chỉ giữ email của riêng bạn (và có thể là các dev khác) trong đó – Dale

+0

Ngoài ra, hãy định cấu hình máy chủ phát triển để không gửi thư đến "bên ngoài". –

+0

Hãy để tôi vội vã thêm tôi có nghĩa là bản sao cục bộ của cơ sở dữ liệu không phải là bản sao sản xuất :) – Dale

Trả lời

7

Phương pháp chống giả mạo nhất mà bạn có thể sử dụng thường là tốt nhất cho những thứ này vì tất cả chúng ta đều có những ngày có thể xảy ra sự cố. Tốt nhất là hãy cẩn thận, thậm chí là hoang tưởng đường biên giới, khi một sai lầm thực sự có thể làm hỏng ngày của bạn.

Dưới đây là một vài phương pháp có thể làm việc:

Bất Lực Cấu hình theo Mặc định

Hệ thống hoàn toàn an toàn nhất là để giữ cho các cấu hình máy chủ SMTP cho máy chủ sản xuất trên máy chủ sản xuất và chỉ trên máy chủ sản xuất. Bản sao phát triển của bạn sẽ có một số cấu hình SMTP khác, như một tài khoản SMTP GMail thử nghiệm. Thông thường, GMail giới hạn bạn đến 500 email mỗi ngày trên các tài khoản thông thường, do đó bạn sẽ nhanh chóng đạt đến giới hạn này nếu bạn thực sự vặn vẹo mọi thứ bằng cách nào đó.

Thay email khách hàng trong cơ sở dữ liệu

Một điều cần xem xét là chà kỹ tất cả các email của khách hàng trong cơ sở dữ liệu của bạn, loại bỏ chúng và thay thế chúng bằng [email protected][email protected] nếu bạn quan tâm để thực sự tiếp nhận và kiểm tra chúng, lấy lợi thế của thực tế là + và nội dung tiếp theo bị bỏ qua để gửi tới Gmail, cho phép bạn cung cấp cho bạn địa chỉ email tiềm năng không giới hạn.

Như một ví dụ:

UPDATE customers SET email=CONCAT('mytestaccount+', customer.id, '@gmail.com') 

Bạn sẽ phải tùy chỉnh này để được bất cứ điều gì địa chỉ email mà bạn muốn. Một lợi thế để làm điều này là bạn sẽ không có một danh sách có giá trị của các địa chỉ email của khách hàng ngồi trên ổ đĩa phát triển của bạn và bất kỳ sao lưu liên quan của nó. Để được triệt để bạn nên có lẽ tranh giành mật khẩu băm cũng như vậy cơ sở dữ liệu về cơ bản là vô giá trị cho các tin tặc tiềm năng. Quá nhiều lần mật khẩu được lấy từ các bản sao lưu không được bảo mật đúng cách.

Render email khách hàng Undeliverable

Cách tiếp cận tốt nhất tiếp theo là thêm".test" đến hết mỗi email trong hệ thống bạn không muốn gửi để nó sẽ bị gửi trả lại thay vì đi đến hộp thư của một ai đó

này về cơ bản là một lớp lót:.

UPDATE customers SET email=CONCAT(email, '.test') 

Over-Ride email tại Thời gian giao hàng

bạn luôn có thể bao gồm một số logic có điều kiện như nơi bạn sẽ cố tình thay thế người nhận thông báo email. Điều này có thể nguy hiểm vì có một cơ hội mà bạn có thể vô hiệu hóa chuyển đổi điều đó bằng cách tai nạn, mặc dù vậy, luôn luôn, hãy cẩn thận.

Trong thực tế này trông giống như sau:

if ($i_should_not_spam_customer_accounts_accidentally) 
{ 
    $mail->to = "[email protected]" 
} 

Sử dụng một API Service

Driven Một số cung cấp dịch vụ thư có một API có thể giúp bạn khi kiểm tra các tin nhắn email. Tôi là người đồng sáng lập tại PostageApp và dịch vụ được thiết kế để bạn có thể gửi tin nhắn bằng khóa API được định cấu hình cụ thể để nhận nhưng không gửi email. Các dịch vụ khác như MailGun có thể được sử dụng theo cách tương tự.

Không Độc Point of Failure

Nó không phải là một cảm giác tốt là một bài kiểm tra logic ra khỏi bi kịch, mặc dù. Bạn nên đảm bảo có một số những điều phải làm sai trước khi bạn có thất bại.

+0

Cảm ơn rất nhiều. một điều nữa, tôi nghĩ rằng có thể có một số địa chỉ email bị bẻ khóa được viết bằng 100 tệp php mà tôi không thể tìm thấy như người quản lý và nhà phân phối khác. Làm thế nào tôi có thể loại bỏ chúng. với regex hoặc u có một số ý tưởng khác – user825904

+0

Một biểu thức thông thường của email trông giống như '/ \ b (\ S + \ @ \ S + \. \ w +) \ b /' và có thể được sử dụng để tìm kiếm và thay thế thông qua tất cả các tệp nguồn của bạn . Chỉ cần chắc chắn rằng bạn có tất cả mọi thứ kiểm tra vào một hệ thống kiểm soát phiên bản vì vậy nếu bạn mess up biến đổi của bạn, bạn có thể nhanh chóng un-làm điều đó, cũng như xác minh những thay đổi bạn đã thực hiện. 'git' và' perl' là một sự kết hợp mạnh ở đây: 'perl -pi -e' s/\ b (\ S + \ @ \ S + \. \ w +) \ b/[email protected]/g '* 'mặc dù có những cách khác để đạt được điều tương tự. – tadman

+0

Đây là lý do tại sao việc đặt địa chỉ email trong tệp cấu hình luôn là ý tưởng hay hơn. Thật dễ dàng để có một cấu hình "chế độ phát triển" đặc biệt gửi đến các tài khoản thử nghiệm và không làm phiền đồng nghiệp của bạn với các đơn đặt hàng mua "Testy Testerpants" khó hiểu. – tadman

-6

Thay đổi Tất cả các địa chỉ Email, Ví dụ [email protected]-email#domain.com. Sau khi thử nghiệm hoàn tất, bạn có thể thay thế # bằng @.

+0

"Tôi cần chức năng email để kiểm tra các nội dung khác" – Dale

+1

Điều đó ngụ ý rằng OP chỉ sử dụng 'mail()'. Không xem xét bất kỳ lựa chọn thay thế linh hoạt nào truyền thông trực tiếp qua SMTP. –

0

Nếu bạn không muốn thay đổi mã hoặc dữ liệu trong cơ sở dữ liệu và nếu bạn đang sử dụng postfix trong máy cục bộ của mình, bạn có thể viết lại tất cả thư gửi đến địa chỉ của bạn. Thông tin thêm: http://www.postfix.org/ADDRESS_REWRITING_README.html