编程基础(三)

328 阅读5分钟

MYSQL

安装了mysql之后systemctl start mariadb启动mysql数据库

初始化数据库:mysql_secure_installation

操作数据库时很多情况都需要root密码,这个root是数据库的root而不是linux的root

image.png 删掉匿名用户

一路默认回车就行了

登录数据库:

image.png

History:查看历史命令,不建议直接写-p密码,会被写入history内

image.png mysql是数据库管理工具,show database;就能显示所有数据库

Use 数据库名,就能进入数据库

进入数据库后,show tables;查看表

image.png

image.png

image.png 数据库执行成功为query ok,执行失败跳error报告

image.png

image.png

image.png 更改表实例:

image.png 上述是对列(字段)进行增删改查,下面是对表中数据进行增删改查

image.png 插入多行语句就是insert into 表名 (列,列) values(值,值),(值,值)·

image.png Select * from 表 where 字段=

image.png

image.png

image.png Desc 表 查看数据表的结构 describe,查看表数据就是select * form 表

Columns列、字段

删除表或者删除列是drop,删除数据是delete

PHP 连接MYSQL,对数据库执行操作:

image.png

image.png 下面是对这五个步骤的函数详解,注意,在PHP中实现对MYSQL的操作类似于在PHP中实现对文件的操作,需要连接,操作,关闭等固定操作

image.png Mysql_select_db(数据库名,登录句柄)文件登录句柄也就是登录时传的参数,比如实例。Resource link_identifier就是表明自己登录的shell(终端),也就是登录句柄。因为可以在不同终端同时登录数据库,所以要表明终端证明身份

image.png Mysql_fetch_array()是获取第一行的内容,也存在指针,类似fgets()函数

实例:

image.png 比如该图的文件句柄就是$conn

数据库现在是这个: image.png

image.png

image.png 根据结果可以看出输出方式为混合数组,可以用索引方式查值,也可以根据关联数组的方式查值

根据结果还能看出只输出了一行数据,而且数据库也存在指针,所以要以循环的方式输出全部结果

image.png Var dump输出数组

$result得到一个结果集,mysql_fetch_array从结果集中获取信息得到一个row数组,再用var dump或print_r输出数组

SQL语句不论大小写,对大小写不敏感

PHP文件包含

image.png include使用方法:include ‘’   使用相对路径包含

此文件包含相当于直接把代码复制粘贴

Include_once()会判断在此之前指定的文件是否已经被包含过了,如果是,那就不包含,如果没包含过才能正常执行包含

PHP留言板优化 增加mysql数据库

image.png AUTO_INCREMENT PRIMARY KEY就是数字自增的意思,id值随留言先后自增长

tinytext是文本类型,数据库储存文本的类型

制作出来的you表如下:

image.png 前端的html代码就是制作表单再上传至对应的php文件

后端的Php代码如下:

image.png 如果还要在当前页面对留言进行展示,就需要在前端的html文件中添加mysql_fetch_array()的文件对留言的数据库进行遍历

image.png 很明显我们可以发现前端和后端有重复的代码,就是登录数据库连接表的过程,在这里将此过程单独提出来用文件包含使用

image.png 综上,当前制作留言板的顺序如下:

先制作前端的HTML表单,并将表单数据提交至后端Php

PHP将获得的表单数据储存至Mysql中,在此之前要在mysql数据库中创建好对应的库和表

php的数据储存就是先判断表单是否为空,再用$_post获取前端的对应值,如何用insert语句储存值,注意连接和关闭数据库

还要在前端将留言的数据展示出来,就在前面的html表单后面加循环遍历数据库,再把重复代码用文件包含修饰一下就可以了

会话控制

image.png http协议具有无状态性,不会保存用户id或者之前的请求等数据

COOKIE:

image.png

image.png 客户端第一次请求服务器时,服务器的响应包内会发送一个set-cookie,一定时间内再次访问时,客户端会自动带上set-cookie的值,这时被称为cookie

image.png expire的值通常为time()+360024或者3600小时,表示cookie的有效时间

