php+mysql+cookie+模块化开发

本文介绍PHP的基础知识,包括输出方法、变量定义、数据类型、数组操作、MySQL数据库连接与查询,以及AJAX的基本使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PHP

PHP的输出
<?php

	echo "你好";
	echo("你好");
	print("你好");
	print "hello";
	
	var_dump("接触PHP");//代码调试使用这个
定义变量

php是弱引用语言,所以用起来比较随意。

在这里插入图片描述

数据类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IlatRaym-1605075741244)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1604644926390.png)]

数组

1、索引数组 下标是数字叫做索引数组
2、关联数组 下标是字符串叫关联数组 (类似于ECMA6的map类型)
3、全局数组
$_GET 接收通过get提交过来的所有的数据
_POST 接收通过post提交过来的所有的数据

数组中的索引数组和关联数组可以相互结合,结合成多维数组。

数组的长度 count($cars) 返回数组的长度

ajax

ajax 异步的 javascript和 xml(数据传输格式)
异步的 javascript 和 数据传输

【注】ajax是前后端数据交互的搬运工,都可以异步执行。

xml数据传输格式(

大型的门户网站 新浪、网易、凤凰网)
优点:
1、种类丰富
2、传输量非常大
缺点:
1、解析麻烦
2、不太适合轻量级数据

json数据传输格式(字符串)

95%移动端应用。
优点:
1、轻量级数据
2、解析比较轻松
缺点:
1、数据种类比较少
2、传输数据量比较小

JSON.parse()
JSON.stringify()

​ 【注】任何一个程序都是由很多个小程序组成的。
​ 【注】用来描述一个程序运行状态。
​ 同步 阻塞,当前程序运行,必须等前一个程序运行完毕以后,才能运行。
​ 异步 非阻塞,当前程序运行,和前面程序的运行没有任何关系。

ajax异步加载数据
					//1、创建ajax对象
                    var xhr = new XMLHttpRequest();
                    //2、调用open
                    /* 
                        第一个参数: 请求方式  get post
                        第二个参数:url
                        第三个参数: 是否异步  
                             true 异步
                             false同步
                     */
                    xhr.open("get", "1.txt", true);

                    //3、调用send
                    xhr.send();

                    //4、等待数据响应
						/* 
                        readystatechange 事件类型
                        xhr.readyState  发生变化的时候调用
                        0  调用open方法之前
                        1  调用你send方法之后,发送请求
                        2  send方法完成,已经接受到所有的响应内容
                        3  正在解析下载到的数据
                        4  解析完成
                     */
                    xhr.onreadystatechange = function(){
                        if(xhr.readyState == 4){
                            //判断本次下载的状态码都是多少
                            if(xhr.status == 200){
                                alert(xhr.responseText);
                            }else{
                                alert("Error:" + xhr.status);
                            }
                        }
                    }
ajax对象兼容:(if else)
					//ajax对象兼容
                    var xhr = null;
                    if(window.XMLHttpRequest){
                        xhr = new XMLHttpRequest();
                    }else{
                        xhr = new ActiveXObject("Microsoft.XMLHTTP");
                    }
ajax对象兼容:(try)
					//1、创建ajax对象
                    var xhr = null;
                    try{
                        xhr = new XMLHttpRequest();
                    }catch(error){
                        xhr = new ActiveXObject("Microsoft.XMLHTTP");
                    }
封装ajax:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zoQznjXy-1605075741256)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1603876998017.png)]

状态码:

200——交易成功

404——没有发现文件、查询或URl

401——请求授权失败

mysql

