> 백엔드 개발 > PHP 튜토리얼 > PHP 및 MySQL로 뉴스 레터 시스템을 구축하십시오

PHP 및 MySQL로 뉴스 레터 시스템을 구축하십시오

Joseph Gordon-Levitt
풀어 주다: 2025-02-26 11:26:09
원래의
505명이 탐색했습니다.
오늘, 우리는 MySQL 데이터베이스와 함께 PHP를 사용하여 뉴스 레터 시스템을 구축 할 예정입니다. 자습서는 여러 뉴스 레터 목록과 메시지 전송을 특정 목록으로 전송할 수있는 시스템 구축을 다루게됩니다.

우리는 꽤 복잡한 뉴스 레터 시스템을 구축 할 것입니다. 프로젝트에는 두 가지 리소스가 필요할 것입니다.

실크 아이콘 세트 라이브러리는 응용 프로그램에 시각적 감각을 추가하는 데 사용됩니다. 전자 메일을 보내는 데 사용됩니다.

응용 프로그램 skeleton
  • 첫째, 전체 프로젝트 디렉토리 구조를 살펴 보겠습니다. 먼저 주요 프로젝트 디렉토리를 만듭니다. 그런 다음 프로젝트 폴더 내에서 라는 폴더를 만듭니다. 더 이동, admin
  • 폴더 내에 media
Swift 라는 두 개의 하위 디렉토리가 포함되어 있습니다. 또한 디렉토리 내부에서 images

라는 새 폴더를 만듭니다. 이전에 생성 된 swift

폴더 내에 swift

lib 폴더를 배치하는 것이 좋습니다. 또한, 우리가 될 6 개의 실크 아이콘 세트를 복사하십시오. 사용 🎜 🎜> email_go.png find.png page_edit.png 자습서의 나머지 부분에서는 CRUD 기능 (생성, 읽기, 업데이트 및 삭제)을 주로 개발할 것입니다. 애플리케이션 전반에 걸쳐 사용할 수있는 상수를 정의하는 전역 구성 파일을 만듭니다. 우리는 admin/config.php . 환경에 따라 위의 설정을 변경하십시오. 이것이 글로벌 구성 파일을 생성하는 것입니다. 우리는 또한 데이터베이스 클래스 파일을 포함 시켰습니다. database 클래스

이 섹션에서는 __construct

메서드를 구현할 것입니다. 우리는 $ db_server , $ db_password 및 validateUser 메소드 핸들을 생성합니다. 사용자 인증. 사용자 이름과 비밀번호를 매개 변수로 사용하고 true 를 호출합니다. 그렇지 않으면 사용자가 로그인하고 쿼리 메소드가 첫 번째 인수에 제공된 SQL 쿼리를 실행하는 경우 true 를 확인하여 사용자가 로그인 된 경우 로그인 메소드 확인을 반환합니다. 쿼리를 준비하고 실행합니다. 그런 다음 결과 메타 데이터를 검색하고 결과를 변수에 바인딩하고 결과를 가져 오며 가져온 데이터가 포함 된 배열을 반환합니다. updateQuery 및 countQuery 메소드는 SQL 쿼리를 실행하여 카운트와 같은 단일 결과를 반환합니다. 사용자 이름과 비밀번호. 이 경우 데이터베이스를 클래스로 호출합니다. 그 후, 우리는 사용자 관리 시스템에 대한 데이터베이스에 필요한 사용자 테이블에 세션 오류를 할당했다. , 사용자는 원하는만큼 많은 뉴스 레터를 추가 할 수 있어야합니다. 이 경우 뉴스 레터 테이블을 만들어야합니다. 뉴스 레터 관리를 위해 다른 페이지를 구현할 것입니다.

뉴스 레터 목록 페이지

계속해서 파일입니다. 먼저, 사용자가 호출하여 로그인하는지 확인합니다. 데이터베이스

클래스. 사용자가 로그인하지 않으면 사용자를
<?php <br>session_start(); <br>require_once 'database.php';<br><br>$mini = false;<br>$nonav = false;<br><br>error_reporting(0);<br><br>define('DB_SERVER', 'localhost');<br>define('DB_USER', 'root');<br>define('DB_PASSWORD', ''); <br>define('DB_NAME', 'tutsplus_ns_demo');<br>define('FROM_EMAIL', 'no_reply@ohyeahemail.com');<br>define('FROM_NAME', 'oh yeah email!');<br><br>$db = new Database(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);<br>
로그인 후 복사
로그인 후 복사
로그인 후 복사
login.php

