PHP是安全中需要掌握的一门语言,就这么一点儿时间教网络安全,不可能精通,这里就不要求你精通PHP,但是对于一些基础代码能够认识、能够编写那么就可以了。
同时,这里需要和HTML结合,如果你HTML还没懂,那么就需要加强一些HTML的技术能力了。值得一提的是,你看网页中那么多HTML代码,真的是人去写的么,那是不现实的,都是通过框架自动生成的,像现在的少儿编程不也是一样么。
外文名PHP:Hypertext Preprocessor,中文名:“超文本预处理器”是一种通用开源脚本语言。语法吸收了C语言、java和Perl的特点,利于学习,使用广泛,主要适用于web开发领域。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
1、目前PHP在全球网页市场、手机网页市场还有为手机提供API(程序接口)排名第一。
2、PHP入门简单,学习入门易入手。
PHP可以安装的环境比较广泛,可以在windows环境和Linux环境安装部署,并且已经集成比较多环境包安装。以下的这些全是各种环境包英文名,只不过代表的是不同集成环境包的名字,不用去深究。如下所示:
AppServ PHPstudy APMserv XAMPP WAMPServer …等等
对于我们才入门的学习者来说,选择集成环境包的原则:
1、更新更快,版本较新
2、操作简单易于上手
3、选择项不要过多
因此,我们下面使用的集成环境包是:PHPstudy;当然,如果你对这块比较熟悉了,也可以自行选择集成环境包。
可以在官方网站下载:http://www.phpstudy.net/
写代码的工具有很多,对于刚开始学习PHP的朋友来说,选择工具有几个原则
1、不要使用带自动提示的工具(例如eclipse、zend studio等PHP开发工具集)
2、写完的代码必须要有颜色高亮显示(不要使用txt文本编辑器等无代码颜色显示的编辑器)
推荐的开发工具:
1)、sublime
2)、PHPstorm(推荐)
注:这两个工具已经在开发环境文件夹中,直接使用即可,两个工具的使用和配置,稍后写在附录文章中。
新建test.php文件,在这个test.php文件中写入如下代码:
代码信息解读说明:
1、phpinfo是一个函数(功能),这个函数会显示一个当前电脑(服务器)的详细的PHP信息。
2、电脑是一个很笨的东西,需要我们人为的告诉他,代码写完了。我们用分号(;)来告诉他代码写完了。因此只要写完一段代码,就需要在后面加分号。
3、而前后两行的回车空行,是为了让代码更加好看,避免叠在一起,看着不舒服。其实中间有多少个回车空行都没有关系的,保证好看就行了。PHP的语法解释器(PHP最核心部分)不会处理这些空行的。
代码编写注意事项:
1、PHP的代码信息全部要用半角的英文、很多人容易写成全角的英文/中文和符号造成PHP代码报错。
2、PHP代码的最后一行可以加也可不加分号。由于很多学习者特别是初学者经常犯一个毛病,写完一行代码不加分号,因此容易犯错,某些公司规定一行代码写完,就必须加分号。
3、我们在写文件test.php这个文件命名的时候,只要英文半角(a-z A-Z 0-9 _-)这些字符来命名文件,文件命名不要用中文,不要用特殊符号,不要中间加空格,严格区分大小。
在这个test01.php文件中写入如下代码:
$叫作美元符,英文单词:dollar。PHP的变量必须以美元符开始。说明搞PHP有”钱”途。
变量的几个特点介绍:
1、必须要以 开 始 , 如 变 量 x 必 须 要 写 成 开始,如变量x必须要写成 开始,如变量x必须要写成x
2、变量的首字母不能以数字开始
3、变量的名字区分大小写
4、变量不要用特殊符号、中文,_不算特殊符号
5、变量命名要有意义(别写xxx,aaa,ccc)这种变量名
变量的分类情况说明:
可变变量,外部变量,环境变量
- 可变变量举例说明
- 外部变量举例说明
PHP的外部变量是PHP在使用过程中规定好的一些变量。这个变量的规定是这样定的。
PHP代码调用以上HTML代码中的外部变量方法如下所示:
的值
$u = $_POST['username'];
echo $u.'
';
//$_POST[‘pwd’],将pwd作为字符串放在中括号里面,就得到了表单里面的的值
$passwd = $_POST['pwd'];
echo $passwd.'
';
?>
通过上面的实验我们知道了,通过$_POST这个外部变量,可以得到从表单输入的值。另外我们总结一些外部变量,要求知识点的学习级别:了解含义,默写这个单词的写法和作用。
- 环境变量举例说明
环境变量我们主要用的有 S E R V E R 和 _SERVER和 SERVER和_ENV两个环境变量。不过,$_ENV逐渐被PHP的新版本给废弃了。
常量就是长久不变的值,常量在代码中的定义,以及书写方式如下所示:
define(常量名, 常量值)
常量知识说明:
1、常量名可以小写,但是通常大写
2、常量名可以不加引号,但是通常加上引号
3、在字符串中调用常量的时候,必须在引号外面
4、常量名建议只用字母和下划线
>此外,系统还为我们准备了一些内置的常量,这些常量都是规定好的,先熟悉几个,还有更多的系统变量可以在入门以后扩展深入学习。
所谓注释,汉语解释为注解,更为准确一些,因为代码是英文的,并且代码很长,时间长了人会忘了代码的意思作用,所以可以加上注释进行说明提示。
注释功能说明:
1、对重点进行标注
2、时间长了容易忘记代码,方便快速回忆,以及方便查找信息
3、可以让其他人更容易看懂配置信息
4、还可以生成文档,代码写完相关的文档就写完了,提高工作效率
5、拥有注释、空行、回车之后的代码看起来更优美
6、注释可用来排错,不确定代码中哪一块写错了,可以将一大段注释,确定错误区域。
7、注释中的部分的内容,电脑不会执行它
PHP注释的方法如下所示:
- 单行注释(只注释一行)
// 表示单行注释
# 表示单行注释,用的比较少
单行注释举例演示:
- 多行注释(注释多行)
/*
多行注释,这里是注释区域代码
*/
多行注释举例演示:
数据类型就是对数据分类的一种划分方式而已,例如以下举例说明:
哺乳动物:人、猫、马、鸭嘴兽…等等
蔬菜类型:西红柿、菠菜、茄子…等等
水果类型:西瓜、桃子、苹果…等等
PHP中一共有八种数据类型,包括4种标量数据类型:boolean(布尔类型)、integer(整形)、float/double(浮点型)和string(字符串型),2种复合数据类型:array(数组类型)和object(对象类型),2中特殊的数据类型:resource(资源类型)与null(无/空白类型)。
整形表示即为整数,英文称之为integer,英文简写为int;整形分为8进制、10进制、16进制,整形在计算机里面是有最大值和最小值范围的。大家经常听说32位计算机,也就是32位计算机一次运算处理的最大范围是-2的32次方到2的32次方-1;而64位计算机,就是一次运算处理的最大范围是-2的64次方到2的64次方-1。
8进制声明方式:
// 这里仅仅是个说明,并不是八进制的运算,具体看下面的图
10进制声明方式:
// 这里仅仅是个说明,并不是十进制的运算,具体看下面的图
16进制声明方式:以0x开始,后面跟0-f的,0x的后面的abcdef不区分大小写。(了解即可)
所谓布尔类型,汉语翻译过来之后,更好的解释是用道家中易经的语言进行解释,即为:阴/阳,男/女,真/假,对/错,存在/不存在,0/1等等。
布尔类型举例说明:
在PHP语言中声明字符串有三种方式:
1、用单引号声明
2、用双引号声明
3、用字界符声明
单引号声明
用英文半角的单引号,将字符串包起来:
双引号声明
在字符串两面加双引号
字界符声明
1、在变量后面的等号写三个小于号 <<<
2、然后在<<<后面写上字符(建议英文大写字符)
3、然后换行写上任意想写的字符
4、写完后,顶行。在行最开始处,再写上<<<后面的字符和分号。
加上一段
有趣的话
我想说,努力学习不好么
ABC;
echo $dingjie
?>
那双引号和单引号有什么区别呢:
- 双引号解析变量,但是单引号不解析变量
- 在双引号里面插入变量,变量后面如果有英文或中文字符,会把这个字符和变量拼起来,视为一整个变量。一定要在变量后面接上特殊字符,例如空格等分开。
- 如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。
- 双引号解析转义字符,单引号不解析转义字符。但是单引号能解析
- 单引号效率高于双引号,尽可能使用单引号
- 双引号和单引号可以互相嵌套,双引号中可以插入单引号,单引号当中插入变量,这个变量会被解析。
- 神奇的字符串拼接胶水——(.)点,用来拼接字符串。
- 一般将定界符声明字符串视为双引号一样的功能来看待。
所谓浮点类型,可以理解为,我们数学里面的小数。声明方式分为两种:
1、普通声明方式
2、科学声明方式
普通声明浮点数:
科学声明浮点数:
var_dump() 函数用于输出变量的相关信息。显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
参考资料:https://www.runoob.com/php/php-var_dump-function.html
查看数据类型:
1、gettype(传入一个变量)能获得变量的类型
2、var_dump(传入一个变量)输出变量类型和值
判断数据类型方法:
使用is_*系列函数,is_types这一系列的函数,来进行判断某个数据属于哪种类型,如果是这个类型返回真,不是这个类型返回假。
";
//检查未声明的变量$p是否为空,为空就执行真区间
if(is_null($p)) {
echo '执行真区间';
}else{
echo '执行假区间';
}
echo "
";
//字符串类型的数值,检查执行的真还是假
$str = '18.8';
if(is_numeric($str)) {
echo '执行真区间';
}else{
echo '执行假区间';
}
echo "
";
//把sca的值换为整数 浮点 布尔和字符串试试
$sca = true;
if(is_scalar($sca)) {
echo '执行真区间';
}else{
echo '执行假区间';
}
echo "
";
//换成echo,is_int试试,为什么echo执行假区间呢?
if(is_callable('var_dump')) {
echo '执行真区间';
}else{
echo '执行假区间';
}
echo "
";
?>
自加自减运算就是把自己加1或者减1。如果学习过其它变成语言。会发现,此处的用法又是计算机里面的一个规定。可以这样用,用起来更加简洁。
上面的用法说明其实很简单,按照上面的例子,分成步骤去按过程判断即可:
$y){
echo '变量x大于变量y 成立';
}else{
echo '变量x大于变量y 不成立';
}
?>
';
echo `ipconfig`;
echo '
';
?>
比如:郝斌同学是无趣的人。他回家时候做的事如下所示:
如果半夜回家,先去睡觉
如果早上回家,先去洗澡
如果中午回家,先去吃法
如果晚上回家,先去烧水
下面来了解下他的活动安排PHP语法规则:
流程代码信息示例01:
流程代码信息示例02:
6 && $dida < 10 ){
echo '睡觉';
}elseif ($dida > 10 && $dida < 14){
echo '洗澡';
}elseif($dida >= 19 && $dida < 22){
echo '烧水';
}elseif($dida > 22 && $dida <=23){
echo '看电视';
}elseif($dida >=1 && $dida <3){
echo '看电影';
}else{
echo '工作';
}
?>
比如:王总在出行计划和工作项目中具有极高的规划性,他给自己的生活秘书和工作秘书分别指派了出差的行程:
生活上:先查天气,下雨带雨具和毛巾,不下雨要带防晒霜,雨具、毛巾和防晒霜的情况要提前检查,如果没有要及时购买。
工作上:要提前沟通出差的工作任务,准备好了要及时检查确认,打印签单。没有及时准备好的情况下,要列出主要的项目议题。
类似于上面的这种情况判断,就需要用到if…else if…else反复嵌套的结构了.
在if语句中可以嵌套一个或多个if语句,以实现多个参数的判断,这就是if语句的多种嵌套.
嵌套结构如下所示:
流程代码信息示例01:
比如:王同学家里特别有钱,所以他的行程方式和正常人的有些不一样.
他的出行方式有以下6种方式:
司机开车/民航/自己家的专机/火车动车/骑马/游轮
switch…case的语法结构如下:
上面的break是可选的,上面的default也是可选的,不要在case后面写成分号,后面是冒号.不要在case后面写判断区间,如($foo >20 或者 $foo == 30)
Switch里面的变量最好是整形 字符串 因为布尔判断更适合if…else.
比如:王总需要反复往返于北京和大连,就是典型的循环结构.假设王总投资这个项目需要往返大连100次,每次访问都会计数一次.难道写一百遍同样的代码显然对于智商极高的程序员来说不可能这样处理。
需要抽象人类的思维逻辑,定义一个循环结构:
";
//每次执行让$count+1,这样的话,就不会产生$count永远小于100的情况了
$count++;
}
//循环结束
?>
对比说明do…while与while区别:
do…while与while的语法结构基本一样,也是一个布尔型循环,功能也基本一样.
基本语法规定如下:
do{
//代码框
}while(判断)
do…while与while区别是,它们的值得检查时机不同.
do…while不论while判断是否成立,先执行一次代码框循环语句,保证会执行一次(表达式的真值在每次循环结束后检查)
然而我们之前的while循环会检查布尔判断区域,成立则执行,不成立则不执行.
0);
?>
同学反复往返于北京和大连,并且在本上记录往返次数.在PHP中还有另外一种实现方式能够实现同样的计数.for循环是PHP中的一种计数型循环.它的语法比较灵活多变,这是一个必须掌握的知识点.
for(表达式1;表达式2;表达式3)
需要执行的代码段;
}
1、表达式1是初始化赋值,可以同时赋值多个代码;
2、表示式2在每次循环开始前求值,如果值为true,则继续循环,执行嵌套的循环语句,如果值为false,则终止循环.
3、表达式3在每次循环之后被求值.
’;
}
?>
王同学每周往返,但有一个特例:项目失败后或者集团临时通知除外,就可以不再这么每周往返了.
基本语法:
基本编写:
';
if($i == 17){
goto end;
}
}
end:
echo '集团公司要求停止此项';
?>
函数的英文叫做:function,而function的解释项中有另外一个含义”功能”,函数就是功能,调用一个函数就是在调用一个功能.
自定义函数的语法规则,语法规范如下:
Function 函数名(参数名1=[值1], 参数名2=[值2] , 参数名n=[值n])
{
函数中的功能体
[return 返回值]
}
代码编写示例:
php_cn这个函数,是不是显示出来了两段: 好好学习.
函数备注说明:
- 函数名只能是字母,数字,下划线的组合,并且之间不能包含空格,数字不能放在变量名首位.
- 函数名与变量命名规则一样,但是不同的是,函数名不区分大小写
- 函数体的参数若是定义了,未传参,代码会报错.
- 函数后的参数如果有默认值,参数可以不填,代码也不会报错
- 函数后的参数可以写多个
- 函数后如果有默认值和无默认值的参数,通常把无默认值的参数写在最前面
- 函数体的变量与函数体外的变量没有关系
- 函数体中若有return,return后的代码不执行.
- 函数执行完后,可把函数体内的值,带到函数体外
- 函数的执行没有顺序关系,可以在定义外之前的位置调用
根据之前学习的全局变量信息,编写页面内容:
网站页面信息
编写传入参数的函数信息:
在实际开发中,常常需要把程序中的共用代码放到一个文件中,使用这些代码的文件只需要包含这个文件即可.这种方法有助于提高代码的重用性,给代码的编写与维护带来很大的便利.在PHP中,有以下四种方法包含一个文件:
include函数功能实践:
创建一个functions.php文件,里面写上两个函数:
在functions.php的同级目录下,在创建一个user.php文件把functions.php文件包含进来.
这样函数信息就可以专门放在functions.php里面,哪需要用到这些函数的时候,就从哪包含进来.
时间信息函数总结:
数组的英文是array,可以存入多个不同类型的数据,是一个复合数据类型。
案例:
';
var_dump($shu);
echo '
';
?>
在上例中,我们发现我们存入了:整型、浮点、布尔、字符串
注:上例中echo pre这个标签的主要目的是为原样输出,格式展示的更好看,更清晰。
可以用var_dump()打印出来显示看一下效果:
索引数组的下标必须要从0开始吗?
答:这个问题其实不然,索引数组并不一定要从0开始。
那如何能够不从0开始呢?
答:需要用到大家在上面学的一小块知识哟。就是键值对应符。我们来动手写。
'NoAlike', 'PHP中文网' , '去PHP中文网学PHP', 19 => '苹果和梨子我都爱' , '橘子我最爱');
//打印显示$kele
echo '';
var_dump($kele);
echo '
';
?>
';
echo $num[9].'
';
//我们可以得到数组中元素的总个数,为10
echo count($num) .'
';
//遍历这个索引数组的话,我们就可以定义一个变量为$i
//$i 的值为0,从0开始
//可以设定一个循环条件为:$i 在下标的(9)最大值之内循环
for($i = 0 ; $i < count($num) ; $i++){
echo $num[$i].'
';
}
?>
通过上面的例子,我们就把数组进行了循环。因为下标是从0开始的,定义 i = 0 。 每 次 循 环 的 时 候 让 i=0 。每次循环的时候让 i=0。每次循环的时候让i 加1 ,但是必须要小于10,因为数组下标的最大值为9。
例子:弹出数组中的第一个元素
';
print_r($mingren);
?>
正则表达是会在开发中经常看到,它主要用在以下一些地方:匹配邮箱、手机号码、验证码、替换敏感的关键词。例如:涉及政治和骂人的话
举例说明正则符号的定义方式:
例子 说明
/中间写正则/ 正确
$中间写正则$ 正确
%中间写正则% 正确
^中间写正则^ 正确
@中间写正则@ 正确
(中间写正则) 错误 ///
A中间写正则A 错误
注: 是转义字符,如果在以后正则表达示里面需要匹配/,如下:
/ / /
这个时候真要匹配/ 的时候,需要把定界符里面的/ 用转义字符转义一下,写成下面的例子:
/ / /
如果你觉得麻烦,遇到这种需要转义的字符的时候可以把两个正斜线(/ /)定界,改为其他的定界符(# #)。
正则表达式格式:
preg_match ( string $正则 , string $字符串 , array&$结果] )
功能:根据 正 则 变 量 , 匹 配 正则变量,匹配 正则变量,匹配字符串变量。如果存在则返回匹配的个数,把匹配到的结果放到$结果变量里。如果没有匹配到结果返回0。
我们会点鼠标右键删除文件、会control+c(或右键)复制、粘贴文件,会新建一些文件,检测这个文件是不是只读文件。在电脑里面进行的这些操作,在代码里面如果能操作就好了。因为,如果有了这些操作。我们能做很多事情了:可不可以写入修改配置文件、是不是可以做PHP安装的时候检测文件的权限、是不是可以做生成Html文件等等很多不同的操作,总之其他太多太多的地方用到了文件操作。
1、readfile读取文件函数
那如何读取一个文件呢?我们先学一个函数。
readfile ( string: $文件名)
功能:传入一个文件路径,输出一个文件。
下面的这一段代码中,只要传入文件名或者指定的文件路径就把文件读取出来了。
注意:上面的代码中windows的斜线是斜线,可能会转义掉一些字符。因此,我们写的时候写上两个斜线。
2、file_get_contents打开文件函数
3、fopen、fread、fclose操作读取文件
上面file_get_contents打开文件的方式简单、粗暴。
resource fopen ( string $文件名, string 模式)
string fread ( resource $操作资源, int 读取长度)
bool fclose ( resource $操作资源 )
1、file_put_contents写入文件
先来学习第一种写入文件的方式:
file_put_contents ( string $文件路径, string $写入数据)
功能:向指定的文件当中写入一个字符串,如果文件不存在则创建文件。返回的是写入的字节长度
操作代码演示示例:
2、fwrite配合fopen进行写入操作
代码说明:
· 不论有没有新建都会打开文件重新写入
· 原有的文件内容会被覆盖掉
· 文件不存在会创建
我们之前创建的文件都是永久文件,而创建临时文件在我们平时的项目开发中也非常有用,创建临时文件的好处:文件操作完成后即删除,不需要去维护这个文件的删除状态。
我们日常在处理文件的时候,可以删除文件、重命名文件也可以也可复制文件。
1、重命名文件:
rename($旧名,$新名);
功能:这个函数返回一个bool值,将旧的名字改为新的名字。
操作示例说明:
2、复制文件
复制文件,就相当于是克隆技术,将一个原来的东西再克隆成一个新的东西,两个长得一模一样。
copy(源文件,目标文件)
功能:将指定路径的源文件,复制一份到目标文件的位置。
操作示例说明:
说明:会通过上面的例子,发现多出来了一个文件。
3、删除文件
删除文件就是将指定路径的一个文件删除,不过这个删除是直接删除。使用的是windows电脑,你在回收站看不到这个文件,你只会发现这个文件消失了。
unlink(指定路径的文件)
代码操作示例:
4、检测文件属性函数
假设安装界面的网址是:install.php,安装的锁文件是install.lock。我们就可以检测install.lock文件是否存在。
5、PHP目录处理函数
php 目录处理函数处理文件夹的基本思想如下:
1.读取某个路径的时候判断是否是文件夹
2.是文件夹的话,打开指定文件夹,返回文件目录的资源变量
3.使用readdir读取一次目录中的文件,目录指针向后偏移一次
4.使用readdir读取到最后,没有可读的文件返回false
5.关闭文件目录
我们来学习一比常用函数:
";
}
closedir($dh);
}
}
?>
6、php 文件权限设置
chmod主要是修改文件的的权限
7、php文件路径函数
我们经常会遇到处理文件路径的情况。例如:
1.文件后缀需要取出来
2.路径需要取出名字不取目录
3.只需要取出路径名中的目录路径
4.或者把网址中的各个部份进行解析取得独立值
5.甚至是自己组成一个url出来
代码示例说明:
";
echo '文件全名:'.$path_parts['basename']."
";
echo '文件扩展名:'.$path_parts['extension']."
";
echo '不包含扩展的文件名:'.$path_parts['filename']."
";
?>
8、php实现文件留言本
我们来看一下文件结构:
index.php 展示输入框和留言内容
write.php 向message.txt写入数据
message.txt 存入聊天内容
编写index.php文件信息:
' . $username . '内容为' . $content . '时间为' . date('Y-m-d H:i:s', $time);
echo '
';
}
}
?>
基于文件的留言本演示
看了刚刚的展示内容,我们知道文件存储时:
1、段与段之间进行了分割
2、内容与用户之前用一个特殊的符号进行了分割
下面我们来写write.php写入留言至文件的代码:
以上便是在PHP的学习过程中需要掌握的一些基础知识,没有接触过的朋友可能比较吃力,但是多花时间去练一练总是好的,然后多看看参考、一些案例,将PHP和HTML很好的结合,能够熟练地运用更好。