美文网首页我爱编程
11-Ajax(二)PHP相关知识及语法介绍

11-Ajax(二)PHP相关知识及语法介绍

作者: magic_pill | 来源:发表于2017-09-08 16:50 被阅读67次

    PHP基础

    服务端web开发

    • 在讲解什么是服务端开发之前,让我们先思考几个问题:

    • 网站访问:当我们做好了.html的网站,如何让别人(朋友,用户)可以访问到呢?

      • 使用U盘拷贝,QQ发送文件等直接将文件共享的方式?---不灵活;
      • 将网站放在服务器上,让用户通过网址访问?---绝大多数网站的做法。
    • 网站内容更新:如果用户每次访问我们的网站看到的内容都是一样的,在最初的新鲜劲过去以后估计就再也不想访问我们的网站了o(╯□╰)o,那么如何去更新网站的内容呢?

      • 当有内容、图片,或者界面需要更新时,直接修改.html文件?---费时费力;
      • 通过某种手段,当有新的消息,自动的完成网站的更新?---动态网站。
    • 如何实现网站动态化:网站的本质,其实就是一堆按照某种规则排列的字符串而已,如果我们可以通过某种方式,让电脑动态生成这些字符串,是不是就实现了网站的动态化?

      • 想要让电脑干事情,可以通过编程语言来实现;
      • 编程语言的编写位置为服务器,因为用户是向服务器要网站的;
      • 在服务器,通过编程语言让用户访问的网站动态化叫做:服务端web开发
      • web服务器:提供了web服务的计算机;请求的是HTML:读取并返回、在服务端一般不会对这个html页面进行任何操作;web后台开发:本质是动态生成html、css、js。
    • 可选开发方式:虽然基本上所有可以返回字符串的编程语言都能够实现这个功能,目前市场主流开发语言有:Java、PHP、ASP、.Net、Ruby、Python、Erlang等。虽然可以选择的开发语言有很多种,但是本质都是一样的:

    • 当用户访问网站了,根据某些逻辑,生成对应的HTML、CSS、JS代码给用户。

    PHP简介

    • PHP在众多的编程语言中,是比较容易上手,结合我们搭建的WAMP环境就能够开始学习了。

    • PHP代码执行方式:服务端web编程写好的代码,需要通过浏览器访问服务器,在服务器端执行,然后返回给用户结果,如果直接使用浏览器打开,就会解析为文本。

    PHP常见语法

    • 这里只列举常用的PHP语法,更为详细的语法教程可以查阅:http://www.w3school.com.cn/php/index.asp

    • 注意点:

    • 必须放在服务器配置的网站目录中;

    • 不要直接用sublime、webstorm运行;

    • 必须写在<?php ?>标签中;

    • 执行的位置是在服务端需要通过浏览器请求.php页面才能够执行;

    • php的逻辑代码不会输出,仅仅只会返回执行完毕的结果。

    • 文件定义、注释:PHP文件以.php结尾,代码的编写位置在<?php 写在这里?>,注释的写法跟js一致:

    <?php
      //这是单行注释
      /*
          这是多行注释
      */
    ?>
    
    • PHP变量规则:

    • 变量以$符号开头,其后是变量的名称;

    • 变量名称必须以字母或下划线开头:$a;$b;$a1;$_abc

    • 变量名称不能以数字开头;

    • 变量名称只能包含字母、数字和下划线(A-z0-9 以及_);

    • 变量名称对大小写敏感$y$Y 是两个不同的变量)。

    • 补充:

      • 下面这些是错误的变量定义:$1;$哈哈;$^&*;
      • 下面定义的两个变量是不同的,大写,小写x:$x;$X;
    • 数据类型

    • PHP支持的数据类型包括:字符串、整数、浮点数、布尔、数组、对象、NULLL(注:由于对象中可以使用函数,故对象的语法在下文中会提及);

    • 定义字符串时需要注意:

      • 单引号:'',内部的内容只是作为字符串;
      • 双引号:"",如果内部是PHP的变量,那么会将该变量的值解析;
    • 字符串连接:不同于JavaScript,PHP中使用.进行连接

    // 字符串
    $str = '123';
    
    // 字符串连接
    $str2 = '123'.'哈哈哈';
    
    // 整数
    $numA = 1; //正数
    $numB = -2;//负数
    
    // 浮点数
    $x = 1.1;
    
    // 布尔
    $a = true;
    $b = false;
    
    // 普通数组:数组中可以放数字、字符串、布尔值等等不限制类型
    $arr = array('123',123)
    //取数组里的数据
    $arr[1];
    
    // 关系型数组:类似于json的格式,但是不是“:”,而是使用“=>”分隔键值对,获取通过“["key"]”即可获取
    $person = array('name'=>'小李子','age'=>'35','skill'=>'发福');
    echo $person['skill'];
    
    • 运算符:PHP中的运算符跟JavaScript中的基本一致,用法也基本一致:
    • 算数运算符:+、-、/、*、%
    • 赋值运算符:x = y、x += y、x -= y, 注:这里列举的并不完全,更为详细的PHP运算符教程请查阅:http://www.w3school.com.cn/php/php_operators.asp
    <?php
        $x=10;
        $y=6;
        echo ($x + $y); // 输出 16
        echo ($x - $y); // 输出 4
        echo ($x * $y); // 输出 60
        echo ($x / $y); // 输出 1.6666666666667
        echo ($x % $y); // 输出 4
    ?>
    
    • 函数:PHP虽然系统内建了一些函数,但是这不影响我们定义自己的。函数的作用就是在代码中可以重复使用的语法块,页面加载的时候不会执行,只有在被调用的时候才会执行;
    // 基础语法
    function functionName() {
      //这里写代码
    }
    
    // 无参数 无返回值的函数
    function sayhi(){
        echo "Hello World";
    }
    
    // 有参数 无返回值的函数
    function sayName($name){
        echo $name.'你好哦';
    }
    // 调用
    sayName('小狐狸');
    
    // 有参数,参数有默认值的函数
    function sayFood($food='西兰花'){
        echo $food.'好好吃';
    }
    // 调用
    sayFood('西葫芦');// 如果传入参数,就使用传入的参数
    sayFood();// 如果不传入参数,直接使用默认值
    
    // 有参数,有返回值的函数
    function sum($a,$b){
        return $a+$b
    }
    sum(1,2);// 返回值为1+2 = 3
    
    • 对象:PHP中允许使用对象这种自定义数据类型;使用时必须先声明实例化之后才能够进行使用:
    // 定义最基础的类
    class Fox{
        public $name = 'tangtang';
        public $age = 10;
    }
    $fox = new Fox;
    // 对象属性取值
    $name = $fox->name;
    // 对象属性赋值
    $fox->name = '小狐狸';
    
    // 带构造函数的对象
    class fox{
        // 私有属性,外部无法访问
        var $name = '小狐狸';
        // 定义方法 用来获取属性
        function Name(){
            return $this->name;
        }
        // 构造函数,可以传入参数
        function fox($name){
            $this->name = $name
        }
    }
    // 定义了构造函数 需要使用构造函数初始化对象
    $fox = new fox('小狐狸');
    // 调用对象方法,获取对象名
    $foxName = $fox->Name();
    
    • 内容输出:echo,PHP语句直接使用即可;输出字符串推荐使用print_r();函数;输出复杂数据类型,比如数组,对象,推荐使用var_dump();函数输出详细信息:
    $arr =array(1,2,'123');
    
    echo '123';
    // 结果为 123
    
    print_r($arr);
    // 结果为 Array ( [0] => 1 [1] => 2 [2] => 123 )
    
    var_dump($arr);
    /* 结果为
        array
      0 => int 1
      1 => int 2
      2 => string '123' (length=3)
    */
    
    • 逻辑语句:和js中的一样;
    • if...else...
    $sex = "man";
    if ($sex == "man"){
           echo "男生";
    }else {
           echo "女生";
    }
    
    • switch...case...
    $day = "friday";
    switch($day){
            case "monday":
                echo "感觉自己被床封印了";
                break;
            case "friday":
                echo "哇塞,明天就可以休息咯";
                break;
            default:
                echo "感觉自己被掏空";
                break;
    }
    
    • 循环语句:
    • for循环:
    for ($x=0; $x<=10; $x++) {
            echo "数字是:$x <br>";
    }
    
    • foreach;
    $colors = array("red","green","blue","yellow");
    // 参数1为循环的对象,参数2会将对象的值挨个取出,直到最后
    // 如果循环的是对象的话,输出的是对象属性的值
    foreach ($colors as $value) {
            echo "$value <br>";
    }
    输出结果为
    /*
    red
    green
    blue
    yellow
    */
    
    • while循环:
    $num = 0;
    while($num <= 10){
            echo "报数:"."$num"."<br>";
            $num++;
    }
    
    • 三元表达式:$a1 = $a0>2 ? 5:0;

    header()函数

    • php中告诉浏览器按照哪种文本编码解析,是php中直接帮助我们定义好的函数,直接使用即可;
    • 用来向客户端(浏览器)发送报头,如果出现中文无法显示,可以尝试在PHP代码顶部添加如下代码设置文本编码:
    • 设置编码格式为:utf-8:
    header("content-type:text/html; charset=utf-8");
    
    • 设置页面跳转:
    • 设置跳转到百度首页:
    header("location:http://www.baidu.com");
    
    • 设置页面间隔刷新:
    header("refresh:3;url=http://www.taobao.com");
    

    网络数据提交

    PHP$_GET数据获取

    • 关于$_GET:

    • 获取get的数据;

    • php帮我们准备好的超全局对象;

    • 关系型数组,取值用的是key;

    • 跟提交过来的key是相对的,key是表单元素的name属性;

    • 有数据大小限制,url长度是有限的。

    • 在PHP中,如果想要获取通过get方法提交的数据,可以通过$_GET对象来获取(虽然参数在地址栏中可以查看);

    • 通过$_GET['key']即可获取数据,key是提交的时候表单元素的name属性值。

    • 如果想要提交数据:

    • form标签必须要有action属性;

    • method=get,不设置默认是get;

    • form表单中的表单元素必须要有name属性。

    • HTML代码:下面就是一个简单的表单代码,将数据提交到01.php,使用get的方式:

    <form action="01.php" method="get" >
        <label for="">姓名:
            <input type="text" name="userName">
        </label>
        <br/>
        <label for="">邮箱:
            <input type="text" name= "userEmail">
        </label>
        <br/>
        <input type="submit" name="">
    </form>
    
    • PHP代码:
    <?php
        echo "<h1>GET_PAGE</h1>";
        echo 'userName:'.$_GET['userName'];
        echo '<br/>';
        echo 'userEmail:'.$_GET['userEmail'];
     ?>
    

    PHP$_POST数据获取

    • 关于$_POST:

    • 获取post的数据;

    • php帮我们准备好的超全局对象;

    • 关系型数组,取值用的是key;

    • 跟提交过来的key是相对的,key是表单元素的name属性;

    • 提交的数据大小是没有限制的,用来上传文件给服务器。

    • 在PHP中,如果想要获取通过post方法提交的数据,可以通过$_POST对象来获取;

    • HTML代码:下面就是一个简单的表单代码,将数据提交到02.php,使用post的方式(注意:代码中的method改为post)

    <form action="02.php" method="post" >
        <label for="">姓名:
            <input type="text" name= "userName">
        </label>
        <br/>
        <label for="">邮箱:
            <input type="text" name= "userEmail">
        </label>
        <br/>
        <input type="submit" name="">
    </form>
    
    • PHP代码:
    <?php
        echo "<h1>POST_PAGE</h1>";
        echo 'userName:'.$_POST['userName'];
        echo '<br/>';
        echo 'userEmail:'.$_POST['userEmail'];
     ?>
    

    POST&GET错误处理

    • 当我们直接访问POST&GET页面时由于并没有传递任何数据,会因为$_GET$_POST不存在对应的key而报错。
    • 处理方式:使用array_key_exists(key, 数组)函数来进行判断:
    • 参数1:要检测的key字符串;
    • 参数2:检验的数组;
        if(array_key_exists('name', $_GET)){
            //如果有数据,再去读取
        }else{
            // 反之,可以执行一些其他的逻辑
        }
    

    GET和POST的区别:

    • get:

    • url能够看到参数;

    • 有数据大小限制;

    • url长度是有限制的。

    • post:

    • url看不到;

    • 提交的数据大小是没有限制的(相对而言,一般是在服务端配置限制);

    • 用来上传文件给服务器。

    php在实际开发中的使用方式

    • 会嵌入到前端工程师写好的.html中,注意:需要把html后缀给成php;
    • 在希望被替换的位置使用<?php php代码?>进行占位,就能够根据用户提交的数据动态生成界面。

    PHP文件上传处理01-$_FILES对象(上传文件)

    • php中上传的文件,会先以临时文件的方式保存起来,我们将其移动到其他的位置即可;

    • 在PHP中能够通过$_FILE获取上床的文件;

    • 浏览器端(客户端)部分代码:

    • 注1:form提交数据需要使用POST提交;

    • 注2:在input标签里,type=file;

    • 注3:在form中提交数据时,需要在form表单中添加enctype="multipart/form-data"属性;

    • HTML代码:

    <form action="03.fileUpdate.php" method="post" enctype="multipart/form-data">
        <label for="">照片:
            <input type="file" name = "picture">
        </label>
        <br/>
        <input type="submit" name="">
      </form>
    
    • 服务端代码:
    • $_FILES(可以同时获取多个上传的文件)用法跟$_GET$_POST类似,都是关系型数组;
    • #_FILE['key']:可以获取对应上传的文件的具体信息(里面包含文件名,临时文件等),这里的key跟提交时的name相对应;
    • #_FILE['key']['name']可以获取上传的文件名;
    • #_FILE['key']['tmp_name']可以获取上传的文件保存的临时目录
    <?php
            sleep(5);//单位秒。 在临时保存的文件夹里面看不到东西,因为立刻就被删除了,提交之后让服务器休息一会,可以看到临时文件夹里面的文件
            print_r($_FILES);//可以打印 $_FILES的所有信息
    ?>
    
    • 现象:
    • 点击提交后,服务器没有立即出现反应,而是休息了一会sleep(5);
    • 在wamp/tmp目录下面出现了一个.tmp文件;
    • .tmp文件一会就被自动删除了;
    • 服务器返回的内容中,有文件的名字[name] => computer.png,以及上传文件保存的位置D:\wamp\tmp\php3D70.tmp

    PHP文件上传处理02-移动文件

    • 刚刚演示了$_FILES对象的作用,以及PHP接受上传文件时,会先保存在一个临时目录下,那么接下来我们就演示如何将临时目录下面的文件保存起来;

    • 上传的临时文件,一会就会被自动删除,我们需要将其移动到保存的位置;

    • HTML代码:这部分的代码不需要改变

    <form action="03.fileUpdate.php" method="post" enctype="multipart/form-data">
        <label for="">照片:
            <input type="file" name = "picture">
        </label>
        <br/>
        <input type="submit">
    </form>
    
    Array ( [picture] => Array (
            [name] => computer.png
            [type] => image/png
            [tmp_name] => D:\wamp\tmp\php8913.tmp
            [error] => 0 [size] => 5212 )
        )
    
    • 其中我们需要通过picture(根据表单标签的name属性决定)获取临时文件名以及上传文件名;
    <?php
        sleep(5);// 让服务器休息一会,方便我们查看上传的临时文件
        // 第一个参数是:要移动的文件
        // 第二个参数是:目标位置(写的是相对路径,相对于该php文件的路径)
        move_uploaded_file($_FILES['picture']['tmp_name'], './upload/'.$_FILES['picture']['name']);
     ?>
    

    PHP设置上传文件的大小

    • 默认支持的最大上传文件大小为10兆,在使用wamp过程中,如果想要修改上传的文件大小,需要如何设置呢?

    修改php.ini

    • 步骤:
    • 左键点击wamp;
    • 选择php;
    • 在弹出的窗口中选择php.ini
    • 在打开的文件中进行修改,具体修改的地方如下“修改内容”;
    • 修改完毕,保存并重启wamp。

    修改内容

    • 使用文本编辑工具的搜索功能找到下列选项 进行修改:
    • 设置文件最大上传限制(值的大小可以根据需求修改)
    file_uploads = On;  //是否允许上传文件 On/Off 默认是On
    upload_max_filesize = 32M;  //上传文件的最大限制
    post_max_size = 32M;    //通过Post提交的最多数据
    
    • 考虑网络传输快慢,这里修改一些参数:
    max_execution_time = 30000; //脚本最长的执行时间,单位为秒
    max_input_time = 600;   //接收提交数据的时间限制,单位为秒
    memory_limit = 1024M;   //最大的内存消耗
    

    PHP与js的区别:

    • 定义变量:$a;
    • 拼接字符串:使用点.;
    • 数组:array("abc",111);array('a'=>111,'b'=>222);
    • 双引号使用有区别。

    相关文章

      网友评论

        本文标题:11-Ajax(二)PHP相关知识及语法介绍

        本文链接:https://www.haomeiwen.com/subject/kucnjxtx.html