Tạo Mailing list với PHP & MySQL
- October 26, 2010
- 48 comments
Trong video tutorial lần này chúng ta sẽ học cách tạo ra một Mailing List bằng PHP và MySQL. Bạn sẽ học được cách tạo bảng trong SQL Console, liên kết với CSDL bằng PHP và thực hiện một phần của CRUD (Create Read Update Delete).
Những chức năng cơ bản mà chúng ta sẽ làm là kiểm tra email có hợp lệ, chèn email và tên của người dùng vào CSDL, truy xuất CSDL để xác định email có tồn tại trong CSDL hay không và xóa email nếu người dùng yêu cầu. Cuối cùng sẽ là chức năng gửi email đến tất cả người đăng ký trong danh sách.
Chú ý: Đây chỉ là bài để bạn thực hành với PHP và MySQL và không nên sử dụng trong Project thật vì những lý do bảo mật.
Thời lượng: 17:30
Download định dạng .mp4 chất lượng cao:Phần 1, Phần 2, Phần 3
Dung lượng: 82.23MB
Phần 1: Đăng ký email vào CSDL
Phần 2: Xóa email, tái cơ cấu mã
Phần 3: Gửi email đến danh sách trong CSDL
Logic của đoạn mã bằng hình

Căn Bản PHP – Bài 11 – Phần 2 »
Ở đây có ai biết làm thế nào để truy xuất dữ liệu từ wamp ra trang web mà có dấu được k?
Các bài trong izwebz rất hay. liệu những người đang học trên đây có thể làm gì để tỏ lòng cám ơn với DW?
thanks bài viết của anh, mong là anh sẽ ra nhìu bài hữu ích như thế này nữa
có thể nào là do cài đặt wamp của em không!
Nhờ mọi người kiểm tra thử xem em bị lỗi chỗ nào khi em chạy trên trình duyệt lại không thể xử lý dữ liệu chỉ hiển thì design .Cảm ơn mọi người
Mail
<?php
if(isset($_POST['submit'])){
$requeries = array('name','email');
foreach($requeries as $fieldname){
if(isset($_POST['$fieldname'])||empty($_POST['$fieldname'])){
header("Location:mailling_list.php");
exit;
}
}
$name =mysql_real_escape_string($_POST['name']);
$email=mysql_real_escape_string($_POST['email']);
if (preg_match('/^[a-z0-9._-]+@[a-z0-9._-]+\.([a-z]{2,4})$/i', $email)){
echo"email not corect format";
exit;
}
if($_POST['subcribe']== 'sub'){
$sql ="SELECT * FROM subcribe WHERE email='".$email."'";
$rus= mysql_query($sql)or die('Cannot select table');
if(mysql_num_rows($rus)<1){
$add_sql= "INSERT INTO subcribe VALUES (null,'".$name."','".$email."')";
$add_query= mysql_query($add_sql);
echo $add_query? " You have successfully subcribe to our mailling list”:”Faild subcribe to our mailling list “;
}
else{
echo “Email already exited.”;
}
}
elseif($_POST['unsubcribe']==’unsub’){
$sql_email = “SELECT * FROM subcribe WHERE email=’”.$email.”‘”;
$sql_query =”mysql_query($sql_email)”or die(‘can\’t delete email’).mysql_error($connection);
if(mysql_num_rows($sql_query)<1){
echo"No record found”;
}else{
$del_sql=”DELETE FROM subcribe WHERE email=’”.email.”‘”;
$del_query=mysql_query($del_sql);
echo $del_query?”You have successfully unsubscribe “:”Faild unsubscribe”;
}
}//end $_POST['subcribe']==’sub’
} ?>
Please subcribe to our mailling list
<form action="” method=”post” id=”subcribe”>
Name:*
Email:*
Subscribe
Unsubscribe
Em cảm ơn anh Dome Warlock nhiều nhièu nhé ! những tài liệu này thật tuyệt cho em đang tự mình nghiên cứu về ngôn ngữ này.
f
DW cho mình hỏi:
mình sử dụng Jquery và Ajax để validateForm nhưng không biết làm thế nào để ínert data vào database và cả send mail nữa tức là nếu bên Jquery validate dữ liệu đúng thì PHP mới INSERT vào database
thì bạn cứ dùng function $.ajax({}) để gửi thông tin ngầm đến file php xử lí dữ liệu như bình thường thôi, còn check dữ liệu hợp lệ thì dùng javascript bên máy khách. Tốt nhất là cứ học php manual để bảo mật cho tốt
. Câu trả lời của mình có đúng ko? Hay ý bạn là như thế nào ???
Anh DW cho em hỏi tí, cái phần 3 send mail. sao em làm giống anh rồi nhưng khi gởi đi thì trình duyệt báo lỗi như thế này “Warning : mail() [function.mail]: “sendmail_from” not set in php.ini or custom “From:” header missing in E:\AppServ\www\LamquenvoiPHP\TMP354fkhdkyq.php on line 53 “. mà dòng 13 thì chỉ có mỗi cái dấu ngoặc đơn. anh giúp em sửa lỗi này với, cám ơn anh rất nhiều.
anh ơi, cho em hỏi, làm sao khi a gửi email nó biết là từ đâu gửi tới, trong đoạn code của a ko có địa chỉ email nguồn (demon@yahoo.com)
Đọc một loạt bài hay quá. Nhưng hình như còn thiếu bài về tiềm kiếm sản phẩm. Rất mong bạn bổ sung. Thank
Failed to connect to mailserver at “localhost” port 25, verify your “SMTP” and “smtp_port” setting in php.ini or use ini_set() in C:\wamp\www\sendemail.php on line 40
Em làm đến phần gửi mail thì nó báo thế này nghĩa là sao mấy anh
Sửa giùm em với
Mình cũng bị lỗi trên, ai có thể gỡ giúp với. Đã kiểm tra file php.ini rồi.
SMTP = localhost, smtp_port = 25.
Nhưng vẫn thông báo lỗi trên.
Em cũng bị lỗi như vậy (Failed to connect to mailserver at “localhost” port 25, verify your “SMTP” and “smtp_port” setting in php.ini or use ini_set() in C:\wamp\www\sendemail.php ) và trong hàm gửi mail em đã khai báo ($header =’Content-type:text/html; charset=UTF-8′;) mà vẫn không gửi được tiếng việt có giấu mong anh DW hướng dẫn giúp em với. Cảm ơn anh DW.
Bạn không thể gửi mail được vì bạn đang xài localhost. Bạn có thể sử dụng MS Outlock để test. Bạn tham khảo thêm trên mạng để thay đổi port và id của bạn.
chúc bạn thành công.
anh DW code “exist” trong video anh nói thoát ra nhưng ko em ko hiểu thoát ra cái gì
thanks nice tut
mong and giải thích kỷ một chút
Là thoát tất cả không làm bất cứ một lệnh nào sau khi thực hiện hàm đó bạn bạn có thể vào php.net để xem thông tin về hàm này Chúc bạn thành công
Có phải hàm exit() không bạn , đó là function có tác dụng dừng lại và không thực thi các code đằng sau nó nữa
vd:
Không biết có đúng ý bạn không ???
cho em hỏi câu ngoài chủ đề:”Php có hỗ trợ cách post các bài như trong wordpress không. Và làm thế nào để post được các bài lên trang web ?”
Vậy bạn chưa hiểu bản chất của lập trình PHP rồi !
Wordpress là một ứng dụng được viết bẳng ngôn ngữ PHP để post các bài viết lên trang web thì wordpress đã viết sẵn một hàm để post thông tin lên trang web tôi lấy VD như sau :
bạn có môt trang gustbook chẳng hạn bạn muốn người ta hoặc bạn có thể post lên trang web của bạn thì bạn phải xây dựng một hàm post bài như Insert chẳng hạn bạn sẽ lấy các thông tin của form do người dùng post lên rôi kết xuất các thông tin thành một câu truy vấn hoặc là một thủ tục chẳng hạn rồi dùng hàm mysqli_query() hoặc mysql_query() để thực hiện câu truy vấn hoặc thủ tục của bạn vào database của bạn tôi chỉ đưa ra ý tưởng cho bạn để bạn tham khảo không nhất thiết bạn phải làm theo tôi đó là tùy biến của bạn
Anh DW ơi !!! Links down bị lỗi rồi anh ah !
Anh check lại giùm em cái , em down mãi mà không được
Vừa check xong, vẫn bình thường em
Anh DW ơi trang web của anh rất hay và bổ ích? Em chỉ mới học thiết kế web thôi nên còn gà lắm. Em có ý kiến thế này , sao anh không làm một trang web hoàn chỉnh để mọi người cùng học hỏi và chia sẻ. Từ phần thiết kế giao diện, HTML và chủ yếu là về code PHP để xử lý đó …vv. Em rất thích làm web nhưng lại code dở lắm không biết có học được không , huhu , Anh có thể cho em vài lời khuyên được không . cảm ơn anh rất nhiều . chúc trang web của anh ngày càng phát triển hơn .
Anh cho em xin đoạn Code “Gửi email đến danh sách trong CSDL”
Em đánh y vậy mà sao báo lỗi hoài.
sửa hết lỗi mà vẫn không gửi đc, em đang cần cái này. cho em xin
chuyentinh379@gmail.com
anh dw ơi bây giờ em làm video rồi muốn up lên izweb thì làm ntnao?
Cool, vậy chú cứ upload lên mediafire rồi email anh cái link. A sẽ xem qua nội dung và post lên.
Anh chỉ giúp em đoạn code truy vấn này nghĩa là gì ?
<?php $tags = $data->select ( "Tag" , "*" , NULL , 0 , 500 ) ; if ( ! empty ( $tags ) ) foreach ( $tags as $tag ) : $counts = $data->count_record ( "Website_Tag" , array ( "TagID" => $tag["TagID"] ) ) ; if ( $counts > 20 ) $font_size = $counts ; else $font_size = 11 ; ?> <a style="font-size: <?php echo $font_size ?>px;" href="<?php echo base_url."coupons/".get_sef_url ( $tag["TagID"] , "Tag" ) ?>/"><?php echo $tag["TagName"] ?></a> <?php endforeach ; ?>quan trọng nhất là dòng
. còn đây là link hình Table :Tag
$tags = $data->select ( “Tag” , “*” , NULL , 0 , 500 ) ;
nghĩa là sao nếu giải thích hộ cả thì càng hay
freecode.vn/for@um/showthread.php?t=113699
Em xin cảm ơn !
@Ngyen van hai
Code này bạn lấy ở đâu vậy, đưa thiếu thế này thì giải thích thế nào
Cái này là họ viết một class data có phương thức select để truy vấn database.
Lúc cần thì chỉ cần đưa các tham số như tên bảng, trường dữ liệu cần lấy, limit…
Bạn cần xem code của phương thức select trong class data để xem chi tiết .
Cảm ơn bác em giải quyết được rồi. Dân không chuyên khổ thế đấy
Anh xem hộ em đoạn code này với, sao em gõ giông y hệt anh rồi nhưng nó không insert vao DB được
<?php $connection = mysqli_connect("localhost", "root", "", "test") or die('Cannot connect Database'.mysql_error()); ?> <?php if(isset($_POST["submit"])){ $required = array("name", "email"); foreach($required as $fieldname){ if(!isset($_POST["$fieldname"]) || empty($_POST["$fieldname"])){ header("location: contact.php"); exit(); } } $email = $_POST["email"]; $name = $_POST["name"]; if($_POST["send"] == "snd"){ $sql = "select * from members where email ='".$email."'"; $result = mysqli_query($conection, $sql) or die('Cannot select table').mysql_error($connection); if(mysql_num_rows($result) < 1){ $add_sql = "insert into members VALUES (null,'".$name."','".$email."')"; $add_result = mysql_query($connetion, $add_sql) or die('Cannot insert email'); echo $add_result ? "<p class='success'>You have successfully subcribed to our mailing list</p>" : "<p class='error'>Failed to subcribe email</p>"; } } }//if(isset($_POST["send"])) ?>Lỗi ở chỗ này nè
$add_result = mysql_query($connetion, $add_sql) or die('Cannot insert email');mysql_query($connetion, $add_sql) <= thiếu chữ c ở $connection.
Hi em tìm cả đêm qua mà không ra, Thank you a! :d
Trong PHP có hai hàm mysqli_query($connection, $sql) và mysql_query($sql, $connection) hai hàm này khác nhau ở cái chỗ thứ tự của biến chúng ta nên chú ý điều này
Rất bổ ích. Cảm ơn anh nhiều, mong anh có nhiều bài hay nữa
DW đã hướng dẫn php, IT Việt Nam có hướng đi mới
rất bổ ích anh ạ, cám ơn anh rất nhiều về tut này
Chào anh DW. Trc hết xin cảm ơn anh DW về những video bổ ích của anh. E thấy trong các video anh đã đính kèm sẵn các source files nên đã tìm cách chắp nỗi các files của anh để thành 1 theme nhưng không được. E không hiểu gì về lập trình web nhưng rất thik và sau này sẽ tìm hiểu để tự làm. Thế nên nếu không phiền thì anh có thể tập hợp các files lại thành 1 theme hoàn chỉnh ( như các theme down trên mạng) và up cho e dc k? Hiện giờ e đang cần nhưng lại chưa có tg để học từ đầu, mong anh thông cảm. Em xin cảm ơn anh trước!
Các anh có thể giải thích về hệ thống newsletter của phplist được không ạ? Làm sao để form newsletter ( subscribe form ) của mình có thể đăng ký với hệ thống này?
Pác DW ơi, pác check lại link giùm em, 2 cái Phần 1 & 2, link giống nhau mà pác
Thanks!
Ok! anh đã sửa lại rồi đó
Anh có thể nói rõ hơn một tí xíu là vì sao không nên sử dụng trong project thật không.
Em code PHP toàn làm đến mức này, vậy chưa đi làm được rồi,,,híc
Nói chung thì đoạn mã trên cũng đã khá an toàn nhưng nếu sử dụng vào những Project thực sự thì em phải tùy từng trường hợp để giải quyết. Nếu là trang về TMDT và những thông tin liên quan rất quan trọng thì phải có những biện pháp an ninh tốt hơn nữa.
Bác DW ơi! Sao lâu quá không thấy video về HTML5(canvas…) và CSS3 vậy bác?
Nói thật với chú HTML5 còn khá mới và anh cũng chưa có thời gian nghiên cứu nhiều về nó. Muốn làm tut thì phải hiểu sâu và kỹ về nó mới có thể hướng dẫn người khác được. Chứ anh ko muốn làm video về chủ đề mà mình chưa hiểu rõ.
HTML5 là một phiên bản mới của HTML và XHTML gì đó tôi mới hiểu sơ sơ thôi chưa đi sâu được bạn có thể tham khảo qua đây tôi hiện tại cũng đang nghiên cứu vể nó trên trang này rất mong có thể ai đó hiểu hết được nó và chia sẻ với mọi người
hj..cảm ơn bác dw..em dang cần tham khảo…
tutorial rất hay rất bổ ích, cảm ơn anh DW.