后端编程语言PHP
| 版权声明:本文为博主原创文章,未经博主允许不得转载。
一、PHP 简介
PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。
PHP 脚本在服务器上执行。
什么是 PHP?(超文本预处理器)
- PHP 是 "PHP Hypertext Preprocessor" 的首字母缩略词
 - PHP 是一种被广泛使用的开源脚本语言
 - PHP 脚本在服务器上执行
 - PHP 没有成本,可供免费下载和使用
 
什么是 PHP 文件?
- PHP 文件能够包含文本、HTML、CSS 以及 PHP 代码
 - PHP 代码在服务器上执行,而结果以纯文本返回浏览器
 - PHP 文件的后缀是 ".php"
 
PHP 能够做什么?
- PHP 能够生成动态页面内容
 - PHP 能够创建、打开、读取、写入、删除以及关闭服务器上的文件
 - PHP 能够接收表单数据
 - PHP 能够发送并取回 cookies
 - PHP 能够添加、删除、修改数据库中的数据
 - PHP 能够限制用户访问网站中的某些页面
 - PHP 能够对数据进行加密
 - 通过 PHP,您可以不受限于只输出 HTML。您还能够输出图像、PDF 文件、甚至 Flash 影片。您也可以输出任何文本,比如 XHTML 和 XML。
 
为什么使用 PHP?
- PHP 运行于各种平台(Windows, Linux, Unix, Mac OS X 等等)
 - PHP 兼容几乎所有服务器(Apache, IIS 等等)
 - PHP 支持多种数据库
 - PHP 是免费的。请从官方 PHP 资源下载:www.php.net
 - PHP 易于学习,并可高效地运行在服务器端
 
二、PHP 语法
PHP 脚本在服务器上执行,然后向浏览器发送回纯 HTML 结果。
- PHP 脚本可放置于文档中的任何位置。
 - PHP 脚本以 <?php 开头,以 ?> 结尾:
 
<?php
// 这是单行注释
# 这也是单行注释
/*
这是多行注释块
它横跨了
多行
*/
?>
- PHP 文件的默认文件扩展名是 ".php"。
 - PHP 文件通常包含 HTML 标签以及一些 PHP 脚本代码。
 - php的逻辑代码不会输出,仅仅只会返回执行完毕的结果
 
三、PHP 基础
1.变量
- 变量以$符号开头,其后是变量的名称
 - 变量名称必须以字母或下划线开头
 - 变量名称不能以数字开头
 - 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及_)
 - 变量名称对大小写敏感
 
// 变量以`$`符号开头,其后是变量的名称
// 变量名称必须以字母或下划线开头
$a;
$b;
$a1;
$_abc; // 变量名称不能以数字开头
// 变量名称只能包含字母数字字符和下划线(`A-z`、`0-9` 以及` _`)
// 下面这些是错误的变量定义
$1;
$哈哈;
$^&*; //变量名称对大小写敏感(`$y` 与`$Y` 是两个不同的变量)
// 下面定义的两个变量是不同的,大写,小写x
$x;
$X;
2.内容输出
- echo:输出简单数据类型,如字符串、数值
 - 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)
*/
3.数据类型
- PHP支持的数据类型包括:字符型、整型、浮点型、布尔型、数组、对象、NULL
 - 定义字符串时需要注意:
 - 单引号:`` 内部的内容只是作为字符串
 - 双引号:"" 如果内部是PHP的变量,那么会将该变量的值解析
 - 字符串连接:不同于JavaScript,PHP中使用.进行连接
 - gettype() 检测数据类型
 - is_string() 是否是字符
 - is_array() 是否是数组
 
// 字符串
$str = '123'; // 字符串连接
$str2 = '123'.'哈哈哈'; // 字符串 // 整数
$numA = 1; //正数
$numB = -2;//负数 // 浮点数
$x = 1.1; // 布尔
$a = true;
$b = false; // 数组
$arr = array('123',123)
4.运算符
- 基本与Javascript语法一致
 - 算数运算符: +,-,/,*,%
 - 赋值运算符: x = y,x += y,x -= y
 - . 号表示链接符
 - 分支、循环语句
 - 与Javascript基本一致
 - foreach()
 - switch()
 
<?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
?>
5.函数
- 与Javascript基本一致
 - 函数名对大小写不敏感
 - 默认参数
 - 文件引入
 - include 引入失败后程序继续执行
 - require 引入失败后程序终止执行
 
// 基础语法
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
6.超全局变量
- $_GLOBALS ---引用全局作用域中可用的全部变量
 - $_SERVER ---这种超全局变量保存关于报头、路径和脚本位置的信息。
 - $_GET ---用于收集提交 HTML 表单 (method="get") 之后的表单数据。$_GET 也可以收集 URL 中的发送的数据。
 - $_POST ---广泛用于收集提交 method="post" 的 HTML 表单后的表单数据。$_POST 也常用于传递变量。
 - $_REQUEST ---用于收集 HTML 表单提交的数据。
 - $_FILES ---通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。
 - $_COOKIE
 - $_SESSION
 - $_ENV
 
