addemail.php

<!DOCTYPE html>
<html lang="cn" dir="ltr">
<head>
<meta charset="UTF-8">
<title>猫王商店 - 添加邮箱</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<img src="blankface.jpg" width="161" height="350" alt="" style="float:right">
<img name="elvislogo" src="elvislogo.gif" width="229" height="32" border="0" alt="Make Me Elvis">
<p>E添加你的名字和邮箱到 <strong>猫王商店</strong> 的邮箱列表。</p>
<?php
if(isset($_POST['submit'])){
$name = $_POST['name'];
$email = $_POST['email'];
$output_form = 'no'; if (empty($name) || empty($email)) {
echo '请完整填写要求的内容.<br />';
$output_form = 'yes';
}
}
else {
$output_form = 'yes';
} if(!empty($name)&&!empty($email)){
$dbc = mysqli_connect('127.0.0.1','root','','elvis_store')
or die('链接MySQL失败。'); $query = "INSERT INTO email_list (name, email)".
"VALUES ('$name', '$email')";
mysqli_query($dbc, $query)
or die('数据添加失败。'); echo '顾客信息添加完成。'; mysqli_close($dbc);
} if ($output_form == 'yes'){
?> <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<label for="NAME">姓名:</label>
<input type="text" name="name" id="name"><br>
<label for="email">邮箱地址:</label>
<input type="text" name="email" id="name"><br>
<input type="submit" name="submit" value="提交">
</form> <?php
}
?>
</body>
</html>

sendemail.php

<!DOCTYPE html>
<html lang="cn" dir="ltr">
<head>
<meta charset="utf-8">
<title>猫王商店 - 发送邮件</title>
<<link rel="stylesheet" href="style.css">
</head>
<body>
<img src="blankface.jpg" alt="黑脸" width="161" height="350" style="float:right">
<img src="elvislogo.gif" alt="猫王商店" name="elvislogo" width="229" height="32" border="0">
<p><strong>私人的:</strong>仅供Elmer使用<br>
向邮箱列表的成员写和发送邮件。</p>
<?php
if (isset($_POST['submit'])) {
$from = 'xxxxxxxx@xxx.com';
$subject = $_POST['subject'];
$text = $_POST['elvismail'];
$output_form = false; if (empty($subject) && empty($text)) {
// We know both $subject AND $text are blank
echo '你忘记输入邮件的标题和内容。<br>';
$output_form = true;
} if (empty($subject) && (!empty($text))) {
echo '你忘记输入邮件标题<br>';
$output_form = true;
} if ((!empty($subject)) && empty($text)) {
echo '你忘记输入邮件正文.<br>';
$output_form = true;
}
}
else {
$output_form = true;
} if ((!empty($subject)) && (!empty($text))) {
$dbc = mysqli_connect('127.0.0.1','root','','elvis_store')
or die('链接MySQL失败。');
$query = "SELECT * FROM email_list";
$result = mysqli_query($dbc, $query)
or die('查询数据库失败。'); while($row = mysqli_fetch_array($result)){
$name = $row['name']; $msg = "亲爱的 $name ,\n $text";
$to = $row['email'];
mail($to, $subject, $msg, 'From:'.$from); echo '邮件发送到了:'.$to.'<br>';
} mysqli_close($dbc);
} if ($output_form) {
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<label for="subject">邮件的标题:</label><br>
<input type="text" name="subject" id="subject" size="30"><br>
<label for="elvismail">邮件的内容:</label><br>
<textarea name="elvismail" id="elvismail" rows="8" cols="40"></textarea><br>
<input type="submit" name="Submit" value="提交">
</form> <?php
}
?> </body>
</html>

removeemail.php

<!DOCTYPE html>
<html lang="cn" dir="ltr">
<head>
<meta charset="utf-8">
<title>猫王商店 - 删除邮箱</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<img src="blankface.jpg" alt="黑脸" width="161" height="350" style="float:right">
<img src="elvislogo.gif" alt="猫王logo" width="229" height="32" name="elvislogo" border="0">
<p>输入你想要移除的邮箱。</p>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<?php
$dbc = mysqli_connect('127.0.0.1','root','','elvis_store')
or die('链接MySQL失败。'); if(isset($_POST['submit'])){
foreach ($_POST['todelete'] as $$delete) {
$query = "DELETE FROM email_list WHERE id = $delete_id0";
mysqli_query($dbc, $query)
or die('查询数据库失败。');
}
echo "顾客邮箱移除完毕。<br>";
} $query = "SELECT * FROM email_list";
$result = mysqli_query($dbc, $query)
or die('查询数据库失败。'); while($row = mysqli_fetch_array($result)){
echo '<input type="checkbox" value="' .$row['id']. '" name="todelete[]">';
echo "$row['name']";
echo "$row['email']";
echo "<br>";
}
mysqli_close($dbc);
?> <input type="submit" name="submit" value="Remove" />
</form>
</body>
</html>

