php学习

1、<?php开头  ?>结尾
2、可以单独一行,也可以和html等结合使用
3、后缀名一般以.php结尾
4、php的配置文件一般为php.ini
 
 
开发php的环境准备:
1、phpstudy8版本,php版本可以随意调整
,代码是放在web服务器的根目录(document-root),默认页面一般是index.php/index.html,php的扩展一般为xxx.dll(动态链接库文件),php_mysql.dll是php的mysql扩展
2、安装php运行环境:sublime||phpstorm||  vs code
 sublime 安装好后配置php编译环境
phpstorm安装,需要配置php环境
 
 
echo  --打印
phpinfo();php函数负责显示当前环境设置
 
定义变量:$变量名(注意:由于php是弱类型语言,在使用或者申明的时候必须制定其数据类型。且遵循先声明后使用的原则)
    以$符号开头,后跟变量名;
    变量名必须是字母或者下划线开始  _vad
    变量名中只能有字母、数字、下划线
    不能有空格   
    区分大小写
如何判断数据类型:var _dump();
注释:
    // --单行注释
    /*多行注释
       *
        *
        */
打印:
echo("123");
echo  "123";
print(123);
echo/echo()输出一个或多个字符串,没有返回值
print/print() 只能输出一个字符串,返回值是1;
echo 的打印速度比print快,echo打印出来的字符串中可以有html代码
 
php的数据类型:
string 字符串,使用单双引号
int 整数,是[0-9]之间的数字,整数里没有逗号和空格,也没有小数,有正负之分,格式:十进制 十六进制(0x开头)[0-9a-f]八进制(0)[0-7]
float 带小数的数字或者指数形式3.1415 2.4e4 5e-10
bool  ture 和false
array 数组 $array = array("asd",123,true);
null  表示变量没有值,可以使用null去清空数据
    $test="anc"; $test=null;
object 对象,必须先声明,使用class关键词去申明类对象
 
PHP常量(全局的)
变量用来存储信息的空间大小$var
常量:定义之后不可以更改,标识符,并给其赋值,常量是全局,在整个页面中均可以使用,
常量一般有英文字母、下划线、数字组成,开头不是数字和$
使用define(常量的key,常量的value,true/flase)定义,define(number,2)
true/flase:大小写问题,true->对大小写不敏感,默认是true
define(str,"icq");
echo STR;//不能打印icq
 
define(str,"icq",true);
echo STR;//能打印
 
字符串
使用.拼接字符串
使用strlen() 计算字符串长度
strops(字符串,需要寻找的字符串)查找字符串,返回字符串的首次匹配索引
 
运算符: + - * / % ++ --
echo intdiv(4,3);
 
赋值运算符:= += -= *= /= %=  .=
自增、自减:i++(先赋值后++)、++i(先++在赋值)、--i、i--
 
比较运算符:
==   ===   !=   !===  >  <   <=   >=
 
逻辑运算符:
&&   and   与
||   or    或
! 非
xor  异或
三元运算符:条件?表达1:表达式2-》条件为真执行表达式1,条件为假执行表达式2
isset($get_value)
 
在 PHP7+ 版本多了一个 NULL 合并运算符 ??
如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值 $username = $_GET['user'] ?? 'nobody';
 
PHP7+ 支持组合比较符(combined comparison operator)也称之为太空船操作符,符号为 <=>。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。
语法格式如下:
$c = $a <=> $b;
解析如下:
如果 $a > $b, 则 $c 的值为 1。
如果 $a == $b, 则 $c 的值为 0。
如果 $a < $b, 则 $c 的值为 -1
 
条件判断:
        if(条件){条件成立时执行的代码;}
        if(条件){条件成立时执行的代码;}else{条件不成立是执行的代码;}
        if(){}else if(){}else{}
        switch(){case 条件:语句;break;default:语句;}
循环:
for($i = 0; $i<n;$i++){}
do while
while
 
数组:
定义方法:$cars=array("Volvo","BMW","Toyota");
count() 函数用于返回数组的长度(元素的数量)
关联数组是使用您分配给数组的指定的键的数组。
关联数组:
两种创建关联数组的方法:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
or:
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
代码实现:
<?php $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); echo "Peter is " . $age['Peter'] . " years old."; ?>
遍历并打印关联数组中的所有值,您可以使用 foreach 循环
<?php $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "
"; } ?>
数组排序:
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列
<?php
$numbers=array(4,6,2,22,11);
sort($numbers);
print_r($numbers);
?>
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
arsort($age);
print_r($age);
?>
 
超级全局变量$GLOBALS
$_SERVER   --包含了全部变量的全局组合数组。变量的名字就是数组的键。
$_REQUEST   ---包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组
$_POST  ---包含用户post提交的所有数据(POST、GET、COOKE等)
$_GET  --包换用户GET方式发过来的数据
$_FILES  --包含用户发哦送过来的文件对应的数据
$_ENV      ---包含服务器端环境变量的数组
$_COOKIE  --包含COOKie中的数据
$_SESSION      ---包含SESSION中的数据
 
有意思的常量(预定义常量)
_LINE_行号
_FILE_  当前文件的路径以及文件名
_DIR_当前文件的路径
_FUNCTION_  当前定义的函数名
_CLASS_当前类名
 
php函数:有参、无参
function FunctionName($value)//函数的 命名方法:驼峰法,每个单词首字母要大写
{
}
调用函数是:函数名(),注意如果有参数,需要满足参数的要求。函数中有返回值时需要使用return;
 
