PHP4完全中文手册CHM格式教程

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:《PHP4完全中文手册》为PHP学习者提供了一个全面且深入的学习资源,涵盖从基础到高级主题的各个方面。通过CHM格式,用户可以高效地离线查阅和搜索PHP4的相关知识。教程详细介绍了PHP的基础语法、字符串与数组处理、函数与类定义、文件与目录操作、数据库交互、错误处理、会话控制与Cookie、网络编程、预定义和超级全局变量以及PHP扩展的使用。尽管PHP4已不常用,但它的核心概念对于理解PHP语言及其后续版本仍然重要。 php chm中文教程

1. PHP基础语法和安装配置

简介

在本章中,我们将从基础开始,熟悉PHP的基本语法,并指导您完成安装和配置过程。本章内容是进一步学习PHP开发的基石,对初学者尤其重要。

PHP基础语法概述

PHP,即“超文本预处理器”,是一种广泛使用的开源服务器端脚本语言。其语法继承自C语言,因此学习起来相对容易。PHP代码通常嵌入到HTML中,由服务器解析执行。以下是一些基础语法元素:

<?php
// PHP 代码段开始
echo "Hello, PHP!"; // 输出字符串到浏览器
// PHP 代码段结束
?>

在上面的代码块中, <?php ?> 分别标识了PHP代码块的开始和结束。 echo 语句用于输出内容到浏览器。

安装PHP