Head First PHP&MySQl第四章代码的更多相关文章

  1. Head First PHP&MySQl第三章代码

    addemail.html <!DOCTYPE html> <html lang="cn"> <head> <meta charset=& ...

  2. 第四章-使用本机文件对话框和帮助进程间沟通 | Electron实战

    本章主要内容: 使用Electron的dialog模块实现一个本机打开文件对话框 促进主进程和渲染器进程之间的通信 将功能从主进程暴露给渲染器进程 使用Electron的remote模块从主进程导入功 ...

  3. 第四章 MySQL高级查询(二)

    第四章 MySQL高级查询(二) 一.EXISTS子查询 在执行create 或drop语句之前,可以使用exists语句判断该数据库对像是否存在,返回值是true或false.除此之外,exists ...

  4. “全栈2019”Java异常第四章:catch代码块作用域详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

  5. 第四章:重构代码[学习Android Studio汉化教程]

    第四章 Refactoring Code The solutions you develop in Android Studio will not always follow a straight p ...

  6. 第四章 INI配置——《跟我学Shiro》

    转发地址:https://www.iteye.com/blog/jinnianshilongnian-2020820 第四章 INI配置——<跟我学Shiro> 博客分类: 跟我学Shir ...

  7. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  8. 《Linux内核设计与实现》读书笔记 第四章 进程调度

    第四章进程调度 进程调度程序可看做在可运行太进程之间分配有限的处理器时间资源的内核子系统.调度程序是多任务操作系统的基础.通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发执行的 ...

  9. 《Entity Framework 6 Recipes》中文翻译系列 (20) -----第四章 ASP.NET MVC中使用实体框架之在MVC中构建一个CRUD示例

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第四章  ASP.NET MVC中使用实体框架 ASP.NET是一个免费的Web框架 ...

随机推荐

  1. 博主的OI流水账

    2017.8.4 入坑OI 2017.11.11 参加了NOIP2017提高组,0+85+0+30+50+0=165,荣获省二(具体分数其实记不清了反正差不多吧) 2018.2 学会树状数组,线段树 ...

  2. ACM技能表

    看看就好了(滑稽) 数据结构 栈 栈 单调栈 队列 一般队列 优先队列/单调队列 循环队列 双端队列 链表 一般链表 循环链表 双向链表 块状链表 十字链表 邻接表/邻接矩阵 邻接表 邻接多重表 Ha ...

  3. Codeforces Round #584 - Dasha Code Championship - Elimination Round (rated, open for everyone, Div. 1 + Div. 2) G1. Into Blocks (easy version)

    题目:https://codeforc.es/contest/1209/problem/G1 题意:给你一个序列,要你进行一些操作后把他变成一个好序列,好序列的定义是,两个相同的数中间的数都要与他相同 ...

  4. js获取页面的各种高度与宽度

    document.body.scrollTop等属性可以获取页面滚动距离等,但是此类属性在xhtml标准网页或者更简单的说是带<!DOCTYPE ..>标签的页面里得到的结果是0, 所以一 ...

  5. [CSP-S模拟测试]:小W的魔术(数学 or 找规律)

    题目传送门(内部题130) 输入格式 第一行一个整数$n$,表示字符串的长度. 第二行一个只包含小写字母的字符串$s$. 输出格式 一行一个整数表示答案对$998244353$取模后的结果. 样例 样 ...

  6. ctf活动结果

    签到题:flag{0ca175b9c0f726831d895e269332461} 解题过程:使用winhex打开图片,查询到ANSI ASCII 得到结果 1.SimCTF{hello simple ...

  7. 套接字选项 之 SO_REUSEADDR && SO_REUSEPORT

    说明 本文下面内容基本上是截取自stackoverflow,针对这两个选项,在另外一篇文章中做了总结,请移步<Linux TCP套接字选项 之 SO_REUSEADDR && S ...

  8. 2018-2019-2 网络对抗技术 20165232 Exp7 网络欺诈防范

    2018-2019-2 网络对抗技术 20165232 Exp7 网络欺诈防范 原理与实践说明 1.实践目标 理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法. 2.实践内容概述 简单应 ...

  9. Viola-Jones(人脸检测)

    Viola-Jones 人脸检测 1.Haar特征抽取 ‘ 2. Adaboost 算法

  10. Android中@id与@+id区别和sharedUserId属性详解

    Android中的组件需要用一个int类型的值来表示,这个值也就是组件标签中的id属性值. id属性只能接受资源类型的值,也就是必须以@开头的值,例如,@id/abc.@+id/xyz等. 如果在@后 ...