《PHP和MySQL Web开发》读书笔记(下篇)
又与大家见面了。继续《PHP和MySQL Web开发》的总结。
Chapter8.设计Web数据库
·回去看看数据卡那本书吧,这里就不累赘谈这个东西。
Chapter9.创建Web数据库
·推荐PHP开发者安装phpmyadmin,一个有图形化界面的mysql管理软件。总比在命令行上写报错了不知道什么问题好。
·推一下我写的快图上传网站的web数据库设计吧。
create database discussion;
use discussion;
create table header
(
parent int not null,
poster char(20) not null,
title char(20) not null,
children int default 0 not null,
area int default 1 not null,
posted datetime not null,
postid int unsigned not null auto_increment primary key
); create table body
(
postid int unsigned not null primary key,
message text
); grant select, insert, update, delete
on discussion.*
to discussion@localhost identified by 'password';
Chapter10.使用MySQL数据库
·初次学习时,还不是高玩的话,就学一些基本的sql语句就可以了。最基本的数据库的增删改查操作要掌握
Chapter11.使用PHP从Web访问MySQL数据库
一般来说,客户要访问服务器的web服务器有以下几个过程:
1.建立一个连接
@ $db = new mysqli('localhost','username','password','database'); //面向对象风格的数据库连接
if(mysqli_connect_errno()){
exit;
}
2.查询数据库
$query = "select * from database where element = 'XXX'";
//运行查询
$result = $db->query($query);
3.检索查询结果
$num_results = $result->num_rows; //返回查询的行数
for($i = 0;$i < $num_results;$i++){
$row = $result->fetch_assoc();
//echo htmlspecialchars(stripslashes($row['title']));
//把一些预定义的字符转换为HTML实体。
}
4.从数据库断开连接
$result->free(); //释放结果集
$db->close(); //关闭数据库
*5.还可以在遍历时使用Prepared语句,这里就不说了。
Chapter19.与文件系统和服务器交互
·文件上传
创建一个文件上传表单
允许用户从表单上传文件是非常有用的。
请看下面这个供上传文件的 HTML 表单:
<html>
<body> <form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form> </body>
</html>
创建上传脚本
通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。
第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:
- $_FILES["file"]["name"] - 被上传文件的名称
- $_FILES["file"]["type"] - 被上传文件的类型
- $_FILES["file"]["size"] - 被上传文件的大小,以字节计
- $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
- $_FILES["file"]["error"] - 由文件上传导致的错误代码
这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。
保存被上传的文件
在服务器的 PHP 临时文件夹创建了一个被上传文件的临时副本。
这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:
下面是move_uploaded_file()函数的介绍:
$filename , string $destination )本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 destination 指定的文件。
这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。
<?php
$uploads_dir = '/uploads';
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
$name = $_FILES["pictures"]["name"][$key];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
}
?>
"upload_file.php" 文件含有供上传文件的代码:
<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>
Chapter21.日期和时间的管理
·感觉用了那么久,就用了个data()函数。
string date ( string $format [, int $timestamp ] )
返回将整数 timestamp 按照给定的格式字串而产生的字符串。如果没有给出时间戳则使用本地当前时间。换句话说,timestamp 是可选的,默认值为 time()。
<?php
// 假定今天是:March 10th, 2001, 5:16:18 pm
$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); //
$today = date('h-i-s, j-m-y, it is w Day z '); // 05-16-17, 10-03-01, 1631 1618 6 Fripm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // It is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 15:16:08 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:17 m is month
$today = date("H:i:s"); // 17:16:17
?>
Chapter22.创建图像
在php中,创建一个图像应该完成如下所示的4个基本步骤:
1).创建一个背景图像,以后的操作都基于此背景图像。
$im = imagecreatetruecolor($width,$height); //创建一个新图像
$im2 = imagecreatefrompng('baseimage.png'); //读入已知的图像
//类似的函数还有imagecreatefromjpg(),imagecreatefromgif()函数
2).在背景上绘制图形轮廓或输入文字。
$white = imagecolorallocate($img,255,255,255); //背景白色
$black = imagecolorallocate($img,0,0,0); //字体黑色,白底黑字 //绘制干扰斜线
for($i = 0;$i < 3;$i++){
$line = imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));
imageline($img,rand(0,$width), rand(0,$height), rand(0,$width),rand(0,$height),$line);
} //绘制干扰像素
for($i=0;$i<150;$i++) {
$point = imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($img, rand()%$width , rand()%$height , $point);
} //填充背景颜色并输出字符串
imagefill($img, 0, 0, $white); //背景颜色
imagestring($img, rand(0,$width/4), rand(0,$height/5), rand(0,5), $code, $black);
3).输出最终图形。
Header('Content-type: image/png');
4).清除所有资源
imagedestroy($im);
Chapter23.在PHP中使用会话控制
·关于cookie功能
还没有研究,所以后续再更新吧。
·关于session,比较用得多是那个登录系统的验证程序:
authmain.php——身份验证应用程序的主体部分
<?php
session_start(); if(isset($_POST['userid']) && isset($_POST['password'])){
$userid = $_POST['userid'];
$password = $_POST['password']; $db_conn = new mysqli('localhost','username','password','database'); if(mysqli_connect_errno()){
exit();
} $query = "select * from database "."where name = $userid "."and password = sha1($password)"; $result = $db_conn->query($query); if($result->num_rows > 0)
{
$_SESSION['valid_user'] = $userid;
}
$db_conn->close(); ?>
members_only.php——网站的有效用户检查部分,可以确定是否是有效成员
<?php
session_start(); if(isset($_SESSION['valid_user'])){
echo "<p>You are logged in.</p>";
}
else{
echo "<p>You are not logged in.</p>";
}
?>
logout.php——该脚本注销会话变量并销毁变量
<?php
session_start(); $old_user = $_SESSION['valid_user'];
unset($_SESSION['valid_user']); //注销会话变量
session_destroy();
?>
·对于get方法,一般通过地址栏来传参。
目前就这些,请多多指教!
《PHP和MySQL Web开发》读书笔记(下篇)的更多相关文章
- PHP和MySQL Web开发学习笔记介绍
前言 从2016年2月1日开始,之后的几个月左右的时间里,我会写一个系列的PHP和MySQL Web开发的学习笔记.我之前一直从事Java语言的开发工作,最近这段时间非常想学习一门语言,就选择了PHP ...
- Flask Web开发读书笔记
开篇:目前想自学Flask Web开发--基于Python,找了几本书准备啃啃,同时也会分享读书笔记.希望和大家一起进步. Flask是小型框架,可以算是微框架,但是他的功能还是比较多 Flask有三 ...
- 《PHP与MySQL WEB开发》读书笔记
<PHP与MySQL WEB开发>读书笔记 作者:[美]Luke Welling PHP输出的HereDoc语法: echo <<<theEnd line 1 line ...
- 【前端】移动端Web开发学习笔记【2】 & flex布局
上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...
- 【前端】移动端Web开发学习笔记【1】
下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...
- ASP.NET Core Web开发学习笔记-1介绍篇
ASP.NET Core Web开发学习笔记-1介绍篇 给大家说声报歉,从2012年个人情感破裂的那一天,本人的51CTO,CnBlogs,Csdn,QQ,Weboo就再也没有更新过.踏实的生活(曾辞 ...
- PHP和MySQL Web开发 原书第4版 高清文字版,有目录,附带源码
PHP和MySQL Web开发 原书第4版:http://yunpan.cn/QCWIS25zmYTAn 提取码 fd9b PHP和MySQL Web开发 原书第4版源码:http://yunp ...
- PHP和MySQL Web开发(原书第4版) 高清PDF+源代码
PHP和MySQL Web开发(原书第4版) 高清PDF+源代码 [日期:2014-08-06] 来源:Linux社区 作者:Linux [字体:大 中 小] 内容简介 <PHP和My ...
- Django Web开发指南笔记
Django Web开发指南笔记 语句VS表达式 python代码由表达式和语句组成,由解释器负责执行. 主要区别:表达式是一个值,它的结果一定是一个python对象:如:12,1+2,int('12 ...
随机推荐
- DispatcherServlet的作用
DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好 ...
- DRBD 实验
跨主机的块设备镜像系统,工作在内核中完成 drbd工作原理:客户端发起一个写操作的系统调用给文件系统,写请求再到达内核缓冲区,最到达DRBD模块,此时drbd会复制写入磁盘的数据,且进行两步操作,第一 ...
- 作死实验,删除libc.so.6
参考https://www.cnblogs.com/fjping0606/p/4551475.html https://www.cnblogs.com/weijing24/p/5890031.html ...
- 软工网络15团队作业8——Beta阶段敏捷冲刺(Day6)
提供当天站立式会议照片一张 每个人的工作 1.讨论项目每个成员的昨天进展 赵铭: 数据库整理. 吴慧婷:我的世界界面完成部分. 陈敏: 我的世界功能--学习情况功能完成. 吴雅娟:我的世界功能--学习 ...
- Java并发编程之线程安全、线程通信
Java多线程开发中最重要的一点就是线程安全的实现了.所谓Java线程安全,可以简单理解为当多个线程访问同一个共享资源时产生的数据不一致问题.为此,Java提供了一系列方法来解决线程安全问题. syn ...
- LeetCode 717. 1-bit and 2-bit Characters
We have two special characters. The first character can be represented by one bit 0. The second char ...
- C++模式学习------原型模式
原型模式: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.意思就是从A的实例得到一份与A内容相同,但是又互不干扰的实例B. class base { public : base(co ...
- Qt——用于表格QTableView的模型
如果想使用表格来呈现数据,Qt提供了一个方便的部件QTableWidget,但是直接用它实现一些功能可能比较困难.这里将介绍一种强大.灵活的方式来操作表格. 一.模型/视图架构 在这个架构中,模型用于 ...
- 20165218 《网络对抗技术》Exp3 免杀原理与实践
Exp3 免杀原理与实践 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧 使用VirusTotal或 ...
- WEB入门 四 CSS样式表深入
学习内容 Ø CSS选择器深入学习 Ø CSS继承 Ø CSS文本效果 Ø CSS图片效果 能力目标 Ø 掌握CSS选择器的组合声 ...