要开始PHP开发,您需要在计算机上安装PHP。以下是安装PHP的基本步骤:

  1. 下载PHP :访问[PHP官方网站](***下载PHP的最新版本。
  2. 安装PHP :对于Windows用户,运行下载的安装程序。对于Linux/Unix用户,可以通过包管理器安装。
  3. 配置PHP :安装完成后,配置PHP,确保其与Web服务器(如Apache或Nginx)一起工作。

配置PHP时,编辑 php.ini 文件以调整内存限制、错误报告等。配置完成后,重启Web服务器以使更改生效。

验证安装

最后,验证PHP是否正确安装,可以通过创建一个简单的PHP文件并上传到服务器,或者使用本地服务器(如XAMPP、MAMP等)进行测试。一个基本的测试PHP文件包含以下内容:

<?php
phpinfo(); // 这将显示PHP的配置信息
?>

如果您的安装成功,访问这个PHP文件时,您应该能看到包含PHP版本、配置信息和扩展等的页面。

总结

本章介绍了PHP的基础语法,并指导了如何在本地环境中安装和配置PHP环境。掌握这些基础知识对于后续深入学习PHP至关重要。在下一章中,我们将进一步探讨字符串和数组操作等核心概念。

2. 字符串和数组操作方法深入探究

深入理解PHP中的字符串和数组操作是提升开发效率与代码质量的关键。在本章节中,我们将深入探讨这些基本数据结构的高级用法,从字符串的创建与输出,到字符串函数的应用实例,再到正则表达式在字符串处理中的应用。此外,我们还将探究数组的声明与初始化、遍历数组的方法及效率分析,以及数组排序和搜索技术的进阶应用。

2.1 PHP中的字符串处理

2.1.1 字符串的创建与输出

字符串是编程中经常处理的数据类型之一。在PHP中,字符串可以通过单引号、双引号或者heredoc结构来创建。

// 单引号字符串
$singleQuotedString = 'This is a single quoted string';

// 双引号字符串,可以解析变量和特殊字符
$doubleQuotedString = "This is a double quoted string with a variable \$variable";

// heredoc结构,常用于多行字符串的定义
$heredocString = <<<EOT
This is a heredoc string
that spans multiple lines
and can also include variables: $anotherVariable
EOT;

在输出字符串时,可以使用 echo print printf 函数。 echo print 可以输出简单的字符串,而 printf 提供了格式化的输出功能。

echo "This is an echo statement<br>"; // 输出字符串并换行
print "This is a print statement\n"; // 输出字符串并换行
printf("This is a formatted string: %d\n", $someNumber); // 格式化输出数字

2.1.2 字符串函数的应用实例

PHP提供了丰富的字符串处理函数,使得开发者可以轻松地进行各种字符串操作。以下是一些常用的字符串函数及其应用实例:

$originalString = "Hello, World!";
$lowercaseString = strtolower($originalString); // 转换为小写
$uppercaseString = strtoupper($originalString); // 转换为大写
$length = strlen($originalString); // 获取字符串长度
$reversedString = strrev($originalString); // 反转字符串

echo "Original: $originalString\n";
echo "Lowercase: $lowercaseString\n";
echo "Uppercase: $uppercaseString\n";
echo "Length: $length\n";
echo "Reversed: $reversedString\n";

2.1.3 正则表达式在字符串处理中的应用

正则表达式是进行字符串搜索、匹配和替换的强大工具。PHP中的 preg_match preg_match_all preg_replace 函数允许我们利用正则表达式执行复杂的字符串操作。

$pattern = '/^([a-zA-Z]+),\s*([a-zA-Z]+)!$/';
$string = "Hello, World!";

// 使用正则表达式进行匹配
if (preg_match($pattern, $string, $matches)) {
    echo "Found: {$matches[0]}\n";
    echo "First name: {$matches[1]}\n";
    echo "Last name: {$matches[2]}\n";
}

// 替换字符串中的特定部分
$replaced = preg_replace('/(World)!/', '$1!!!', $string);
echo "Replaced: $replaced\n";

2.1.4 字符串处理的性能优化

随着数据量的增加,字符串处理的性能变得尤为重要。在某些情况下,使用内置的字符串处理函数可能不是最优选择,这时我们可以考虑使用一些优化技巧。

// 优化字符串拼接的性能
$parts = ['Hello', ' ', 'World', '!'];
$optimizedString = implode('', $parts); // 使用implode函数拼接字符串

// 使用str_replace而不是多次使用str_rot13
$originalString = "PHP is fun!";
$optimized = str_replace('PHP', 'HTML', $originalString); // 替换字符串

性能优化通常涉及减少不必要的函数调用和循环,利用内部优化的函数,以及尽量避免在循环内部进行复杂的字符串操作。

2.2 PHP中的数组处理

2.2.1 数组的声明与初始化

数组是PHP中一种特殊的数据类型,它允许存储多个值在一个变量中。PHP支持索引数组和关联数组。

// 索引数组的声明与初始化
$indexedArray = array(1, 2, 3, 4, 5);

// 关联数组的声明与初始化
$associativeArray = array('first' => 'PHP', 'second' => 'is', 'third' => 'fun');

// 使用简短数组语法
$shortIndexedArray = [1, 2, 3, 4, 5];
$shortAssociativeArray = ['first' => 'PHP', 'second' => 'is', 'third' => 'fun'];

2.2.2 遍历数组的方法及效率分析

遍历数组是日常开发中的常见操作,PHP提供了多种遍历数组的方法,包括 foreach for 循环以及 while 循环。

// 使用foreach遍历关联数组
foreach ($associativeArray as $key => $value) {
    echo "Key: $key, Value: $value\n";
}

// 使用for循环遍历索引数组
for ($i = 0; $i < count($indexedArray); $i++) {
    echo "Value: {$indexedArray[$i]}\n";
}

// 使用while循环遍历索引数组
reset($indexedArray); // 将数组指针重置到第一个元素
while (list($key, $value) = each($indexedArray)) {
    echo "Key: $key, Value: $value\n";
}

在处理大数据量时,性能分析工具如Xdebug可以帮助我们找出瓶颈所在,并进行优化。

2.2.3 数组排序和搜索技术的进阶应用

数组排序是PHP内置功能,提供了多种排序方法,例如 sort asort ksort 等。

// 对索引数组进行排序
sort($indexedArray); // 对数组的值进行排序
print_r($indexedArray);

// 对关联数组按键进行排序
ksort($associativeArray); // 对数组的键进行排序
print_r($associativeArray);

搜索数组的值可以使用 in_array 函数,而搜索关联数组的键可以使用 array_key_exists 函数。

$keyToSearch = 'second';
$found = array_key_exists($keyToSearch, $associativeArray);
echo "Key exists: $found\n";

在本章节中,我们深入探讨了PHP字符串和数组处理的高级方法,提供了代码示例和性能优化的建议,帮助开发者提升代码质量并优化程序性能。在下一章节中,我们将继续探索PHP编程中的自定义函数与面向对象编程实践。

3. 自定义函数与面向对象编程实践

3.1 自定义函数的创建与使用

函数在编程中扮演着将复杂过程分解为简单步骤的角色,而自定义函数则能够根据开发者的具体需求实现特定的功能。在本章节中,我们将深入探讨如何创建和使用自定义函数,以及在PHP中如何管理函数的参数和返回值。

3.1.1 函数参数和返回值的管理

函数参数允许开发者向函数传递输入值,而返回值则允许函数向调用者传递输出值。PHP中的函数可以接受任意数量的参数,也可以返回任何类型的数据。

下面是一个简单的示例,展示如何定义一个函数,该函数接受两个参数并返回它们的和:

function addNumbers($num1, $num2) {
    return $num1 + $num2;
}

$result = addNumbers(5, 3);
echo $result; // 输出:8

在这个示例中, addNumbers 函数使用两个参数 $num1 $num2 ,并返回这两个数值的和。调用函数时,我们传递了数字 5 3 ,函数计算结果 8 被返回并存储在变量 $result 中。

函数参数的默认值可以通过在函数定义时直接给参数赋值来设置:

function printMessage($text = "Hello, World!") {
    echo $text;
}

printMessage(); // 输出:Hello, World!
printMessage("Hi there!"); // 输出:Hi there!

3.1.2 递归函数的设计与优化

递归函数是一种在其内部调用自身的函数,它非常适合于处理具有自然层级结构的数据,如目录结构、树形结构等。设计递归函数时,重要的是确保存在一个明确的终止条件,避免无限递归。

下面是一个简单的递归函数示例,计算给定数的阶乘:

function factorial($number) {
    if ($number <= 1) {
        return 1;
    } else {
        return $number * factorial($number - 1);
    }
}

echo factorial(5); // 输出:120

在这个阶乘函数中,递归终止条件是当 $number 小于或等于 1 时。递归调用发生在 $number 大于 1 的情况下。

递归函数可能会导致大量的函数调用和堆栈消耗,因此在使用时需要注意优化,比如通过尾递归优化或者使用循环替代递归。

3.2 面向对象编程的深入理解

面向对象编程(OOP)是一种通过创建对象来设计软件的编程范式。在PHP中,面向对象编程允许我们创建类和对象,这些类和对象可以封装数据和功能,实现数据隐藏和代码复用。下面,我们将探讨类与对象的创建使用、OOP三大特性(封装、继承、多态性)以及设计模式的应用。

3.2.1 类与对象的创建和使用

类是创建对象的蓝图或模板,它定义了对象将拥有的属性(变量)和方法(函数)。对象是类的实例,拥有类定义的属性和方法。

创建一个类的基本语法如下:

class Car {
    public $color;
    public $model;

    public function __construct($color, $model) {
        $this->color = $color;
        $this->model = $model;
    }

    public function displayInfo() {
        echo "This car is {$this->color} {$this->model}.";
    }
}

$myCar = new Car("red", "Ferrari");
$myCar->displayInfo(); // 输出:This car is red Ferrari.

在这个例子中,我们定义了一个 Car 类,它有两个属性 $color $model ,以及一个构造方法 __construct 用于初始化对象,还有 displayInfo 方法用于显示车辆信息。使用 new 关键字创建了 Car 类的一个实例 $myCar ,并调用了它的方法来显示信息。

3.2.2 封装、继承与多态性在PHP中的实现

封装、继承和多态性是面向对象编程的三大特性,它们在PHP中的实现方式如下:

封装

封装是隐藏对象内部状态和实现细节,只暴露操作对象的方法。在PHP中,通过使用 public protected private 关键字来控制类成员的访问性。

class Animal {
    private $name;

    public function __construct($name) {
        $this->name = $name;
    }

    public function getName() {
        return $this->name;
    }
}

$animal = new Animal("Lion");
echo $animal->getName(); // 输出:Lion
继承

继承允许一个类继承另一个类的属性和方法,实现代码复用。在PHP中,继承通过使用 extends 关键字实现。

class Mammal extends Animal {
    public function makeSound() {
        echo "Mammal sound!";
    }
}

$mammal = new Mammal("Elephant");
$mammal->makeSound(); // 输出:Mammal sound!
多态性

多态性允许使用基类类型的指针或引用指向派生类的对象,并通过基类类型的指针或引用调用在不同派生类中实现的方法。在PHP中,多态性是通过类继承和方法重写实现的。

class Dog extends Animal {
    public function makeSound() {
        echo "Woof!";
    }
}

$dog = new Dog("Rover");
echo $dog->getName(); // 输出:Rover
$dog->makeSound();    // 输出:Woof!

在上述代码中, Dog 类继承自 Animal 类并重写了 makeSound 方法。这展示了多态性,因为 Animal 类型的引用 $animal 可以指向 Dog 类的实例,并调用 Dog 类特有的 makeSound 方法。

3.2.3 设计模式在PHP开发中的应用

设计模式是面向对象编程中解决特定问题的最佳实践。它们是经过时间检验和重复验证的解决方案。在PHP开发中,有许多设计模式被广泛应用,例如单例模式、工厂模式、策略模式等。

单例模式是一种确保类只有一个实例,并提供一个全局访问点的模式。下面是单例模式的PHP实现示例:

class Singleton {
    private static $instance = null;

    private function __construct() {}

    public static function getInstance() {
        if (self::$instance == null) {
            self::$instance = new Singleton();
        }
        return self::$instance;
    }
}

$a = Singleton::getInstance();
$b = Singleton::getInstance();

var_dump($a === $b); // 输出:bool(true)

在这个例子中, Singleton 类通过私有的构造方法和静态方法 getInstance 确保只有一个实例被创建。任何尝试创建新实例的尝试都会返回已存在的实例。

通过应用设计模式,开发者可以编写更加模块化、可维护和可扩展的代码。设计模式也有助于解决常见的设计问题,避免重复编写类似的代码。

以上就是第三章的内容,我们从自定义函数的使用开始,逐步深入到面向对象编程的核心概念,并探讨了设计模式在PHP中的应用。通过本章节的内容,希望读者能够在PHP编程中更加自如地运用函数和面向对象的概念,提高代码质量。

4. 文件读写与目录管理技巧

4.1 PHP文件操作详解

4.1.1 文件的打开、读取、写入与关闭

在进行文件操作时,PHP 提供了一系列的函数来处理文件的打开、读取、写入以及关闭操作。理解这些基础操作对于进行更复杂的文件和目录管理至关重要。

首先,文件的打开操作使用 fopen() 函数,需要指定文件路径和打开模式。例如:

$filename = "example.txt";
$file_handle = fopen($filename, "r") or die("无法打开文件");

在这里, "r" 模式代表以只读方式打开文件。如果文件不存在或无法打开,则脚本会停止运行,并显示错误消息。

读取文件内容时,可以使用 fread() fgets() 函数。 fread() 函数从文件指针指向的位置读取指定长度的字符,而 fgets() 函数读取一行直到遇到换行符。

$content = fread($file_handle, filesize($filename));
// 或者逐行读取
while (!feof($file_handle)) {
    $line = fgets($file_handle);
    // 处理每一行
}

写入文件内容使用 fwrite() fputs() 函数。这些函数将数据写入文件指针指向的位置。

$write_content = "Hello, world!";
fwrite($file_handle, $write_content);

完成文件操作后,必须关闭文件以释放系统资源。

fclose($file_handle);

4.1.2 文件上传功能的实现与安全处理

文件上传是Web开发中常见的功能。PHP提供了 $_FILES 超全局变量来处理客户端上传的文件。要启用文件上传,需要在 php.ini 文件中设置 file_uploads on 并确保 upload_max_filesize post_max_size 配置得当。

if (isset($_FILES['fileToUpload'])) {
    $uploadfile = $_FILES['fileToUpload']['tmp_name'];
    $filename = $_FILES['fileToUpload']['name'];
    if (move_uploaded_file($uploadfile, "uploads/" . $filename)) {
        echo "文件上传成功";
    } else {
        echo "文件上传错误";
    }
} else {
    echo "未检测到文件上传";
}

上传文件时需要注意安全性。PHP 提供了一些函数和设置来帮助你验证上传的文件类型,限制上传的文件大小,以及检查文件是否被篡改。例如,使用 mime_content_type() 函数检查文件的MIME类型。

if (getimagesize($_FILES['fileToUpload']['tmp_name']) === false) {
    echo "不是有效的图片文件";
    // 不允许上传非图片文件
}

此外,使用 get_magic_quotes_gpc() stripslashes() 函数可以处理可能存在的魔术引号问题,确保文件名的准确性。

4.2 目录操作与管理

4.2.1 目录结构的创建、读取和修改

在PHP中,可以使用 mkdir() 函数创建目录。此函数可以接受路径、权限和其他选项。

if (!mkdir($dir = "mydir", 0777, true)) {
    die('创建目录失败');
}

读取目录内容可以使用 scandir() 函数,它会返回一个数组,包含指定目录下的所有文件和目录名。

$files = scandir($dir);
print_r($files);

修改目录结构通常涉及重命名或删除目录,可以使用 rename() rmdir() 函数实现。

rename("oldDir", "newDir"); // 重命名目录
rmdir("emptyDir"); // 删除空目录

4.2.2 文件权限的检查与调整

文件权限在Linux系统中非常重要,它决定了哪些用户可以读取、写入或执行文件。在PHP中,可以使用 fileperms() 函数检查文件的权限。

$permissions = substr(decoct(fileperms("example.txt")), 2);
echo "文件权限为: " . $permissions;

如果需要调整文件权限,可以使用 chmod() 函数,该函数接受文件路径和八进制权限值作为参数。

if (chmod("example.txt", 0755)) {
    echo "权限已修改";
} else {
    echo "权限修改失败";
}

4.2.3 文件系统的遍历与文件的归档压缩

遍历文件系统可以使用 RecursiveDirectoryIterator RecursiveIteratorIterator 类,这些类允许递归访问目录及其子目录。

$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("/path/to/dir"));
foreach ($iterator as $file) {
    echo $file . PHP_EOL;
}

