PHP
简介
一种服务器端的HTML,脚本/编程语言,面向对象的、解释性的。
静态网站
动态网站
网站的基本概念
服务器
能够提供服务的机器,取决于机器上安装的软件(服务软件)。
web服务器:提供web服务(网站访问)。
IP
网络之间的互联协议,为计算机网络互相连接进行通信而设计的协议。
IP地址具有唯一性。
特殊IP:127.0.0.1 本机
域名
Internet上某一台计算机或计算机组的名称。
特殊域名:localhost 本机
DNS
域名系统
端口
设备与外界通讯交流的出口。
web程序访问流程
浏览器发起访问–》DNS解析域名–》服务器电脑–》服务软件
站点根目录
http://localhost/
http://laocalhost/index.php
同样的效果
访问某个文件夹,默认访问文件夹下的index.php或index.html
基础语法
1. <?php ?> 之间为PHP代码
2. 变量
3. 基础指令
-
输出echo ,print
-
echo 可以输出一个或多个字符串,无返回值
不解释内嵌的变量和转义符号——带单引号。 -
print 输出一个字符串,返回值总为1
echo输出速度更快。字符串可以包含HTML标签。
4. 数据类型
var_dump() 函数返回变量的数据类型和值
-
整型
-
浮点型
-
字符串
-
布尔型
-
数组
-
对象
-
NULL
- 数据类型为NULL
- 表示变量没有值
- 可以通过设置变量值为 NULL 来清空变量数据
5. 类型比较
-
松散比较:使用两个等号== 比较,只比较值,不比较类型。 -
严格比较:用三个等号=== 比较,除了比较值,也比较类型。 -
<?php
if(42 == "42") {
echo '1、值相等';
}
echo PHP_EOL;
if(42 === "42") {
echo '2、类型相等';
} else {
echo '3、类型不相等';
}
?>
-
PHP中 比较 0、false、null、“0”、“”
0 == false: bool(true)
0 === false: bool(false)
0 == null: bool(true)
0 === null: bool(false)
false == null: bool(true)
false === null: bool(false)
"0" == false: bool(true)
"0" === false: bool(false)
"0" == null: bool(false)
"0" === null: bool(false)
"" == false: bool(true)
"" === false: bool(false)
"" == null: bool(true)
"" === null: bool(false)
6. PHP常量
-
常量是一个简单值的标识符。该值在脚本中不能改变。 -
常量名不需要加 $ 修饰符。 -
常量在整个脚本中都可以使用。 -
设置常量,使用 define() 函数
define("GREETING", "hello world!");
define("PI", 3.14);
-
name:必选参数,常量名称,即标志符。 value:必选参数,常量的值。 case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。
7. 字符串变量
-
并置运算符 并置运算符 . 用于把两个字符串值连接起来。
, 也可以
-
strlen() 函数 返回字符串的长度(字节数)。 -
strpos() 函数 在字符串内查找一个字符或一段指定的文本。 如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。 如果未找到匹配,则返回 FALSE。
8. 逻辑运算符
9. 三元运算符
(expr1) ? (expr2) : (expr3)
(expr1) ? (expr3)
10. 组合比较符
$c = $a <=> $b;
11. 数组
-
<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
-
获取数组长度 echo count($cars);
-
遍历数组 通过for循环 -
关联数组 $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
-
用foreach循环遍历关联数组 <?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
<?php
$x=array("Google","Runoob","Taobao");
foreach ($x as $value)
{
echo $value . PHP_EOL;
}
?>
12. 排序
13. 超级全局变量
-
$GLOBALS $GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。 $GLOBALS['x'] -
$_SERVER 一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组 <?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>
-
$_REQUEST 用于收集HTML表单提交的数据。 <html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
$name = $_REQUEST['fname'];
echo $name;
?>
</body>
</html>
-
$_POST 收集表单数据,在HTML form标签的指定该属性:"method=“post”。 -
$_GET 收集表单数据,在HTML form标签的指定该属性:"method=“get”。 -
$_FILES -
$_ENV -
$_COOKIE -
$_SESSION
14. 函数
<?php
function functionName()
{
}
?>
15.魔术常量
16.命名空间
-
解决问题
- 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
- 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
-
定义
-
默认情况下,所有常量、类和函数名都放在全局空间下。 -
命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。 -
可以在同一个文件中定义不同的命名空间代码。 <?php
namespace MyProject {
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}
namespace AnotherProject {
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}
?>
-
将全局的非命名空间中的代码与命名空间中的代码组合在一起,只能使用大括号形式的语法。 全局代码必须用一个不带名称的 namespace 语句加上大括号括起来。 -
在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的__declare 语句__。 -
子命名空间 与目录和文件的关系很像,PHP 命名空间也允许指定层次化的命名空间的名称。 因此,命名空间的名字可以使用分层次的方式定义: <?php
namespace MyProject\Sub\Level;
const CONNECT_OK = 1;
class Connection { }
function Connect() { }
?>
表单
处理 HTML 表单时,PHP 能把来自 HTML 页面中的表单元素自动变成可供 PHP 脚本使用。
PHP 获取下拉菜单的数据
PHP表单验证
$_SERVER["PHP_SELF"] 变量
$_SERVER["PHP_SELF"] 是超级全局变量,返回当前正在执行脚本的文件名,与 document root相关。
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
<form method="post" action="test_form.php">
http:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>">
$_SERVER["PHP_SELF"] 可以通过 htmlspecialchars() 函数来避免被利用。
验证
preg_match() 进行正则表达式匹配。
//语法:
int preg_match ( string $pattern , string $subject [, array $matches [, int $flags ]] )
//在 subject 字符串中搜索与 pattern 给出的正则表达式相匹配的内容。
//如果提供了 matches ,则其会被搜索的结果所填充。
//$matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。
//e.g.
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$nameErr = "只允许字母和空格";
}
$_GET 变量 预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值。
从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送信息的量也有限制。
$_POST 变量 预定义的$_POST 变量用于收集来自 method="post" 的表单中的值。
从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。
默认情况下,POST 方法的发送信息的量最大值为 8 MB(可通过设置 php.ini 文件中的 post_max_size 进行更改)。
$_REQUEST 变量 预定义的 $_REQUEST 变量包含了$_GET 、$_POST 和$_COOKIE 的内容。
$_REQUEST 变量可用来收集通过GET 和 POST 方法发送的表单数据。
参考 [1]https://www.runoob.com/php/php-tutorial.html [2]https://www.bilibili.com/video/BV18x411H7qD?from=search&seid=6804077867598761134
|