也可以直接写过期时间

Time()函数是当前时间

image.png COOKIE是超全局变量,在服务器的全部PHP文件都可以访问,_COOKIE是超全局变量,在服务器的全部PHP文件都可以访问,_GET,$_POST也是

image.png 使用cookie制作一个登录页面:

image.png Isset:isset函数是检测变量是否设置。

格式:bool isset ( mixed var [, mixed var [, ...]] )

返回值:

若变量不存在则返回 FALSE
若变量存在且其值为NULL,也返回 FALSE
若变量存在且值不为NULL,则返回 TURE

和empty的用法相反,empty为空返回ture,isset不为空返回ture

If(isset($_POST[‘submit’]))就是为了判断提交的submit的值是不是以POST的方式提交的,因为请求页面是以GET的方式请求,如果直接判断submit的值,会在每一次打开页面是执行,而判断POST则是每次以POST请求提交表单才会执行

Header()跳转至···页面

JS里有获取本地cookie的函数:document.cookie,在浏览器的控制台上查询

  登陆后的页面:

image.png 要编写一个退出登录的logout.php页面,用到了删除cookie的手法:

Setcookie(“username”,$_COOKIE[‘username’],time()-1);

Header(‘Location:login.php’);

解释为什么要登录页跳转才能访问index.php:因为cookie值必须要为登录的USERNAME对应的cookie值,如果不是会直接跳回

综上,写一个登录页面需要:一个跳转页面,一个登录页面,一个退出登录的PHP

 

在linux的firefox F12的设置里面勾选storage即可开启存储功能,可以直接管理本地cookie

image.png

Session:

image.png session的默认周期是20天,和cookie不同的是,session储存在服务器,给客户端的是session_id。每个session都会在服务器生成session文件

PHP的配置文件:/etc/php.ini里有个session_save_path是session的储存位置

Session_id也是在cookie里查看

image.png 开始会话:session_start(); 和setcookie()的注意一样

注册会话变量:(接收session值)$_SESSION[‘XXX’]=XXX;

使用会话变量:$_SESSION;

注销会话:

image.png 较cookie的使用多了一步注销会话,且每次使用都需要开启会话,其他全部一致

image.png session文件,s代表string,意思是三个字符

和cookie不同的是,在本地删除cookie就销毁了,但是session在服务器还有备份,所以要用退出会话的方式删除本地session_id和服务器的session

image.png 此代码能删除SESSION,PHP默认的session是基于cookie的,要删干净还要用setcookie(‘PHPSESSION’,$_COOKIE[‘PHPSESSION’],time()-1]删除cookie

image.png 再次优化留言板

目的:达到管理账号的目的,没有账号的要先注册,访问留言板先要登录,能够退出登录

要有登录页面、主页、退出登录、注册页面、数据库连接

先创建数据库,有两个数据库,一个装登录用户信息,一个装留言信息

 

最后一版:

需要有管理员账号

image.png

image.png user是普通用户账号表,admin是管理员用户账号表

管理员后台,要实现对普通用户留言的修改和显示留言信息

image.png 混合编码,在PHP中插入一段纯正的HTML代码,先闭合<?Php,在加入<?Php,再闭合需要使用的}

未改正的action.php:

image.png Delete,update,insert三条语句返回结果true or false,select返回结果集

执行后不弹窗,因为先在本页弹窗后马上就跳回了首页

改正后:

image.png

Exit();在退出之前打印··,打印后直接退出,不执行后续程序

Self.location=””;  是JS代码,在跳转指定网页后本句的代码依然执行

image.png 删除留言,GET方式传参

这段代码是为表单文本框进行赋值,value是一个值。这里只是利用php代码获取id的值,echo输出出来,并赋值给value

实践得出的易错点:

Document.write是js语言,要写在内

在HTML中制造超链接:<input name="注册" type="button" id="btn1" title="登注册" value="注册"  onclick="location.href='链接写这里'">

定义对象通常是要先定义一个类,而类是函数形式,而不是var声明