PHP连接数据库
<?php 
	header("Content-type:text/html;charset=utf-8");
	/*
		链接数据库  天龙八部
	*/
	//1、链接数据库
	/*
		第一个参数:链接数据库的IP/域名
		第二个参数:用户名
		第三个参数:密码
	*/
	$link = mysql_connect("localhost", "root", "123456");
	//2、判断是否连接成功
	if(!$link){
		echo "链接失败";
		exit; //终止后续所有的代码
	}
	//3、设置字符集
	mysql_set_charset("utf8");
	//4、选择数据库
	mysql_select_db("yyy");
	//5、准备sql语句
	$sql = "SELECT * FROM student";
	//6、发送sql语句
	$res = mysql_query($sql);
	//设置表头
	echo "<table border = '1'>";
	echo "<tr><th>学生学号</th><th>学生姓名</th><th>英语成绩</th><th>数学成绩</th><th>语文成绩<th></tr>";
	//7、处理结果
	while($row = mysql_fetch_assoc($res)){
		echo "<tr><td>{$row['id']}</td><td>{$row['name']}</td><td>{$row['english']}</td><td>{$row['math']}</td><td>{$row['chinese']}</td></tr>";
	}
	echo "</table>";
	//8、关闭数据库
	mysql_close($link);
 ?>

【注】保证id不重复,设置id为这个表的主键(PrimaryKey) 选择id为AI(自动增加)

网络协议

计算机网络
ISO 7层的网络分层
通用 5层的网络分层

网络数据在互联网进行传输,遵从传输规则,叫做网络传输协议。

TCP:面向链接协议。

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。(快递,外卖)

【注】如果需要传输,就先建立链接,开始传输数据,当数据传输结束,就直接断开链接。如果再要进行传输,重新建立链接。

三次握手建立连接,四次挥手断开连接

优点: 缺点:
1、安全 1、传输效率低
2、准确度非常高 2、耗资源

UDP:无连接协议

UDP 是User Datagram Protocol的简称, 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 (适用于对于及时性要求高,但是对于数据准确度要求不高)
传输数据:直接传,根本不管是否收到数据。

缺点: 优点:
1、不安全 1、及时性非常高
2、准确度非常低 2、消耗资源少
3、经常丢包 【注】视频聊天。

HTTP(无状态的协议)

cookie

cookie概念

回话跟踪技术: 在一次会话从开始到结束的整个过程,全程跟踪记录客户端的状态(例如:是否登录、购物车信息、是否已下载、是否 已点赞、视频播放进度等等)

cookie的语法

格式: name=value;[expires=date];[path=path];[domain=somewhere.com];[secure],
name 键
value 值 都是自定义
【注】后续中括号的内容(中括号是我加的),都是可选项。
【注】火狐支持本地加载的文件缓存cookie,谷歌只支持服务器加载文件缓存cookie

cookie特点

​ 1、可以设置过期时间
​ 2、最大可以存储4KB,每一个域名下最多可以存储50条数据(不同的浏览器,有偏差)
【注】只能字符串。一般只存储一些重要的信息。登录,购物车信息,是否点赞,视频播放进度等。

			/* 
                encodeURIComponent  将中文编译成对应的字符
                decodeURIComponent  将对应的字符编译成中文
             */
              //设置cookie
              document.cookie = 'username=' + encodeURIComponent("钢铁侠");
              //获取cookie
              alert(decodeURIComponent(document.cookie));

expires:过期时间,如果没有声明,则为浏览器关闭后即失效。声明了失效时间, 那么时间到期后方能失效。
必须填写,日期对象
【注】系统会自动清除过期的cookie。

path 限制访问路径
如果不去设置,默认是加载当前.html文件的路径
【注】我们设置的cookie的路径,和加载当前文件的路径,必须一致,如果不一致,cookie访问失败。

domain 限制访问域名
如果不去设置,默认是加载当前.html文件的服务器域名/ip
【注】如果加载当前文件域名和设置的域名不一致,设置cookie失败。

secure
如果不设置,设置cookie,可以通过http协议加载文件设置
也可以通过https协议加载文件设置

【注】设置这个字段以后,只能设置https协议加载cookie.

https 证书认证协议
http

闭包

闭包的特点:

1、函数嵌套函数
2、内部函数引用外部函数到的变量或者形参
3、被引用的变量或者形参就不会被垃圾回收机制所回收,常驻内存。

好处:

1、希望一个变量常驻在内存当中
2、避免全局变量污染
3、可以声明私有成员

可以从一个域中取出原本访问不到的变量去使用

模块化开发

1.模块化的写法-原始写法