文件的归档压缩可以使用PHP的 ZipArchive 类。创建一个新的ZIP文件并添加文件到其中:

$zip = new ZipArchive();
$filename = "example.zip";

if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
    exit("无法打开 <$filename>\n");
}

$zip->addFile("example.txt");
$zip->addFile("test.txt", "testdir/test.txt");

$zip->setEncryptionName("test.txt", ZipArchive::EM_AES_256);
$zip->setEncryptionIndex("testdir/test.txt", ZipArchive::EM_AES_256);

$zip->close();

echo "文件已压缩到 <$filename>\n";

在以上代码中,我们不仅添加了文件,还对特定的文件进行了加密处理。确保在进行此类操作时考虑到性能和安全因素。

5. 多数据库接口交互与PHP高级特性应用

5.1 PHP与MySQL数据库的交互

5.1.1 数据库连接的建立与断开

在PHP中,与MySQL数据库交互的第一步是建立数据库连接。这通常是通过PHP的MySQLi扩展或PDO(PHP Data Objects)来实现的。

// 使用MySQLi建立连接
$mysqli = new mysqli("localhost", "username", "password", "database");

// 检查连接是否成功
if ($mysqli->connect_error) {
    die("连接失败: " . $mysqli->connect_error);
}

// 使用PDO建立连接
try {
    $pdo = new PDO("mysql:host=localhost;dbname=database", "username", "password");
    // 设置错误模式为异常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("连接失败: " . $e->getMessage());
}

