1.概念 PHP Hypertext Preprocessor
一种服务器端脚本语言
PHP 运行于各种平台(Windows, Linux, Unix, Mac OS X 等等)
PHP 兼容几乎所有服务器(Apache, IIS 等等)
PHP 支持多种数据库
PHP 是免费的。请从官方 PHP 资源下载:www.php.net
2.php脚本放在什么位置
PHP 脚本可放置于文档中的任何位置。
PHP 脚本以 <?php 开头,以 ?> 结尾:
<?php
// 此处是 PHP 代码
?>
3.注释
PHP 支持三种注释:
//和 /* */ 和#
实例
<!DOCTYPE html>
<html>
<body>
<?php
// 这是单行注释
# 这也是单行注释
/*
这是多行注释块
它横跨了
多行
*/
?>
</body>
</html>
4.对大小写的敏感性
所有用户定义的函数、类和关键词(例如 if、else、echo 等等)都对大小写不敏感。
echo、ECHO、eCHo等价。
但是,所有变量都对大小写敏感。
$color、$COLOR 以及 $coLOR 被视作三个不同的变量。
5.变量规则
变量以 $ 符号开头,其后是变量的名称
变量名称必须以字母或下划线开头
变量名称不能以数字开头
变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
变量名称对大小写敏感($y 与 $Y 是两个不同的变量)
6.类型松散
不必告知 PHP 变量的数据类型。
PHP 根据它的值,自动把变量转换为正确的数据类型。
7.变量作用域
PHP 有三种不同的变量作用域:
local(局部)
global(全局)
static(静态)
(我目前比较不适应的一点)函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。
注释:您可以在不同的函数中创建名称相同的局部变量,因为局部变量只能被在其中创建它的函数识别。
8.两种输出方法
echo:能够输出多个字符串,以逗号间隔,较快,因其不返回值
print:只能输出一个字符串,并返回1
输出变量值示例:
echo $txt1;
echo "<br>";
echo "Study PHP at $txt2";
echo "My car is a {$cars[0]}";
print $txt1;
print "<br>";
print "Study PHP at $txt2";
print "My car is a {$cars[0]}";
9.数据类型
字符串、整数(int)、浮点数(float)、逻辑(true、false)、数组、对象、NULL。
10.设置常量
如需设置常量,请使用 define() 函数 - 它使用三个参数:
首个参数定义常量的名称
第二个参数定义常量的值
可选的第三个参数规定常量名是否对大小写敏感。默认是 false。
false表示敏感,true表示不敏感
<?php
define("GREETING", "Welcome to W3School.com.cn!");
echo GREETING;
?>
11.PHP 字符串运算符
运算符 名称 例子 结果
. 串接 $txt1 = "Hello" $txt2 = $txt1 . " world!" 现在 $txt2 包含 "Hello world!"
.= 串接赋值 $txt1 = "Hello" $txt1 .= " world!" 现在 $txt1 包含 "Hello world!"
12.运算符
http://www.w3school.com.cn/php/php_operators.asp
13.创建及遍历数组
索引数组:
$cars=array("Volvo","BMW","SAAB");
或
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="SAAB";
<?php
$cars=array("Volvo","BMW","SAAB");
$arrlength=count($cars);
for($x=0;$x<$arrlength;$x++) {
echo $cars[$x];
echo "<br>";
}
?>
关联数组:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
或
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
<?php
$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
foreach($age as $x=>$x_value) {
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
14.PHP - 数组的排序函数
在本节中,我们将学习如下 PHP 数组排序函数:
sort() - 以升序对数组排序
rsort() - 以降序对数组排序
asort() - 根据值,以升序对关联数组进行排序
ksort() - 根据键,以升序对关联数组进行排序
arsort() - 根据值,以降序对关联数组进行排序
krsort() - 根据键,以降序对关联数组进行排序
15.GET vs. POST
GET 和 POST 都创建数组(例如,array( key => value, key2 => value2, key3 => value3, ...))。此数组包含键/值对,其中的键是表单控件的名称,而值是来自用户的输入数据。
GET 和 POST 被视作 $_GET 和 $_POST。它们是超全局变量,这意味着对它们的访问无需考虑作用域 - 无需任何特殊代码,您能够从任何函数、类或文件访问它们。
$_GET 是通过 URL 参数传递到当前脚本的变量数组。
$_POST 是通过 HTTP POST 传递到当前脚本的变量数组。
何时使用 GET?
通过 GET 方法从表单发送的信息对任何人都是可见的(所有变量名和值都显示在 URL 中)。GET 对所发送信息的数量也有限制。限制在大于 2000 个字符。不过,由于变量显示在 URL 中,把页面添加到书签中也更为方便。
GET 可用于发送非敏感的数据。
注释:绝不能使用 GET 来发送密码或其他敏感信息!
何时使用 POST?
通过 POST 方法从表单发送的信息对其他人是不可见的(所有名称/值会被嵌入 HTTP 请求的主体中),并且对所发送信息的数量也无限制。
此外 POST 支持高阶功能,比如在向服务器上传文件时进行 multi-part 二进制输入。
不过,由于变量未显示在 URL 中,也就无法将页面添加到书签。
提示:开发者偏爱 POST 来发送表单数据。
16.PHP include 和 require 语句
通过 include 或 require 语句,可以将 PHP 文件的内容插入另一个 PHP 文件(在服务器执行它之前)。
nclude 和 require 语句是相同的,除了错误处理方面:
require 会生成致命错误(E_COMPILE_ERROR)并停止脚本
include 只生成警告(E_WARNING),并且脚本会继续
例子
假设我们有一个名为 "footer.php" 的标准的页脚文件,就像这样:
<?php
echo "<p>Copyright © 2006-" . date("Y") . " W3School.com.cn</p>";
?>
如需在一张页面中引用这个页脚文件,请使用 include 语句:
<html>
<body>
<h1>欢迎访问我们的首页!</h1>
<p>一段文本。</p>
<p>一段文本。</p>
<?php include 'footer.php';?>
</body>
</html>
17.读取文件 readfile()
示例:读取文件并写到输出流
<?php
echo readfile("webdictionary.txt");
?>
18.打开或创建文件 fopen()
fopen() 的第一个参数包含被打开的文件名,第二个参数规定打开文件的模式。
示例:
$myfile = fopen("webdictionary.txt", "r")
文件会以如下模式之一打开:
模式 描述
r 打开文件为只读。文件指针在文件的开头开始。
w 打开文件为只写。删除文件的内容或创建一个新的文件,如果它不存在。文件指针在文件的开头开始。
a 打开文件为只写。文件中的现有数据会被保留。文件指针在文件结尾开始。创建新的文件,如果文件不存在。(append)
x 创建新文件为只写。返回 FALSE 和错误,如果文件已存在。
r+ 打开文件为读/写、文件指针在文件开头开始。
w+ 打开文件为读/写。删除文件内容或创建新文件,如果它不存在。文件指针在文件开头开始。
a+ 打开文件为读/写。文件中已有的数据会被保留。文件指针在文件结尾开始。创建新文件,如果它不存在。
x+ 创建新文件为读/写。返回 FALSE 和错误,如果文件已存在。
19.读取文件 fread()
fread() 的第一个参数包含待读取文件的文件名,第二个参数规定待读取的最大字节数。
fread($myfile,filesize("webdictionary.txt"));
20.关闭文件 fclose()
养成打开后关闭的好习惯。
fclose($myfile);
21.读取单行文件 fgets()
22.检查 End-Of-File feof()
feof() 对于遍历未知长度的数据很有用。
while(!feof($myfile)) {
echo fgets($myfile) . "<br>";
}
23.读取单字符 fgetc()
24.写入文件 fwrite()
fwrite() 的第一个参数包含要写入的文件的文件名,第二个参数是被写的字符串。
$txt = "Bill Gates\n";
fwrite($myfile, $txt);
25.创建 cookie
语法
setcookie(name, value, expire, path, domain);
此 cookie 在一小时后过期:
setcookie("user", "Alex Porter", time()+3600);
26.取回 Cookie 的值
echo $_COOKIE["user"];
27.确认是否已设置了 cookie
if (isset($_COOKIE["user"]))
echo "Welcome " . $_COOKIE["user"] . "!<br />";
else
echo "Welcome guest!<br />";
28.Session工作机制
为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。
29.存储和取回session
<?php
session_start(); //此句必须放在<html>标签前
// store session data
$_SESSION['views']=1;
?>
<html>
<body>
<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];
?>
</body>
</html>
30.终结session
终结指定session变量:
<?php
unset($_SESSION['views']);
?>
终结所有session:
<?php
session_destroy();
?>
31.基本的错误处理 die()
<?php
if(!file_exists("welcome.txt"))
{
die("File not found");
}
else
{
$file=fopen("welcome.txt","r");
}
?>
一种服务器端脚本语言
PHP 运行于各种平台(Windows, Linux, Unix, Mac OS X 等等)
PHP 兼容几乎所有服务器(Apache, IIS 等等)
PHP 支持多种数据库
PHP 是免费的。请从官方 PHP 资源下载:www.php.net
2.php脚本放在什么位置
PHP 脚本可放置于文档中的任何位置。
PHP 脚本以 <?php 开头,以 ?> 结尾:
<?php
// 此处是 PHP 代码
?>
3.注释
PHP 支持三种注释:
//和 /* */ 和#
实例
<!DOCTYPE html>
<html>
<body>
<?php
// 这是单行注释
# 这也是单行注释
/*
这是多行注释块
它横跨了
多行
*/
?>
</body>
</html>
4.对大小写的敏感性
所有用户定义的函数、类和关键词(例如 if、else、echo 等等)都对大小写不敏感。
echo、ECHO、eCHo等价。
但是,所有变量都对大小写敏感。
$color、$COLOR 以及 $coLOR 被视作三个不同的变量。
5.变量规则
变量以 $ 符号开头,其后是变量的名称
变量名称必须以字母或下划线开头
变量名称不能以数字开头
变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
变量名称对大小写敏感($y 与 $Y 是两个不同的变量)
6.类型松散
不必告知 PHP 变量的数据类型。
PHP 根据它的值,自动把变量转换为正确的数据类型。
7.变量作用域
PHP 有三种不同的变量作用域:
local(局部)
global(全局)
static(静态)
(我目前比较不适应的一点)函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。
注释:您可以在不同的函数中创建名称相同的局部变量,因为局部变量只能被在其中创建它的函数识别。
8.两种输出方法
echo:能够输出多个字符串,以逗号间隔,较快,因其不返回值
print:只能输出一个字符串,并返回1
输出变量值示例:
echo $txt1;
echo "<br>";
echo "Study PHP at $txt2";
echo "My car is a {$cars[0]}";
print $txt1;
print "<br>";
print "Study PHP at $txt2";
print "My car is a {$cars[0]}";
9.数据类型
字符串、整数(int)、浮点数(float)、逻辑(true、false)、数组、对象、NULL。
10.设置常量
如需设置常量,请使用 define() 函数 - 它使用三个参数:
首个参数定义常量的名称
第二个参数定义常量的值
可选的第三个参数规定常量名是否对大小写敏感。默认是 false。
false表示敏感,true表示不敏感
<?php
define("GREETING", "Welcome to W3School.com.cn!");
echo GREETING;
?>
11.PHP 字符串运算符
运算符 名称 例子 结果
. 串接 $txt1 = "Hello" $txt2 = $txt1 . " world!" 现在 $txt2 包含 "Hello world!"
.= 串接赋值 $txt1 = "Hello" $txt1 .= " world!" 现在 $txt1 包含 "Hello world!"
12.运算符
http://www.w3school.com.cn/php/php_operators.asp
13.创建及遍历数组
索引数组:
$cars=array("Volvo","BMW","SAAB");
或
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="SAAB";
<?php
$cars=array("Volvo","BMW","SAAB");
$arrlength=count($cars);
for($x=0;$x<$arrlength;$x++) {
echo $cars[$x];
echo "<br>";
}
?>
关联数组:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
或
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
<?php
$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
foreach($age as $x=>$x_value) {
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
14.PHP - 数组的排序函数
在本节中,我们将学习如下 PHP 数组排序函数:
sort() - 以升序对数组排序
rsort() - 以降序对数组排序
asort() - 根据值,以升序对关联数组进行排序
ksort() - 根据键,以升序对关联数组进行排序
arsort() - 根据值,以降序对关联数组进行排序
krsort() - 根据键,以降序对关联数组进行排序
15.GET vs. POST
GET 和 POST 都创建数组(例如,array( key => value, key2 => value2, key3 => value3, ...))。此数组包含键/值对,其中的键是表单控件的名称,而值是来自用户的输入数据。
GET 和 POST 被视作 $_GET 和 $_POST。它们是超全局变量,这意味着对它们的访问无需考虑作用域 - 无需任何特殊代码,您能够从任何函数、类或文件访问它们。
$_GET 是通过 URL 参数传递到当前脚本的变量数组。
$_POST 是通过 HTTP POST 传递到当前脚本的变量数组。
何时使用 GET?
通过 GET 方法从表单发送的信息对任何人都是可见的(所有变量名和值都显示在 URL 中)。GET 对所发送信息的数量也有限制。限制在大于 2000 个字符。不过,由于变量显示在 URL 中,把页面添加到书签中也更为方便。
GET 可用于发送非敏感的数据。
注释:绝不能使用 GET 来发送密码或其他敏感信息!
何时使用 POST?
通过 POST 方法从表单发送的信息对其他人是不可见的(所有名称/值会被嵌入 HTTP 请求的主体中),并且对所发送信息的数量也无限制。
此外 POST 支持高阶功能,比如在向服务器上传文件时进行 multi-part 二进制输入。
不过,由于变量未显示在 URL 中,也就无法将页面添加到书签。
提示:开发者偏爱 POST 来发送表单数据。
16.PHP include 和 require 语句
通过 include 或 require 语句,可以将 PHP 文件的内容插入另一个 PHP 文件(在服务器执行它之前)。
nclude 和 require 语句是相同的,除了错误处理方面:
require 会生成致命错误(E_COMPILE_ERROR)并停止脚本
include 只生成警告(E_WARNING),并且脚本会继续
例子
假设我们有一个名为 "footer.php" 的标准的页脚文件,就像这样:
<?php
echo "<p>Copyright © 2006-" . date("Y") . " W3School.com.cn</p>";
?>
如需在一张页面中引用这个页脚文件,请使用 include 语句:
<html>
<body>
<h1>欢迎访问我们的首页!</h1>
<p>一段文本。</p>
<p>一段文本。</p>
<?php include 'footer.php';?>
</body>
</html>
17.读取文件 readfile()
示例:读取文件并写到输出流
<?php
echo readfile("webdictionary.txt");
?>
18.打开或创建文件 fopen()
fopen() 的第一个参数包含被打开的文件名,第二个参数规定打开文件的模式。
示例:
$myfile = fopen("webdictionary.txt", "r")
文件会以如下模式之一打开:
模式 描述
r 打开文件为只读。文件指针在文件的开头开始。
w 打开文件为只写。删除文件的内容或创建一个新的文件,如果它不存在。文件指针在文件的开头开始。
a 打开文件为只写。文件中的现有数据会被保留。文件指针在文件结尾开始。创建新的文件,如果文件不存在。(append)
x 创建新文件为只写。返回 FALSE 和错误,如果文件已存在。
r+ 打开文件为读/写、文件指针在文件开头开始。
w+ 打开文件为读/写。删除文件内容或创建新文件,如果它不存在。文件指针在文件开头开始。
a+ 打开文件为读/写。文件中已有的数据会被保留。文件指针在文件结尾开始。创建新文件,如果它不存在。
x+ 创建新文件为读/写。返回 FALSE 和错误,如果文件已存在。
19.读取文件 fread()
fread() 的第一个参数包含待读取文件的文件名,第二个参数规定待读取的最大字节数。
fread($myfile,filesize("webdictionary.txt"));
20.关闭文件 fclose()
养成打开后关闭的好习惯。
fclose($myfile);
21.读取单行文件 fgets()
22.检查 End-Of-File feof()
feof() 对于遍历未知长度的数据很有用。
while(!feof($myfile)) {
echo fgets($myfile) . "<br>";
}
23.读取单字符 fgetc()
24.写入文件 fwrite()
fwrite() 的第一个参数包含要写入的文件的文件名,第二个参数是被写的字符串。
$txt = "Bill Gates\n";
fwrite($myfile, $txt);
25.创建 cookie
语法
setcookie(name, value, expire, path, domain);
此 cookie 在一小时后过期:
setcookie("user", "Alex Porter", time()+3600);
26.取回 Cookie 的值
echo $_COOKIE["user"];
27.确认是否已设置了 cookie
if (isset($_COOKIE["user"]))
echo "Welcome " . $_COOKIE["user"] . "!<br />";
else
echo "Welcome guest!<br />";
28.Session工作机制
为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。
29.存储和取回session
<?php
session_start(); //此句必须放在<html>标签前
// store session data
$_SESSION['views']=1;
?>
<html>
<body>
<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];
?>
</body>
</html>
30.终结session
终结指定session变量:
<?php
unset($_SESSION['views']);
?>
终结所有session:
<?php
session_destroy();
?>
31.基本的错误处理 die()
<?php
if(!file_exists("welcome.txt"))
{
die("File not found");
}
else
{
$file=fopen("welcome.txt","r");
}
?>