7.表单处理
- 表单name属性的是用来提供给服务端接收所传递数据而设置的
 - 表单action属性设置接收数据的处理程序
 - 表单method属性设置发送数据的方式
 - *当上传文件是需要设置 enctype="multipart/form-data"
 - $_GET接收 get 传值
 - $_POST接收 post 传值
 - $_FILES接收文件上传
 
GET 和 POST 都创建数组(例如,array( key => value, key2 => value2, key3 => value3, ...))。此数组包含键/值对,其中的键是表单控件的名称,而值是来自用户的输入数据。
1)$_GET 是通过 URL 参数传递到当前脚本的变量数组。
2)$_POST 是通过 HTTP POST 传递到当前脚本的变量数组。
何时使用 GET?
通过 GET 方法从表单发送的信息对任何人都是可见的(所有变量名和值都显示在 URL 中)。GET 对所发送信息的数量也有限制。限制在大于 2000 个字符。不过,由于变量显示在 URL 中,把页面添加到书签中也更为方便。
GET 可用于发送非敏感的数据。
注释:绝不能使用 GET 来发送密码或其他敏感信息!
何时使用 POST?
通过 POST 方法从表单发送的信息对其他人是不可见的(所有名称/值会被嵌入 HTTP 请求的主体中),并且对所发送信息的数量也无限制。
此外 POST 支持高阶功能,比如在向服务器上传文件时进行 multi-part 二进制输入。
不过,由于变量未显示在 URL 中,也就无法将页面添加到书签。
提示:开发者偏爱 POST 来发送表单数据。
<form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。
<input> 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。
8.header
header()函数 用来向客户端(浏览器)发送报头,如果出现中文无法显示,可以尝试在PHP代码顶部添加如下代码:
header("content-type:text/html; charset=utf-8");
浏览器访问http服务器,接收到响应时,会根据响应报文头的内容进行一些具体的操作,在php中,我们能够使用 header来设置这些内容
1)设置文本编码
设置编码格式为:utf-8
header('content-type:text/html; charset= utf-8');
2)设置页面跳转
设置跳转到百度首页
header('location:http://www.baidu.com');
3)设置页面间隔刷新
header('refresh:3; url=http://www.xiaomi.com');
四、PHP 表单
1.PHP_GET数据获取
在PHP中,如果想要获取通过get方法提交的数据,可以通过$_GET对象来获取
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'];
?>
2.PHP_POST数据获取
在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'];
?>
3.POST&GET错误处理
当我们直接访问POST&GET页面时由于并没有传递任何数据,会因为$_GET或$_POST不存在对应的key而报错.
处理方式1:
使用array_key_exists(key, 数组)函数来进行判断
参数1: 要检测的key字符串
参数2: 检验的数组
if(array_key_exists('name', $_GET)){
//如果有数据 再去读取
}else{
// 反之 可以执行一些 其他的逻辑
}
五、PHP 保存上传文件
php中上传的文件,会先以临时文件的方式保存起来,我们将其移动到其他的位置即可
1.$_FILE
在php中 能够通过$_FILE 获取上传的文件
浏览器端部分代码:
- 假定浏览器在form表单中如下标签
 - 注1form提交数据需使用post提交
 - 注2form提交数据时,需在form表单中添加enctype=multipart/form-data属性
 
<form action='xx.php' method='post' enctype='multipart/form-data'>
<input type='file' name='icon'>
<input type='submit'>
</form>
服务端代码:
- $_FILES用法跟$_GET,$_POST类似,都是关系型数组
 - #_FILE['key']:可以获取对应上传的文件,这里的key跟提交时的name相对应
 - #_FILE['key']['name'] 可以获取上传的文件名
 - #_FILE['key']['tmp_name']可以获取上传的文件保存的临时目录
 
<?php
// 可以打印 $_FILES的所有信息
print_r($_FILES);
?>
2.move_uploaded_file(移动文件)
上传的临时文件,一会就会被自动删除,我们需要将其移动到保存的位置
move_uploaded_file参数:
参数1:移动的文件
参数2:目标路径
move_uploaded_file($_FILES['photo']['tmp_name'], './images/test.jpg');
六、PHP设置上传文件大小
在使用wamp过程中,如果想要修改上传的文件显示,需要如何设置呢?
修改php.ini
1.步骤:
- 左键点击wamp
 - 选择php
 - 在弹出的窗口中选择php.ini
 - 在打开的文件中进行修改(修改步骤如下)
 - 修改完毕,保存并重启wamp
 
2.修改内容:
使用文本编辑工具的搜索功能找到下列选项 进行修改
设置文件最大上传限制(值的大小可以根据需求修改)
- 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的更多相关文章
- Java与go哪个更适合后端开发呢?哪个更适合新手呢?
		
Java语言目前在后端开发领域有广泛的应用,尤其是大型互联网平台往往选择Java作为主要的后端编程语言.同时,Java自身的生态比较健全,也有大量的成功案例,所以采用Java做后端编程语言是一个风险比 ...
 - 【ZZ】国外大型网站使用到编程语言 | 菜鸟教程
		