// 使用完毕后断开连接
$mysqli->close();
// 对于PDO,连接会在对象被销毁时自动关闭

5.1.2 SQL语句的构造与执行

在连接到数据库之后,我们可以构造SQL语句来执行数据库操作,比如插入、更新、删除和查询数据。

// 使用MySQLi执行SQL语句
if ($stmt = $mysqli->prepare("SELECT * FROM table WHERE id=?")) {
    $stmt->bind_param("i", $id); // 绑定参数
    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        // 处理查询结果
    }
    $stmt->close();
}

// 使用PDO执行SQL语句
$stmt = $pdo->prepare("SELECT * FROM table WHERE id=:id");
$stmt->bindParam(":id", $id, PDO::PARAM_INT);
$stmt->execute();
foreach ($stmt as $row) {
    // 处理查询结果
}

5.1.3 数据库事务处理与性能优化

数据库事务用于确保数据的一致性。PHP可以利用MySQL的事务控制语句来管理事务。

// 开始事务
$mysqli->autocommit(false);

// 执行操作
if (!$mysqli->query("UPDATE table SET column = value WHERE id = $id")) {
    $mysqli->rollback(); // 出错时回滚
    die("事务失败: " . $mysqli->error);
}

// 提交事务
$mysqli->commit();

// 关闭连接
$mysqli->close();

