PHP入门

基础教程

基础教程以后再补,先上高级教程。

超级全局变量

高级教程

基础

高维数组

给代码,慢慢悟

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php

$men = array(
array('abc','bcd'),
array('bnc','acc')
);
print_r($men);

$women = array(
'pq'=>array(
'pp'=>array('abc','bcd')
),
'xq'=>array(
'pp'=>array('abc','bcd')
)
);
print_r($women);

date函数

例子:date(‘?,?,?’),?是规定的字符。其间的逗号是连接符,可以用其他的符号代替。

文件包含

要求:主文件的后缀必须是.php,也就是主文件必须是PHP文件。

类型:include,require

include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:

  • require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
  • include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。

原理:被包含文件代码会在相应位置执行,该特点决定了代码逻辑。

文件处理

打开文件

对应函数:fopen()

语法:fopen(‘path’, ‘mode’),此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件

引用:模式参数表

r 只读。在文件的开头开始。
r+ 读/写。在文件的开头开始。
w 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。
w+ 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。
a 追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件。
a+ 读/追加。通过向文件末尾写内容,来保持文件内容。
x 只写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
x+ 读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。

注释:如果 fopen() 函数无法打开指定文件,则返回 0 (false)。

关闭文件

对应函数:fclose()

语法:fclose($file)

检测文件末尾(EOF)

feof() 函数检测是否已到达文件末尾(EOF)。

语法:feof($file)

读取文件

逐行读取文件:fgets($file)

逐字读取文件:fgetc($file)

任意读取文件:fread()

语法:fread($file, int $length)

例子:

1
2
3
4
<?php
$file = fopen('example.txt', 'r');
$content = fread($file, filesize('example.txt'));
echo $content;

文件上传

上传

分为两个模块:HTML表单,PHP

HTML表单:

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>FORM</title>
</head>
<body>
<form action="update.php" enctype="multipart/form-data" method="post">
filename:<input type="file" name="file" />
<input type="submit" />
</form>
</body>
</html>
  • 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 “multipart/form-data“。
  • 标签的 type=”file” 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。

PHP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

error_reporting(0);
#ini_set('display_errors', 0);

if ($_FILES['file']['error'] > 0)
{
echo "错误:" . $_FILES["file"]["error"] . "<br>";
} else{
echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
}

通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。

第一个参数是表单的 input name,第二个下标可以是 “name”、”type”、”size”、”tmp_name” 或 “error”。如下所示:

  • $_FILES[“file”][“name”] - 上传文件的名称
  • $_FILES[“file”][“type”] - 上传文件的类型
  • $_FILES[“file”][“size”] - 上传文件的大小,以字节计
  • $_FILES[“file”][“tmp_name”] - 存储在服务器的文件的临时副本的名称
  • $_FILES[“file”][“error”] - 由文件上传导致的错误代码

保存

代码:

1
2
3
4
5
if(file_exists("upload/" . $_FILES["file"]["name"])){
echo $_FILES["file"]["name"] . " 文件已经存在。 ";
}else{
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
}

整体代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

error_reporting(0);
#ini_set('display_errors', 0);

if ($_FILES['file']['error'] > 0)
{
echo "错误:" . $_FILES["file"]["error"] . "<br>";
} else{
echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
}

if(file_exists("upload/" . $_FILES["file"]["name"])){
echo $_FILES["file"]["name"] . " 文件已经存在。 ";
}else{
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
}

附:文件夹upload需要先存在。

创建Cookie

语法:setcookie(name, value, expire, path, domain)

须知:setcookie() 函数必须位于 标签之前。

示例代码:

1
2
3
4
<?php setcookie('name', 'pq', time()+60*5);?>

<html>
······

使用Cookie

1
2
3
4
<?php
if($_COOKIE['name']){
echo $_COOKIE['name'];
}?>

删除Cookie

将开头的时间设置为过期时间即可

完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php setcookie('name', 'pq', time()+60*5);?>

<html>
<head></head>
<body>
<P>HELLO,</P>
</body>
</html>

<?php
if($_COOKIE['name']){
echo $_COOKIE['name'];
}?>

<?php
if(!$_COOKIE['name']){
echo "Cookie isn't exists";
}?>

PHP Session

启动会话

在设置session之前,必须启动会话,如下:

<?php session_start(); ?>

须知:session_start()必须位于标签之前。

储存Session

存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量

销毁 Session

使用 unset() 或 session_destroy() 函数。

unset() 函数用于释放指定的 session 变量, session_destroy() 函数彻底销毁 session。

完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
session_start();
$_SESSION['name'] = 'pq';
?>

<html>
<body>
<p>HELLO</p>
</body>
</html>

<?php
if($_SESSION['name']){
echo $_SESSION['name'];
}
session_destroy();
?>