php基础和http知识介绍

来源:互联网 发布:美术字在线生成器软件 编辑:程序博客网 时间:2024/05/01 21:56

一、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("小猪");

          5、遍历数组

               索引数组遍历: $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

                  超链接发送请求给服务器发送参数。首先第一个,我必须在路径的第一个位置添加一个?发送一个参数过                    去.如果发送第二个参数,加一个&,password=1111

                  例:<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

            客户端与服务器在进行数据传输的时候都是以字节形式进行的




0 0
原创粉丝点击