性能优化包括但不限于合理使用索引、优化查询语句、避免不必要的数据表锁定等。

5.2 PHP进阶特性

5.2.1 错误报告和异常处理机制的深入

PHP的错误报告可以通过配置来控制错误显示和记录的方式,这在生产环境中尤为重要。

// 禁用错误显示
ini_set('display_errors', 0);
error_reporting(E_ALL);

// 异常处理
try {
    // 潜在的错误代码
} catch (Exception $e) {
    // 异常处理代码
    echo "Error: " . $e->getMessage();
}

5.2.2 会话控制和Cookie管理的策略

会话控制和Cookie管理是Web开发中重要的组成部分,尤其是在用户认证和状态管理方面。

// 开始会话
session_start();

// 设置会话变量
$_SESSION['user'] = 'username';

// 删除会话变量
unset($_SESSION['user']);

// 设置Cookie
setcookie("user", "username", time() + 3600, "/");

// 删除Cookie
setcookie("user", "", time() - 3600);

5.2.3 网络编程能力的拓展与应用

PHP提供了丰富的网络编程接口,可以用来创建服务器端应用程序或进行远程通信。

// 创建一个简单的HTTP服务器
$server = stream_socket_server("tcp://localhost:8080");
while ($conn = @stream_socket_accept($server)) {
    // 处理连接
    fwrite($conn, "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nHello World!\n");
    fclose($conn);
}
fclose($server);

