一、php基础
php (动态资源) 是服务端的语言。文件以.php后缀结尾,所有程序包含在<?php 这里是代码 ?>
新建一个php 文件 .php 这个php 文件会被服务器进行转换,转换成静态资源。
php 最终是转换成一个html,浏览器只认识html
所有的东西路径,目录及文件命名都不能使用中文,因为wamp 是国外的软件。
1、变量
变量命名:$ 必须前缀,字母,数字,下划线,不能以数字开头。大小写敏感(区分大小写)$username
变量类型:字符型、整型、浮点型、布尔型、数组、对象、NULL
布尔类型与js不同,$flag=false;echo $flag;$flag=true;echo $flag;输出1,1代表true ,false 没有任何输出.
数组:两种类型的数组,
一种是索引数组:$array=array(“www”,1,3,4);用来输出数组里面详细的信息。var_dump($array);
索引数组可以根据索引去取值。echo $array[2];
一种是关联数组:
数组里面是放数据的,关联数组里面放的数据使一些有关联的数据。一般都是键值对 $array=array("username"=>"zhangsan","age"=>11);
echo $array['username']; //获取这个关联数组里面的值
对象:在php 里面先要有一个类,然后通过类去产生对象。通过类产生新的对象,可以产生很多对象。
class Car{
public $name="bsj";
public $price="98";
}
$car1=new Car;
echo $car1->name; //访问对象下面的属性。name 需要去掉$
2、内容输出
echo:输出简单数据类型,如字符串、数值
print_r():输出复杂数据类型,如数组
var_dump():输出详细信息,如对象、数组3、运算符。基本与Javascript语法一致。
$chat1="hello";
$chat2='world';
echo $chat1.$chat2;
. 号表示字符串拼接符,Javascript中为+号。
4、函数。 与Javascript基本一致。 函数名对大小写不敏感。⑴function sayHello(){
echo 'ahaaha';
}
sayHello();
⑵有默认参数。不传参数是输出默认的参数值
function sayHello($person="小明"){
echo '你好'.$person;
}
sayHello("小猪");
索引数组遍历:⑴ $array=array("haha","hohoho","dadada");
$length=count($array);//获取数组的长度,使用php 给我们提供给一个函数,count();
for($i=0;$i<$length;$i++){
echo $array[$i]."<br>";
}
⑵ foreach($array as $data){
echo $data."<br/>";
}
关联数组遍历: $array=array("username"=>"zhangsan","age"=>"13");
foreach($array as $key=>$val){
echo $key.":".$val."<br>";
}
foreach 仅能用于数组,每次循环中,当前单元的键名也会在每次循环中被赋给变量 $key,当前单元的值被赋给 $value。并且数组内部的指针向前移一步。
6、常用php函数
①echo②print_r③var_dump④count()//获取数组的长度⑤in_array("11",$array) //判断一个值否在数组当中
⑥$flag=array_key_exists ("username",$array);检测数组中是否存在key
⑦file_get_contents("1.json") 获取文件的内容。根据路径去获取指定的文件的内容,返回一个字符串。
7、表单处理
表单name属性的是用来提供给服务端接收所传递数据而设置的
表单action属性设置接收数据的处理程序
表单method属性设置发送数据的方式(get,post)
当上传文件是需要设置enctype="multipart/form-data",且只能post方式
$_GET接收get 传值。用于获取客户端的数据,get 方式提交的数据 。 $_GET通过php 提供的函数来获取
$_POST接收post 传值。用于获取客户端的数据,get 方式提交的数据 。$data=$_POST;
$_FILES接收文件上传
向服务器发送请求有三种方式:
①是表单提交 可以设置 get方式提交,也可以设置成post 方式提交
②点击超链接 都是get 方式提交
③是直接通过浏览器地址栏输入。 也是get 方式提交。
get 提交客户端1:超链接2:地址栏3:表单
get 提交服务端:$_GET;这是一个变量,这个变量指向到一个数组,数组里面有客户端传递过来的数据。
遍历数组就可以得到数据
post 提交客户端
<form action="" method="POST">
</form>
post 提交服务端:接收客户端的数据:$_POST
例:<a href="demo09.php?username=zhangyang&password=1111">get 方式提交超链接</a>
做web 开发,基本上都是一个请求,一个响应。
客户端:
<form action="地址" method="">
<input type="submit" value="提交">
</form>
服务端:
php
在php 里面一般情况下我们都是做三件事情
1:接收用户的请求
获取用户提交给我的数据 get ,post 。$_GET,$_POST
2:对用户的请求进行处理
可能需要操作数据,
注册,可能是想数据库里面添加一条数据
登陆:可能就查询数据库里面有没有这样的一条记录。
3:给用户一个响应
一定要给用户一个响应。如果没有响应,用户就是一个空白界面。
登陆:
我要给用户响应一个界面,我使用echo 输出麻烦。
<?php
header("Content-Type:text/html;charset=utf-8");//解决乱码。 当前默认的文件的编码就是utf-8。告诉客户端浏览 器,以utf-8 来进行解码。
$data=$_POST;//获取客户端的数据。
//获取到用户名,密码之后
// var_dump($data); //调试.
$username=$data['username'];
$password=$data['password'];
/*业务逻辑。 */
if($username=='liuzhanchao' && $password=='123456'){
echo "你有病,请吃药";
}else{
echo "欢迎,欢迎".$username;
}
?>
8、php 动态向页面输出
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>post 方式提交 只有表单才能设置提交方式,post 提交 </title> <style> ul{ list-style:none; } </style> </head> <body> <?php /*可以连接数据库*/ $array=array("京东","东京","奶茶","京东奶茶"); ?> <?php foreach($array as $key){?> <?php }?> <ul> <?php foreach($array as $key){ /*php 引擎解析不是 <?php ?>*/ <li> <a href=""><?php echo $key; ?></a> </li> <?php }?> </ul> </body> </html>二、http协议
http 协议 (协议:约定,规范,规定)http 协议是用来定义客户端浏览器与服务器进行通讯的一个规范。
http 协议是基于请求/响应的协议。我给服务器发送一个请求,服务器给客户端一个响应。
协议的分为:请求的协议 (客户端给服务器。) 响应的协议(服务器给客户端。)
charles 是一个抓包工具。用来截获客户端浏览器与服务器传输的时候的数据。在抓捕之前客户端与服务器要进行交互。浏览器也有自带的抓包,默认抓包。
请求的数据分为四部分:客户端发给服务器的数据。 Referer:从哪个URL跳转过来的
1、Post 方式提交
⑴:请求首行 POST /01day/code/login.php HTTP/1.1
①:POST 请求的提交方式
②:第二个:请求的服务器的资源的地址
③:这个是协议的版本。
⑵:请求头
每个请求头都有特殊的含义;是有浏览器组装好之后发给服务器的;每个头都有特定的含义。
⑶:请求空行
⑷:请求体:客户端发送给服务器的数据。
注:当以post形式提交表单的时候,请求头里会设置
Content-Type:application/x-www-form-urlencoded,以get形式不需要
Host:localhost请求的主机
Cache-Control:max-age=0控制缓存
Accept:*/*接受的文档MIME类型
User-Agent:很重要
Referer:从哪个URL跳转过来的
Accept-Encoding:可接受的压缩格式
2、GET 方式提交
⑴:请求首行
发送给服务器端的数据在要访问的地址的后面,地址栏里面。
⑵:请求头
每个头都代表特殊含义。
⑶:请求空行
3、get 与post 进行一个对比。
get提交:
①:get 提交发送给服务器的参数数据都在地址栏里面 (不安全)
②:get 提交没有请求体
③:get 提交因为发送给服务器的数据都在地址栏,所以传送给服务器的数据大小有限制
post提交:
①:post 发送的数据都在请求体里面
②:发送给服务器的数据大小没有限制。
③:安全性高。
表单提交一般我们都是使用post 提交.
响应的数据也分为四部分: 服务器给客户端
①响应首行
HTTP/1.1 协议的版本
200 响应的状态码 ,规定死了,每个状态码都代表特定的含义。
200 代表 0k
304 缓存,文档未修改
404 代表响应的资源没有找到。
500 服务器内部错误 写的逻辑代码出错了,就会出现500
②响应头
Content-Length 18 //响应主体长度
告诉客户端浏览器,我给你的内容是一个文本/html格式,你使用utf-8的编码区解析
Content-Type text/html;charset=utf-8;
Date Sun, 17 Jul 2016 16:14:11 GMT //告诉客户端浏览器的时间
Server Apache/2.2.21 (Win32) PHP/5.3.10 // 告诉客户端服务器的版本
X-Powered-By PHP/5.3.10
③响应空行
④响应体 即服务端返回给客户端的内容;浏览器获取到响应体,会解析。
4、请求的数据格式里面那些的是重要:
User-Agent:告诉服务器客户端浏览器的版本
Content-Type:application/x-www-form-urlencoded
内容类型:如果我使用post 提交,会给服务器发送数据
发送给服务器的数据会编码之后再发送给服务器encoded;
5、响应的数据格式里面那些是重要的:
告诉客户端浏览器服务器返回的内容类型,以及解码的方式。
Content-Type:text/html;charset=utf-8;
//Refresh 如果我发送一个这样header("Refresh:10;url=http://www.baidu.com");的响应头给客户端浏 览器,浏览器解析到这个响应头,会按照http 的标准来进行。
10 秒后自动跳转到百度 Refresh: 10; url=http://www.baidu.com
客户端与服务器在进行数据传输的时候都是以字节形式进行的