php面向对象:
c--面向过程的
面向对象 - C++、c#、java、php、python
对象:对于某种事物的一种描述,代表整体上的一种概念,对现实世界的一种抽象,具有行为、形态、表示三种特性;
面向对象中常用的概念:
类:对于某类事物的一种抽象,它包含事物的形态、行为等;
对象:是类的实例,人类(亚洲人 对象)、狗类(泰迪)
成员变量:对象的属性特征,二哈:外形像狼
析构: 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数:function __destruct(){}
构造:主要用来创建对象是初始化对象,为成员变量赋初始值,在new对象时要用到这个函数,该函数定义在类中。
function __construct(argument)//构造函数
类的定义:
class  person{//定义类的变量和函数
    var $name;
    function(){
    echo "hello!!";
}
}
创建对象:new对象、类的实例化、使用new
调用成员方法:->
$this->name
 
继承:extends来继承一个类,不能多继承
例:class Child extends parent{}
方法重写:覆盖,也就是说父类中方法不能满足自身的要求,重新去定义方法。
访问控制:对定义的类中变量和方法进行访问控制,通过public/private/protect实现
public(公有):公有的类成员可以在任何地方被访问。
protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问。
private(私有):私有的类成员则只能被其定义所在的类访问。
 
接口:使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容;接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的;接口中定义的所有方法都必须是公有,这是接口的特性;要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。
 
php表单处理:
服务器接收用户发过来的数据的方式:
$_GET  --接收用户以GET方式发过来的数据;
$_POST --接收用户以POST方式发过来的数据;
$_COOKIE -- 接收用户发过来的cookie
$_REQUEST --接收用户发过来的数据($_GET,$POST)
htmlspecialchars()  --实体化编码
is_array() --判断参数是否为数组,为真返回true
isset() --判断结果是否为空
data("Y/m/d") --日期
文件包含:
通过一些文件包含的函数将本地或者远程服务器中文件包含解析到当前中,达到文件读取、代码利用、函数调用。
include "文件名" = include("文件名")
include_once
去包含文件时,后者需要包含文件一次即可,当找不到要包含的文件时,会警告,后续代码依然会执行。
require
require_once
包含文件时,后者需要包含一次,当找不到包含的文件时,后面代码不执行。
包含过来文件中,只要文件格式是标准格式php代码就会被解析,如果里面的内容不是php代码,会把内容显示出来
 
copy good.png/b+shell.php/a bad.png(windows本地生成图片)
good.png是一个正常的图片 /b表示比特流文件
shell.php这是木马文件或者含有php代码的文件,后缀名不做要求,主要是ascii文件即可,/a是ASCLL码文件
 
会话管理:
会话:服务器和用户之间传输数据的方式或途径,在通道传输数据之前需要建立通道,这个通道可理解为会话,在客户端通过cookie来管理会话,在服务器通过sessiion来管理会话,cookie和session的介绍以及区别。
 
cookie的管理,首先需要服务器给用户分发cookie数据,setcookie(name,value,表示式,路径,域范围),后三者可不写,其中表达式主要来设置cookie时效性。注意:setcookie要写在html代码之前
服务器获取cookie:$_COOKIE["cookie的名字"],注意:需要使用当前打开的浏览器去访问,不能更换浏览器。
删除cookie:setcookie(“loginInfo”,“”,time()-3600),通过服务器删除
 
session的管理:工作机制:为用户创建唯一的uid,在该uid的基础上存储变量,uid放在cookie或者通过url去传输(相比较,后者不安全),在html代码之前通过session_start()开启,开启之后可以通过session[]数组存储某些变量
销毁session
 
header()向用户的浏览器发送HTTP报头
echo"meta charset ='utf-8'"
文件上传:通过代码实现文件上传功能
explode(标识符,字符串),按照标识符将字符串分割为数组
$extension = @end(explode(".",$_FILES['file']['name']));//获得文件的后缀名
move_uploaded_file(临时文件位置,目标位置),将临时文件拷贝到目标位置中
file_exists()检测文件或者目录是否存在,如果存在,则返回true
 
文件管理:文件的打开、关闭、读取、写入
fopen(“打开文件的位置~文件路径和文件名”,打开方式)
$file=fopen("welcome.txt","r");
打开方式:r --只读,在文件的开头开始
r+  --读写,在文件的开头开始
w  -- 只写,打开并清空文件的内容,不存在则创建新文件
w+  --读写,打开并清空文件的内容;如果文件不存在,则创建新文件。
a --追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件。
a+  --读/追加。通过向文件末尾写内容,来保持文件内容。
x  --只写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
x+ --读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
 
fclose() 函数用于关闭打开的文件:
feof() 函数检测是否已到达文件末尾(EOF)。
fgets() 函数用于从文件中逐行读取文件。
fgetc() 函数用于从文件中逐字符地读取文件。
file()将整个文档中数据读取到数组里,一行对应一个单元
file_get_contents()将整个文档中数据读入一个字符串中
copy(源文件,目标文件)
unlink()unset()删除文件
 
命令执行函数:通过php中某些函数去执行系统命令,和系统交互
system()
exec()
shell_exec()
echo 'whoami';
passthru()等等
代码执行函数,使用php的某些函数去执行字符串的php代码,注意:php代码按照标准格式写的,常用的函数有:
eval()
assert()
posted @ 2019-09-27 22:25  默忆  阅读(304)  评论(0编辑  收藏  举报