当前位置:   article > 正文

PHP基础梳理_一个梳理语句php

一个梳理语句php

服务器(提供服务)指的就是一台安装特定的软件的计算机,用于专门用于提供特定的服务。
按照服务类型的不同,又划分为:Web 服务器、数据库服务器、文件服务器等等。
客户端(使用服务)指的是在一次服务过程中使用这个服务的设备(网络端点)。
目前最常见的客户端就是浏览器。

B/S 架构:Browser(浏览器) ←→ Server(服务器),这种软件都是通过浏览器访问一个网站使用,服务器提供数据存储等服务。
优点:部署方便(不用安装),可维护性强。
缺点:用户体验不好,不能针对每一个用户的不同特点进行设置;

C/S 架构:Client(客户端) ←→ Server(服务器),这种软件通过安装一个软件到电脑,然后使用服务器提供数据存储等服务。
优点:用户体验好;
缺点:部署不方便(需要安装),可维护性弱;

IP 地址 Internet Protocol Address:标识一个网络设备的地址。八位的二进制数;

域名:方便用户记住ip地址起的名字

特殊域名:127.0.0.1 是本地回环地址 localhost:用来测试本机服务器是否连通;

DNS:接收用户域名解析为IP地址返回;

端口:用来标记各个软件;

hosts 文件:先找本地的host,如果有域名,直接返回,如果没有去dns找;
本机的 hosts 文件配置只能到影响本机的 DNS 寻址,只有以管理员权限运行的编辑器才有权利修改 hosts 文件;(Windows:C:\Windows\System32\drivers\etc\hosts)

端口:http 默认的端口 80; https 默认的端口是 443;

URL(Uniform Resource Locator),统一资源定位符,就是表示网络当中某一个网页的完整访问地址;格式: 协议名称://域名:端口/文件目录(文件名称)?key=value&key2=value2;

请求响应流程:
1. 用户打开浏览器
2. 地址栏输入我们需要访问的网站网址(URL)
3. 浏览器通过 DNS 服务器 获取即将访问的网站 IP 地址
4. 浏览器发起一个对这个 IP地址的 请求
5. 服务端监听指定的 端口 的服务器软件接收到这个请求,进行相应的处理
6. 服务端将处理完的结果返回给客户端浏览器(响应)
7. 浏览器将服务端返回的结果呈现到界面上

√ echo :echo可以输出字符串,它可以同时输出多个字符串,以,分隔;

print (): 可以输出字符串,只能输出一个值 ;print('abc');

print_r(): 可以输出复杂数据的key和值(复杂数据类型);
  • 1
  • 2
  • 3

√ var_dump():可以输出复杂类型,它可以输出复杂类型数据的key和value,同时还可以获取value的长度;

声明变量:
特点:
1.所有变量的声明必须以$符号做为前缀;
2.变量名区分大小写;
3.变量名的组成由字符,数字,下划线构成;
4.PHP 中变量无需声明类型,变量的类型根据值的类型来推断。
5.在php中如果声明变量没有赋值,那么这个值默认为null;
6.在php代码的语句需要添加分号,如果不加,除非是最后一行,否则就会报错;

相关函数:用var_dump() 来打印;
输出结果的细节:在php中如果输出true,那么结果为1,如果输出false,输出结果为null;

isset():判断变量是否存在,判断变量是否定义了返回true 1和false 0,还可以判断变量的值是否为null;
empty():判断变量是否为空值,为空的值有:""  0 "0",null,false,array().为空返回true,否则返回false;
unset():删除变量:
	1.如果删除一个变量,那么变量的值会置为null;
	2.可以同时删除多个变量;
 	3.如果在函数中删除全局变量,那么并不会真正的将全局变量删除;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

数据类型:
- 基本数据类型:string(字符串) integer(整型) float(浮点型) boolean(布尔型);
- 复合数据类型: array(数组) object(对象);
- 特殊数据类型:NULL(空) 资源;

