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

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结尾,代码的编写位置在,注释的写法跟js一致:


  • 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虽然系统内建了一些函数,但是这不影响我们定义自己的。函数的作用就是在代码中可以重复使用的语法块,页面加载的时候不会执行,只有在被调用的时候才会执行;
// 基础语法
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 
"; }
  • foreach;
$colors = array("red","green","blue","yellow");
// 参数1为循环的对象,参数2会将对象的值挨个取出,直到最后
// 如果循环的是对象的话,输出的是对象属性的值
foreach ($colors as $value) {
        echo "$value 
"; } 输出结果为 /* red green blue yellow */
  • while循环:
$num = 0;
while($num <= 10){
        echo "报数:"."$num"."
"; $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的方式:



  • PHP代码:
GET_PAGE";
    echo 'userName:'.$_GET['userName'];
    echo '
'; echo 'userEmail:'.$_GET['userEmail']; ?>

PHP$_POST数据获取

  • 关于$_POST:

  • 获取post的数据;

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

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

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

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

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

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



  • PHP代码:
POST_PAGE";
    echo 'userName:'.$_POST['userName'];
    echo '
'; 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文件上传处理01-$_FILES对象(上传文件)

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

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

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

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

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

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

  • HTML代码:


  • 服务端代码:
  • $_FILES(可以同时获取多个上传的文件)用法跟$_GET$_POST类似,都是关系型数组;
  • #_FILE['key']:可以获取对应上传的文件的具体信息(里面包含文件名,临时文件等),这里的key跟提交时的name相对应;
  • #_FILE['key']['name']可以获取上传的文件名;
  • #_FILE['key']['tmp_name']可以获取上传的文件保存的临时目录

  • 现象:
  • 点击提交后,服务器没有立即出现反应,而是休息了一会sleep(5);
  • 在wamp/tmp目录下面出现了一个.tmp文件;
  • .tmp文件一会就被自动删除了;
  • 服务器返回的内容中,有文件的名字[name] => computer.png,以及上传文件保存的位置D:\wamp\tmp\php3D70.tmp

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

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

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

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


  • PHP代码move_uploaded_file()这个函数可以处理文件,详情参考:http://www.w3school.com.cn/php/func_filesystem_move_uploaded_file.asp
Array ( [picture] => Array (
        [name] => computer.png
        [type] => image/png
        [tmp_name] => D:\wamp\tmp\php8913.tmp
        [error] => 0 [size] => 5212 )
    )
  • 其中我们需要通过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相关知识及语法介绍)