模块就是实现特定功能的一组方法。
只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块。
比如:tool.js

缺点:"污染"了全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系。

2.Javascript模块化的写法-对象写法

把模块写成一个对象,所有的模块成员都放到这个对象里面。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ho7uJOhP-1605075741267)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1604630197591.png)]

3.Javascript模块化的写法-立即执行函数写法(闭包)

使用"立即执行函数"(IIFE),可以达到不暴露私有成员的目的。

外部代码不能访问内部变量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D6ZCNyve-1605075741272)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1604630575847.png)]

4.Javascript模块化的写法-放大模式

如果一个模块很大,必须分成几个部分,或者一个模块需要继承另一个模块,这时就有必要采用"放大模式"(augmentation)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oziSCx2J-1605075741277)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1604630545943.png)]

5.Javascript模块化的写法-宽放大模式

在浏览器环境中,模块的各个部分通常都是从网上获取的,有时无法知道哪个部分会先加载。如果采用上一节的写法,第一个执行的部分有可能加载一个不存在空对象,这时就要采用"宽放大模式"。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mVldoGTO-1605075741286)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1604630554064.png)]

AMD

AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"。它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行。

require.js

(1)实现js的异步加载,避免网页失去响应

(2)管理模块之间的依赖性,便于代码的编写和维护

<script src = 'js/require.js' defer async = 'true' data-main = 'js/main.js' charset="big5">//defer IE下的异步加载 async = 'true' 火狐和谷歌浏览器下的异步  入口文件

data-main属性的作用是,指定网页程序的主模块。在上例中,就是js目录下面的main.js,这个文件会第一个被require.js加载。由于require.js默认的文件后缀名是js,所以可以把main.js简写成main。

主模块的写法

主模块依赖于其他模块,这时就要使用AMD规范定义的的require()函数。

require(["nav","slide","data"],function(nav,slide,data){}

require()函数接受两个参数。第一个参数是一个数组,表示所依赖的模块,上例就是[“nav”,“slide”,“data”],即主模块依赖这三个模块;第二个参数是一个回调函数,当前面指定的模块都加载成功后,它将被调用。加载的模块会以参数形式传入该函数,从而在回调函数内部就可以使用这些模块。
require()异步加载nav,slide,data,浏览器不会失去响应;它指定的回调函数,只有前面的模块都加载成功后,才会运行,解决了依赖性的问题。

模块化加载
require.config({
    paths:{
        "jquery": "jquery-1.11.3",
        "jquery-cookie": "jquery.cookie",//设置依赖关系 jquery-cookie是通过jQuery开发的
        "nav":  "nav",
        "slide":"slide",
        "data":"data"
    }
    )}

使用require.config()方法,我们可以对模块的加载行为进行自定义。require.config()就写在主模块(main.js)的头部。参数就是一个对象,这个对象的paths属性指定各个模块的加载路径。

require.js要求,每个模块是一个单独的js文件。这样的话,如果加载多个模块,就会发出多次HTTP请求,会影响网页的加载速度。因此,require.js提供了一个优化工具,当模块部署完毕以后,可以用这个工具将多个模块合并在一个文件中,减少HTTP请求数。

AMD模块的写法

模块必须采用特定的define()函数来定义。如果一个模块不依赖其他模块,那么可以直接定义在define()函数之中。 如果这个模块还依赖其他模块,那么define()函数的第一个参数,必须是一个数组,指明该模块的依赖性。

define(["jquery"],function($){})
AMD规范
 AMD规范:(客户端/浏览器)
                声明:
                    define(function(){
                        //代码
                        return {
                            outA: showA,
                            outB: showB
                        }
                    })
                引入:(异步执行)
                    require("moduleA.js", function(moduleA){

                        //这里的代码。模块引入之后执行。
                        moduleA.putA();
                        moduleA.outB();
                    })

                    alert("hello world");
CommonJS规范(服务器)编写代码

				声明:
                    module.exports = {
                        outA: showA,
                        outB: showB
                    }
                引入:(同步执行)
                    var moduleA = require('moduleA.js');
                    moduleA.outA();
                    moduleA.outB();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值