判断数据类型:
√ - is_string():判断当前变量是否是字符串类型;
- is_bool():判断当前变量是否是布尔类型;
- is_int():判断当前变量是否是整形类型;
- is_float():判断当前变量是否是浮点类型;
√ - is_array():判断当前变量是否是数组类型;
- is_object():判断当前变量是否是对象类型;

注意:
1:+ 只能运算符,意味着当出现+的时候,系统会自动的将+两边的数据转换为数值;
2:字符串连接符使用 . ;
3:’’ 的特点
1.它不能解析变量,如果在’'中包含的变量,变量会被当成普通字符串原样输出
2.它支持转义,如\ ’ ;
"“的特点:
1.”“中可以来解析变量。
a.如果在变量名后面紧接着其它的合法字符(中文,a-z A-Z 0-9 _),那么系统会将整个变量及后面的字符串当成一个变量进行解析;
b.如果需要在这种情况下正确的解析变量,可以将变量包含在{}中;
2.支持的转义字符:” \ \n \t $;

数组:(所有数组都是关联数组)
索引数组:通过索引操作数组
创建方式:array(添加数组的成员,成员类型不作要求) [数组成员]
$arr = [1,2,3,true,“abc”];
打印:echo a r r [ 3 ] ; 遍 历 : 在 p h p 中 需 要 使 用 c o u n t ( 数 组 对 象 ) 来 获 取 数 组 的 长 度 f o r ( arr[3]; 遍历:在php中需要使用count(数组对象)来获取数组的长度 for( arr[3];php使count()for(i =0; i &lt; c o u n t ( i &lt; count( i<count(arr);$i++){
echo a r r [ arr[ arr[i].’ ';
};

关联数组:以键值对的方式来描述数据,类似于js中的对象 {key:value,key:value...}
	 $arr = array(
		"name" => "jack",
		"age" => 20,
	);
	打印:print_r($arr);
	          var_dump($arr);
	遍历:
	          foreach($arr as $key => $value){
    			echo $key .":".$value.'<br>';
	          };

	          foreach($arr as $value){
		echo $value.'<br>';
	          };


混合数组:综合了索引数组和关联数组的特点,意味着它里面包含索引和关联两种形式;
	特点:
	1.如果添加元素的时候设置key,那么就没有索引
	2.如果没有设置key,那么系统自动生成索引
	3.下载索引和key不会互相影响。如果没有指定key,那么索引会取到之前的最大的索引下载+1;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

exit();终止

创建数组:
通过[]创建数组:
1.判断当前数组是否已经存在,如果不存在则先创建,再将元素添加到数组第一个元素位置;
2.如果数组已经存在,那么就将当前元素添加到数组中–追加;
3.$arr[10]= a:意思就是添加一两个索引为10的a;

 count():获取指定数组的长度;
 unset():它也可以用来删除数组中的某个成员。但是删除了数组的元素之后,并不会对数组元素的索引产生影响,元素还会保留之前的索引。意味着它只是删除了索引位置的元素,并没有动态的改变数组的长度。
  • 1
  • 2

二维数组:
$arr = array(
“first” => array(
“name” => “jack”,
“age” => 20
),
array(
“name” => “rose”,
“age” => 18
)

	 );
print_r($arr);
	echo '<hr>';
	foreach($arr as $key => $value){
    		// 二维数组的遍历需要考虑使用嵌套循环
    		foreach($value as $subkey => $subvalue){
        			echo $subkey .":".$subvalue ."<br>";
    		}
	};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

数据类型:
数据有不同的类型,那么在操作数据的时候可能进行类型的转换才能完成对应的操作;
类型转换大致可以分为两种:自动转换 强制类型转换;
在php中大多数情况下都是自动转换;
在php中的强制类型转换,就是在变量前面添加(类型):
var_dump((int) s t r ) ; v a r d u m p ( ( a r r a y ) str); var_dump((array) str);vardump((array)str);
(bool) s t r ( s t r i n g ) str (string) str(string)str (object)$str;

运算符:
1: +只能是算术运算符,系统会自动的将+两边的变量转换为数组,如果可以转换,就进行转换,否则返回这个数据类型的默认值 int >0 object > null bool>false float:0.0;
2:在php中字符串连接符使用 . ;

语句:
if语句:if( s c o r e &gt; = 90 ) : e c h o ′ A ′ ; e l s e i f ( score &gt;= 90): echo &#x27;A&#x27;; elseif( score>=90):echoA;elseif(score >= 80):
echo ‘B’
else:
echo ‘E’;
endif;

for语句:	for($i=0;$i<10;$i++):
    			echo '我输出i的值';
    			echo 'abc<br>';
	    	endfor;
  • 1
  • 2
  • 3
  • 4

函数:
function 函数名称(参数列表){
函数体
return 返回值;
};
1:在php中函数内部无法使用函数外部的成员;
2:如果一个变量没有赋值或者这个变量不存在,那么转换为int之后的结果默认为0;
3:可以使用关键字:global;声明使用全局变量;
4:声明并修改需要另起一行:
global $num;
$num = 10;

超全局变量:print_r($GLOBALS);

常量(大写):		
 	定义常量的语法:define(常量名称,常量值,标记是否对大小写敏感false);
	define(name,value,insensitive):insensitive:不敏感的,麻木不仁的;
	默认情况下常量对大小写敏感--区分大小写默认为false区分大小写;
	定义常量:一般情况下常量的名称使用大写字符;
	define("PI",3.14,false);

	__LINE__:可以获取当前的代码行:echo __LINE__;
	__FILE__:它可以获取当前文件的路径 :目录+文件名:echo __FILE__;
	__DIR__:它可以获取当前文件的目录:echo __DIR__;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

载入文件::相当于将被载入的文件的代码在当前位置复制一份
include: 1.如果文件载入失败,也不会影响后续代码的执行 ;
2.如果重复载入文件那么被载入的文件的代码会真正的重复执行;

include_once:	
	1.如果文件载入失败,也不会影响后续代码的执行 ;
	2.如果重复载入文件,最终也只会载入一次;

require:
	1.如果文件载入失败,那么后续不再执行;
	2.如果重复载入文件那么被载入的文件的代码会真正的重复执行;

require_once:
	1.如果文件载入失败,那么后续不再执行 ;
	2.如果重复载入文件,最终也只会载入一次;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

API:
strlen(): 可以获取指定字符串的长度;无法正确的处理中文字符(宽字符集);
GB2312:每个字符占据的2个字节;
UTF-8:每个字符占据3个字节;

mb_strlen():  可以获取指定字符串的长度;没有设置编码就使用当前php的默认编码;

time():  从 Unix 纪元(格林威治时间 1970-01-01 00:00:00)到当前时间的秒数;
	echo date("Y-m-d H:i:s");
	修改时区:php-ini >date.timezone = PRC|Asia/shanghai|Asia/chongqin;

date();格式化时间戳;

strtotime();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

文件操作:
header(“Content-Type:text/html”);

 file_get_contents:  读取文件内容,如果读取成功,就会返回一个字符串类型的值(文件内容),如果读取失败,就会返回false;

file_put_contents(文件路径,需要写入的内容,FILE_APPEND ):将指定的内容写入到文件,同时返回当前成功写入的字符的数量;
 
js中定义常量:const  XX =    ;
  • 1
  • 2
  • 3
  • 4
  • 5

explode():进行字符串的拆分。这个方法可以拆分指定的字符串,并将拆分的结构存储到数组并返回
v a l u e = e x p l o d e ( &quot; ∣ &quot; , value = explode(&quot;|&quot;, value=explode("",str);

implode():它可以将关联的数据以指定分隔符分隔,转换为字符串;

GET请求:
常见的发起GET请求的方式:
- 地址栏访问;
- src/href(超链接);
- 表单;
格式:index.php?userName=jack&password=123;
特点:速度快,通常用于对安全性要求不高的请求;
缺点: 1:在地址栏显示不安全;
2:传递的数据量小,4KB左右(不同浏览器会有差异)

POST请求:
1-后台传的相对来说比较安全,post 方式 安全性比较高;
2-传递数据量大,请求对数据长度没有要求;
3-请求不会被缓存,也不会保留在浏览器历史记录中;

action: 设置提交数据的处理页面。就是用来设置提交到的目标地址。一般来说它就是一个可以进行后台业务处理的页面 ***.php;如果提交的是当前的页面,可以为空;

method: 如果没有设置默认请求方式为get:
get:一般用来获取数据:特点:参数会在url地址栏中拼接;
post:一般用来发送数据到服务器;

<form action="form-get.php" method="get"></form>
如果想提交表单元素的数据,则必须为表单元素设置name属性;
  • 1
  • 2

PHP 中有三个超全局变量专门用来获取表单提交内容:
- $_GET:可以用来接收客户端以get方式传递的参数,注意只能接收以get方式传递的数据; 它的格式是一个关联数组;
- $_POST:用于获取以 POST 方式提交的内容,更标准的说法:接收 请求体 中的数据;
- R E Q U E S T : 可 以 接 收 通 过 g e t 或 p o s t 方 式 提 交 的 数 据 , 但 是 我 们 不 用 , 为 什 么 , 有 两 个 原 因 ; − _REQUEST:可以接收通过get或post方式提交的数据,但是我们不用,为什么,有两个原因; - REQUESTgetpost,_SERVER: 可以以获取服务器接收请求后的相关数据;
$_SERVER[‘REQUEST_METHOD’]:获取当前的请求方式;

form表单:
$_SERVER[“PHP_SELF”]:可以获取当前文件的路径;

1:默认情况下,会收集当前被选择的单选按钮的值,只不过这个值默认都是on;

   	2:我们也可能为单选按钮设置value属性,那么在数据收集的时候就会将当前的value属性的值进行提交;

3:对于 复选框,重点掌握传递多个值的情况:
        		1.如果多个复选框的名称一样,那么就只会默认传递最后一个选项值;
        		2.如果需要传递所有被选择的复选框的数据,那么可以在name属性值后面添加[],如果添加了[],那么系统会默认收集所有被选择的复选框的值,存储到一个数组中;

4:对于下拉列表,如果没有设置value属性,那么默认会传递当前被选择option的innertext ,但是如果设置了value属性,那么就会传递value属性;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

type = “hidden”;

上传文件:
一:客户端:
1、表单的提交的方式设置为post;
2.需要为表单添加enctype:multipart/form-data;

二:服务器端:
		1.$_FILES:可以记录上传文件的相关信息;
		2.使用move_uploaded_file实现文件的移动;
		move_uploaded_file(源文件的全路径,目标文件的全路径);
move_uploaded_file($_FILES["myfile"]["tmp_name"],"./upload/".$myname); 

三:
		1.判断用户进行了提交:empty;

		2.限制文件类型:
    			a.为表单元素添加属性 accept=".jpg,.png"
    			b.可以在服务器进行判断
			[name] => 跨域攻击.png:源文件的名称;
			[type] => image/png:源文件的类型;
			[tmp_name] => C:\Windows\phpE412.tmp:这是文件在服务器的临时路径;
			[error] => 0:错误信息,0代表没有错误;
			[size] => 256436:文件的大小;

        				$type = $_FILES["myfile"]["type"];
		strpos(源字符串,搜索字符串):可以获取指定字符串在源字符串中第一次出现的索引值,索引从0开始;
        			if(strpos($type,"image/") === 0);

		3.设置合理的文件名称:
    			1.生成一个随机的文件名称;
        				$filename = $_FILES["myfile"]["name"];
		2.获取当前文件的扩展名 strrchr(源字符串,指定搜索的字符)
       	 			$extension = strrchr($filename,".");
		3.生成一个随机的文件名称:获取到一个唯一值
        				$myname = time().rand(1000,9999).$extension;
        	
		4.限制文件上传大小的修改:
    			1.upload_max_filesize:这是服务器对上传的文件大小做了限制,默认为2mb,你可以修改这个值,但是要记得重启服务器;
    			2.服务器对每一次post请求传递的数据做了限制,默认为8mb,可以在php.ini配置文件中修改post_max_size属性值;

		5.同时上传多个文件:
    			1.设置多文件选择,但是它只是能够选择多个文件,传递给服务器的文件数据只是后面的那个文件。如果在设置了multiple属性的时候,需要传递多个文件给服务器,那么只需要在name属性值后面添加[];
    			2.也可以添加多个表单元素,同时也需要在名称后面添加[]:
        				<input type="file" name="myfile[]">
        				<input type="file" name="myfile[]">;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

1:如果在php结构中直接写return,那么当运行到return代码的时候,整个php文件的执行就结束了
2::如果在方法(function)中写return,那么这个return就只能结束这个方法的执行;

HTTP协议(HyperText Transfer Protocol,超文本传输协议):
一般现在称 HTTP 为端与端之间的通讯协议。

约定形式:
1. 客户端通过随机端口与服务端某个固定端口(一般为80)建立连接 三次握手
1. 客户端向服务器发送一个连接请求
2. 服务器向客户端返回一个确认信息
3. 客户端将请求及这个确认信息发送服务器
2. 客户端通过这个连接发送请求到服务端(这里的请求是名词)
3. 服务端监听端口得到的客户端发送过来的请求
4. 服务端通过连接响应给客户端状态和内容(响应报文)

约定内容:
- 请求 / 响应报文格式
- 请求方式 —— GET / POST / etc.
- 响应状态 —— 200 / 404 / 302 / 304 / etc.
- 预设的请求 / 响应头

请求报文:
get:请求行、请求头;
post:请求行、请求头 (空行隔开) 请求体;

响应报文:
响应行,响应头,(空行隔开) 响应体;

设置响应文件类型:
- header(‘Content-Type: text/css’);
- 常见的 HTTP MIME type:text/css text/html text/plain applcation/javascript
- 重定向(跳转到其他网页)
- header(‘Location: https://www.baidu.com’);

HTTP:超文本传输协议;

HTTP 会话:在计算机术语中,会话是指一个终端用户与交互系统进行通讯的过程。

HTTP无状态:无状态”是指HTTP协议对于事务的处理没有记忆能力。

状态保持:
cookie原理分析:
1. 客户端发送一个http请求到服务器端
2. 服务器端发送一个http响应到客户端,其中包含Set-Cookie头部
3. 客户端发送一个http请求到服务器端,其中包含Cookie头部
4. 服务器端发送一个http响应到客户端 ;

	语法:setcookie(name[, value, expire, path, domain]);

	有效期: setcookie("username",  "jack",  time() + 10);
	设置永久存储的cookie:
		setcookie("username","jack",PHP_INT_MAX);

	path有效路径:
		1.设置目录为父级目录,子目录也能访问
		2.设置目录为子级目录,父级目录不能访问
		 /代表整站都能访问
    				setcookie("username","jack",PHP_INT_MAX,"/");

	86400等于一天;
	
	删除cookie:
		第一种:setcookie("username","jack",time()-3600);
		第二种:怎么创建就应该怎么删除:方法的参数应该对应:
			setcookie("username","jack",PHP_INT_MAX,"/");
			删除:setcookie("username","",PHP_INT_MAX,"/");

	缺点:
		- COOKIE数据储存在浏览器端,不太安全;
		- COOKIE存储的数据类型,只能是字符串;
		- COOKIE文件是有容量限制(大约4KB)。4*1024b--> 1个文字大概是2~3b

Session:(把数据存在服务器端,id存在浏览器端,依赖于cookie);
	- 设置session:session_start();
		$_SESSION['user'] = array(
			'username'=>'lisi','
			age'=>'12',
			);

	- 读取session:session_start();
		$user = $_SESSION['user'];

	- 删除一个session信息:session_start();
		unset($_SESSION['user']);

	- 删除所有session信息:session_start();
		1unset($_SESSION);
			$_SESSION = [];

	- 销毁session:session_destroy();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/149460
推荐阅读
相关标签
  

闽ICP备14008679号