http://www.runoob.com/w3cnote/rogramming-languages-used-in-most-popular-websites.html 下图展示了大型网站使用到的后 ...
 - 卧槽!最新编程语言排名,Java 沦为老二。。
		
2020 年 9 月刚过去,栈长看了下最新的 tiobe 编程语言榜,牛逼啊,C 语言居然登顶了,Java 下降 3 个点,沦为老二的位置. 数据来源TIOBE: https://www.tiobe. ...
 - Web前端工程师成长之路——知识汇总
		
一.何为Web前端工程师? 前端工程师,也叫Web前端开发工程师.他是随着web发展,细分出来的行业.Web前端开发工程师,主要职责是利用(X)HTML/CSS/JavaScript ...
 - 想学好web前端,需要看哪些书籍
		
目前市场上HTML.CSS 类别书籍,都是大同小异,在当当网.卓越网搜索一下很多推荐.今天web前端大牛根据自己的经验总结如下:Javascript 的书籍推荐看老外写的,国内很多 Javascrip ...
 - Web前端工程师成长之路
		
一.何为Web前端工程师? 前端工程师,也叫Web前端开发工程师.他是随着web发展,细分出来的行业.Web前端开发工程师,主要职责是利用(X)HTML/CSS/JavaScript/D ...
 - 如何成为一名优秀的前端工程师  (share)
		
发现一篇不错的博文,和大家分享一下,为有志成为一名优秀前端工程师的童鞋们提供一个参考. :)~ 本文来源:http://www.biaodianfu.com/what-makes-a-good-fro ...
 - 如何成为一名优秀的web前端工程师(前端攻城师)?
		
程序设计之道无远弗届,御晨风而返.———— 杰佛瑞 · 詹姆士 我所遇到的前端程序员分两种:第一种一直在问:如何学习前端?第二种总说:前端很简单,就那么一点东西. 我从没有听到有人问:如何做一名优秀. ...
 - 如何成为一名优秀的web前端工程师(转给自己,共勉)
		
来源:王子墨的博客 程序设计之道无远弗届,御晨风而返.———— 杰佛瑞 · 詹姆士 我所遇到的前端程序员分两种: 第一种一直在问:如何学习前端? 第二种总说:前端很简单,就那么一点东西. 我从没有听到 ...
 
随机推荐
- Angular7教程-06-页面与数据交互
			
1. 本节说明 本节的内容会在上期搭建的框架基础上进行数据的填充,顺便回顾之前介绍过的插值表达式,属性绑定等知识,本节的数据只是在组件中模拟数据,后面会有专门的章节讲解如何从服务器获取数据. 2. 轮 ...
 - Linux常用到的一些命令
			
1.poweroff 关闭系统(1) 2.halt 关闭系统(2) 3.reboot 重启系统 4.pwd 查看当前所在目录的绝对路径 5.mkdir 文件名 创建一个目录文件 6.rm 文件名 删除 ...
 - 小程序中 function (res)的理解
			
刚看到小程序里面一段代码 success: function (res) { console.log('搜索结果:'); console.log(res); wx.hideToast(); if (r ...
 - 运维与架构—Nginx的优缺点
			
Nginx的优点是: 1.工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名.目录结构 它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一 Nginx ...
 - Mac配置PHP+Nginx+MySQL开发环境
			
Homebrew简称brew,OSX上的软件包管理工具,在Mac终端可以通过brew安装.更新.卸载各种软件,(简直就是神器级武器). 废话不多说,没安装brew自己去百度学习安装,这里就不多说了. ...
 - 盒模型與BFC
			
盒模型 基本概念 什么是 CSS 盒模型?相信大部分人都能答出这个问题来,那就是 标准模型 + IE 模型 标准模型: IE 模型 很明显 在 标准盒子模型中,width 和 height 指的是内容 ...
 - 【Mac】解决「另一个活跃的 Homebrew 进程正在进行中」问题
			
问题描述 在安装 tesseract 的语言包时,由于网络下载速度太慢,我按下 ctrl + z 退出了安装,当再次输入安装命令时,系统报错如下: 解决方法 使用以下命令删除 homebrew 进程锁 ...
 - 4.28-python学习笔记(转义符&input函数)
			
参考书目:<Learn Python The Hard Way> ##练习10 print("i am 6'2\"tall.")#将双引号转义 print(' ...
 - 纪中OJ  2019.02.15【NOIP提高组】模拟 B 组  梦回三国  比赛题解(第一个)
			
声明 旁边的同学小 H(胡)对我说: “哟,比赛拿了 140,强!要知道,如果哥第三题 AC 了,哥就 230 了,你个废柴!!!(比赛实际分数 130 额呵)” 顿时,千万草泥马从我心中奔腾而过:你 ...
 - C# typeof() 和 GetType()区是什么
			
1.typeof(x)中的x,必须是具体的类名.类型名称等,不可以是变量名称. 2.GetType()方法继承自Object,所以C#中任何对象都具有GetType()方法,它的作用和typeof() ...