페이지로 리디렉션합니다.

다음으로 데이터베이스 클래스를 사용하여 데이터베이스에서 뉴스 레터 목록을 검색합니다. ID 열에서 모든 레코드를 오름차순 순서로 선택합니다. 마지막으로, 마지막으로, 우리는 뉴스 레터 레코드를 반복하고 html 테이블 목록을 작성하고 layout.php 파일을 포함시킵니다. 뉴스 레터 목록을 표시합니다.

$ _post [ 'name'] 및 데이터베이스의 뉴스 레터

테이블. 마지막으로, 사용자를

뉴스 레터로 리디렉션합니다. page. 사용자가 기존을 편집 할 수있는 파일을 만들어 봅시다. 뉴스 레터. 전반적으로, 기존 뉴스 레터를 편집하기위한 양식을 표시 할 책임이 있습니다. 제출되면 데이터베이스의 해당 레코드를 업데이트하고 결과에 따라 사용자를 해당 페이지로 리디렉션합니다.

편집 양식은 다음과 같습니다. PHP 및 MySQL로 뉴스 레터 시스템을 구축하십시오 뉴스 레터를 삭제 PHP 및 MySQL로 뉴스 레터 시스템을 구축하십시오 계속해서

admin/newsletters_PHP 및 MySQL로 뉴스 레터 시스템을 구축하십시오.php 파일을 만듭니다.이를 통해 사용자는 기존 뉴스 레터를 삭제할 수 있습니다. >

템플릿

우리의 응용 프로그램은 뉴스 레터 템플릿 관리도 지원합니다. 따라서 우리는 뉴스 레터 엔티티를 위해 방금 구축 한 것과 같은 방식으로 CRUD를 구축해야합니다. 그것은 매우 비슷하기 때문에 코드를 제공하여 빠르게 진행할 것입니다. 다음 스 니펫과 같이 가입자

테이블을 만들어 봅시다. 가입자 테이블을 만듭니다. 다음으로, 우리는이 SQL을 사용하여
<?php <br>session_start(); <br>require_once 'database.php';<br><br>$mini = false;<br>$nonav = false;<br><br>error_reporting(0);<br><br>define('DB_SERVER', 'localhost');<br>define('DB_USER', 'root');<br>define('DB_PASSWORD', ''); <br>define('DB_NAME', 'tutsplus_ns_demo');<br>define('FROM_EMAIL', 'no_reply@ohyeahemail.com');<br>define('FROM_NAME', 'oh yeah email!');<br><br>$db = new Database(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);<br>
로그인 후 복사
로그인 후 복사
로그인 후 복사
테이블에서 구독 레코드를 만들거나 삭제합니다. 다음 스 니펫에 나와있는 메시지

emsages.php 파일 다른 작업에 대한 몇 가지 추가 링크가있는 나열 페이지입니다. 귀하의 페이지는 다음과 같아야합니다.

이제 새 페이지에서 작업을 시작할 예정입니다.

첫 페이지에서 주제를 수집하고 템플릿 관련이 있습니다. 정보, 다음 페이지에서는 실제 메시지를 수집 할 것입니다. 다음 내용이있는 파일을 만듭니다. >이 페이지 다른 새로운 페이지와 매우 유사하지만 약간의 추가 사항이 있습니다. 새 메시지 항목을 작성한 직후 가장 최근의 삽입 ID를 찾습니다.

CREATE TABLE `users` ( <br>   `id` int(10) AUTO_INCREMENT, <br>   `username` varchar(50), <br>   `password` varchar(32), <br>   PRIMARY KEY (`id`) <br>) ENGINE=MyISAM DEFAULT CHARSET utf8; <br><br><br>INSERT INTO `users` (`id`, `username`, `password`) VALUES  ('1', 'admin', '5ebe2294ecd0e0f08eab7690d2a6ee69');<br>
로그인 후 복사
페이지는 다음과 같습니다.

