本文是一些PHP的基础知识,自己看书的时候做的一些笔记。

PHP变量

  • PHP 语句和 PHP 变量都是区分大小写的。
  • PHP 没有声明变量的命令。

PHP 是一门弱类型语言

  • 不必向 PHP 声明该变量的数据类型。
  • PHP会根据变量的值,自动把变量转换为正确的数据类型。
  • 在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。

作用域

局部变量和全局变量

  • global可以将局部变量提升为全局变量。
  • PHP将所有全局变量存储在一个名为$GLOBALS[index]的数组中。index保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。
  • Static作用域
  • 当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。要做到这一点,请在您第一次声明变量时使用 static 关键字。
  • 参数作用域:属于函数的局部变量。

php中常见的输出语句

  • echo(): 可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。
  • print(): 函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false
  • print_r(): 可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印”\n”。因此用var_dump()函数更适合调试。
  • var_dump(): 判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

数据类型

字符串(String)

  • 双引号串中的内容可以被解释而且替换,而单引号串中的内容总被认为是普通字符。 在单引号串中甚至反斜杠也失去了他的扩展含义(除了插入反斜杠\和插入单引号')。 所以,当你想在字串中进行变量代换和包含\n(换行符)等转义序列时,你应该使用双引号。单引号串可以用在其他任何地方,脚本中使用单引号串处理速度会更快些。

整型(Integer)

  • 整数是一个没有小数的数字。

浮点型(Float)

-浮点数是带小数部分的数字,或是指数形式。

布尔型(Boolean)

数组(Array)

对象(Object)

  • 类似于java的类
1
2
3
4
5
6
7
8
9
10
11
12
<?php
class Car
{
var $color;
function Car($color="green") {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
?>

NULL值

  • NULL值表示变量没有值。NULL是数据类型为NULL的值。
  • NULL值指明一个变量是否为空值。同样可用于数据空值和NULL值的区别。
  • 可以通过设置变量值为 NULL 来清空变量数据

字符串函数

  • strlen(string)函数:返回字符串长度
  • strpos(seacher,char)函数:查找一个字符串在另一个字符串中第一次出现的位置

数组排序

  • sort() - 对数组进行升序排列
  • rsort() - 对数组进行降序排列
  • asort() - 根据关联数组的值,对数组进行升序排列
  • ksort() - 根据关联数组的键,对数组进行升序排列
  • arsort() - 根据关联数组的值,对数组进行降序排列
  • krsort() - 根据关联数组的键,对数组进行降序排列

PHP 超级全局变量

  • $GLOBALS:是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
  • $_SERVER:是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。
  • $_REQUEST:用于收集HTML表单提交的数据。
  • $_POST:被广泛应用于收集表单数据,在HTMLform标签的指定该属性:"method="post"
  • 从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏)
  • 并且对发送信息的量也没有限制。
  • $_GET:同样被广泛应用于收集表单数据,在HTMLform标签的指定该属性:"method="get"$_GET也可以收集URL中发送的数据。
  • 从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏)
  • 并且对发送信息的量也有限制。
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

PHP魔术变量

  • __LINE__:文件中的当前行号。
  • __FILE__:文件的完整路径和文件名。
  • __DIR__:文件所在的目录。
  • __FUNCTION__:函数名称。
  • __CLASS__:类的名称。
  • __TRAIT__:trait的名称。
  • __METHOD__:类方法的名称。
  • __NAMESPACE__:命名空间的名称。

XSS又叫 CSS (Cross-Site Script)

跨站脚本攻击。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。

正则

  • 邮箱:/([\w\-]+\@[\w\-]+\.[\w\-]+)/
  • URL:/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i
  • 只有字母和空格:/^[a-zA-Z ]*$/

Get 与 Post

何时用method=”get”?

  • 在 HTML 表单中使用 method=”get” 时,所有的变量名和值都会显示在 URL 中。
  • 注释:所以在发送密码或其他敏感信息时,不应该使用这个方法!
  • 然而,正因为变量显示在URL中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的。
  • 注释:HTTP GET 方法不适合大型的变量值。它的值是不能超过 2000 个字符的。

何时用method=”post”?

  • 从带有 POST 方法的表单发送的信息,对任何人都是不可见的,并且对发送信息的量也没有限制。
  • 然而,由于变量不显示在 URL 中,所以无法把页面加入书签。