5.2.4 PHP预定义和超级全局变量的全面介绍

PHP提供了多种预定义变量,它们可以在任何脚本的任何地方使用。

// 获取请求类型
$method = $_SERVER['REQUEST_METHOD'];

// 获取客户端IP
$ip = $_SERVER['REMOTE_ADDR'];

// 超级全局变量数组
$globals = ['_GET', '_POST', '_COOKIE', '_SESSION', '_SERVER', '_REQUEST'];

5.2.5 PHP扩展库的使用与安装技巧

PHP的扩展库为语言增加了更多的功能和性能,了解如何管理和安装这些扩展是非常有用的。

// 查看已安装的扩展
php -m

// 安装新的PHP扩展
pecl install redis

// 启用扩展
echo "extension=redis.so" > /etc/php/7.4/mods-available/redis.ini

// 重启Web服务器使扩展生效
service apache2 restart

通过这些高级特性,我们可以将PHP应用推向一个全新的水平,不仅可以创建更强大的Web应用程序,还可以提高应用程序的效率和稳定性。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:《PHP4完全中文手册》为PHP学习者提供了一个全面且深入的学习资源,涵盖从基础到高级主题的各个方面。通过CHM格式,用户可以高效地离线查阅和搜索PHP4的相关知识。教程详细介绍了PHP的基础语法、字符串与数组处理、函数与类定义、文件与目录操作、数据库交互、错误处理、会话控制与Cookie、网络编程、预定义和超级全局变量以及PHP扩展的使用。尽管PHP4已不常用,但它的核心概念对于理解PHP语言及其后续版本仍然重要。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值