다음으로, 우리는 사용자를 2 단계로 리디렉션합니다. 다음 내용이있는 파일을 만들어 봅시다.

먼저, 우리는 작업중인 메시지를 찾은 다음 모든 템플릿을 찾고 A를 구성합니다. 드롭 다운 메뉴. 다음으로, 우리는 처음에 가입자
<?php <br>require_once 'config.php'; <br><br>$response = $db->loginRequired();<br>if (!$response) {<br>    header('Location: login.php');<br>    exit;<br>}<br>$title = "Newsletters"; <br>$newsletters = $db->query("SELECT * FROM newsletters ORDER BY id ASC");<br><br>$tab = 'nl'; <br>$table = ""; <br><br>foreach($newsletters as $row) {<br>    $dlink = '<a href="newsletters_PHP%20%EB%B0%8F%20MySQL%EB%A1%9C%20%EB%89%B4%EC%8A%A4%20%EB%A0%88%ED%84%B0%20%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%84%20%EA%B5%AC%EC%B6%95%ED%95%98%EC%8B%AD%EC%8B%9C%EC%98%A4.php?id='.%24row%5B'id'%5D.'" onclick="return confirm(\'Are you sure you want to PHP 및 MySQL로 뉴스 레터 시스템을 구축하십시오 this newsletter?\');" title="PHP 및 MySQL로 뉴스 레터 시스템을 구축하십시오"><img src="/static/imghw/default1.png" data-src="media/images/page_edit.png" class="lazy" alt="PHP 및 MySQL로 뉴스 레터 시스템을 구축하십시오"></a>';<br>    $elink = '<a href="newsletters_edit.php?id='.%24row%5B'id'%5D.'" title="edit"><img src="/static/imghw/default1.png" data-src="media/images/page_edit.png" class="lazy" alt="edit"></a>';<br>    if($row['visible'] == "1") {<br>        $visible = '<img  src="/static/imghw/default1.png" data-src="media/images/bullet_green.png" class="lazy" alt="PHP 및 MySQL로 뉴스 레터 시스템을 구축하십시오" >';} else {$visible = '<img  src="/static/imghw/default1.png" data-src="media/images/bullet_red.png" class="lazy" alt="PHP 및 MySQL로 뉴스 레터 시스템을 구축하십시오" >';<br>    }<br>    $table .= "<tr>
<td>".$row['id']."</td>
<td>".$row['name']."</td>
<td>".$row['description']."</td>
<td>$visible</td>
<td>".$dlink." ".$elink."</td>
</tr>\n";<br>} <br><br>$message = $db->errorMessages();<br>$content = '';<br>$content .= '<a href="newsletters_new.php">Add New Newsletter »</a> ';<br>$content .= $message;<br>$content .= '
로그인 후 복사







';
$content .= $table;
$content .= '
name description visible
';

include 'layout.php';
?>
테이블을 가지고 있습니다. 다음으로, 선택한 모든 뉴스 레터에 대해 구독 테이블에서 항목을 만듭니다. <h3> 다음으로 </h3> preferences.php <p> 페이지를 만들어 봅시다. <strong> 사용자가 뉴스 레터 환경 설정을 저장할 수 있도록하는 데 사용됩니다. </strong> </p> 첫째, 양식이로드되면 모양이 보입니다. <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;?php &lt;br&gt;require_once 'config.php'; &lt;br&gt;&lt;br&gt;$response = $db-&gt;loginRequired();&lt;br&gt;if (!$response) {&lt;br&gt; header('Location: login.php');&lt;br&gt; exit;&lt;br&gt;}&lt;br&gt;&lt;br&gt;$tab = 'nl';&lt;br&gt;&lt;br&gt;if(isset($_POST['submitted'])) { &lt;br&gt; if(isset($_POST['visible'])) {$visible = 1;}else{$visible = 0;}&lt;br&gt; $data = array('name'=&gt;$_POST['name'],'description'=&gt;$_POST['description'], 'visible'=&gt;$visible);&lt;br&gt; $db-&gt;updateQuery($data, $_POST['id'], 'newsletters');&lt;br&gt; $_SESSION['success'] = &quot;Updated newsletter.&quot;;&lt;br&gt; header('Location: newsletters.php');&lt;br&gt; exit;&lt;br&gt;} &lt;br&gt;&lt;br&gt;$title = &quot;Edit newsletter&quot;;&lt;br&gt;$id = (int) $_GET['id'];&lt;br&gt;&lt;br&gt;$results = $db-&gt;query(&quot;SELECT * FROM newsletters WHERE id='&quot;.$id.&quot;' LIMIT 1&quot;);&lt;br&gt;$name = $results[0]['name'];&lt;br&gt;$description = $results[0]['description'];&lt;br&gt;$visible = ($results[0]['visible'] == &quot;1&quot;) ? 'checked=&quot;checked&quot;' : '';&lt;br&gt;&lt;br&gt;$content = '</pre><div class="contentsignin">로그인 후 복사</div></div> <form action="newsletters_edit.php" method="POST"> <br> <p> <br> <label for="name">Name:</label><br> <br> <input type="text" name="name" value="'.$name.'"> <br> </p> <br><br> <p> <br> <label for="description">Description:</label> <br> <input type="text" name="description" value="'.$description.'"> <br> </p> <br><br> <p> <br> <label for="visible">Visible:</label> <br> <input type="checkbox" name="visible" value="true"> <br> </p> <br><br> <p> <br> <input type="submit" value="Edit Newsletter"> <br> <input type="hidden" value="1" name="submitted"> <br> <input type="hidden" value="'.$id.'" name="id"> <br> </p> <br> </form>'; <br><br>include 'layout.php'; <br>?><br> <p> 찾기 버튼을 클릭하면 사용자를 다음 페이지로 가져갑니다. </p> <img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174054037657514.png" class="lazy" alt="PHP 및 MySQL로 뉴스 레터 시스템을 구축하십시오" > 마지막으로, 마지막으로, 사용자가 클릭하면 클릭하십시오. 내 환경 설정 저장 버튼은 다음 이미지에 표시된 페이지를 표시합니다. 메시지 보내기 <img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174054038267947.png" class="lazy" alt="PHP 및 MySQL로 뉴스 레터 시스템을 구축하십시오" > <h2>이 섹션에서는 마지막 페이지를 작성하여 메시지를 보낼 수 있습니다. </h2> 파일. <p>는 뉴스 레터를 처음에 나열하는 양식을 작성하는 데 사용됩니다. 관리자가 뉴스 레터를 선택하고 양식을 제출하면 선택한 뉴스 레터에 가입 한 가입자를 검색합니다. 마지막으로, 우리는 그들에게 이메일을 보냅니다. </p> <p> Symfony Mailer 라이브러리를 사용하여 이메일을 보내는 것도 주목하는 것도 중요합니다. 다음 스 니펫과 같이 작곡가로 설치할 수 있습니다. 환경에 따라 설정을 조정해야합니다. 이 주제에 대한 자세한 내용은 Symfony Mailer 라이브러리에 대한 심층적 인 안내서를 제공하는이 기사를 방문 할 수 있습니다. <strong> 형식은 다음과 같습니다. 홈페이지 </strong> 이제 응용 프로그램에 대한 전체 통계를 표시하는 관리자 홈페이지를 작성하겠습니다. </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;?php &lt;br&gt;session_start(); &lt;br&gt;require_once 'database.php';&lt;br&gt;&lt;br&gt;$mini = false;&lt;br&gt;$nonav = false;&lt;br&gt;&lt;br&gt;error_reporting(0);&lt;br&gt;&lt;br&gt;define('DB_SERVER', 'localhost');&lt;br&gt;define('DB_USER', 'root');&lt;br&gt;define('DB_PASSWORD', ''); &lt;br&gt;define('DB_NAME', 'tutsplus_ns_demo');&lt;br&gt;define('FROM_EMAIL', 'no_reply@ohyeahemail.com');&lt;br&gt;define('FROM_NAME', 'oh yeah email!');&lt;br&gt;&lt;br&gt;$db = new Database(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);&lt;br&gt;</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div> 를 만들어 봅시다. 다음 내용이있는 파일. <p> </p> 그리고 다음과 같이 보입니다. 또한. 우리는 튜토리얼에서 많은 근거를 다루어 뉴스 레터 앱을 처음부터 완전히 만들었습니다!

위 내용은 PHP 및 MySQL로 뉴스 레터 시스템을 구축하십시오의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