1. 与文件系统和服务器的交互
    1. 使用PHP上传文件
      1. php.ini配置文件5个与文件上传相关指令
        1. file_uploads
        2. upload_tmp_dir
        3. upload_max_filesize
        4. post_max_size
      2. 文件上传的HTML代码
        1. form标签
        2. 文件上传必须有设置文件最大长度的表单域<input
        3. input需要指定文件类型
      3. 编写处理文件的php
        1. 当文件被上传保存在临时目录
        2. 关于文件上传的数据保存在$_FILES超级全局数组中
        3. $_FILES['userfile'][子类型]
          1. $_FILES['userfile']['tmp_name']
          2. $_FILES['userfile']['name']
          3. $_FILES['userfile']['size']
          4. $_FILES['userfile']['type']
          5. $_FILES['userfile']['error']
          6. UPLOAD_ERROR_OK.值为0
          7. UPLOAD_ERROR_INI_SIZE.值为1
          8. UPLOAD_ERROR_FORM_SIZE.值为2
          9. UPLOAD_ERROR_PARTIAL.值为3
          10. UPLOAD_ERROR_NO_FILE.值为4
          11. UPLOAD_ERROR_NO_TMP_DIR值为6
          12. UPLOAD_ERROR_CANT_WRITE值为7
      4. 从htm表单获取文件的php脚本相关函数
        1. is_uploaded_file(临时目录)
        2. move_uploaded_file(文件.要到的文件夹)
        3. file_get_contents(文件地址)
        4. strip_tags(内容)
        5. file_put_contents(文件.内容)
        6. nl2br()
        7. basename(带路径的文件.[文件类型])
        8. 通常会在if之内执行.!代表如果执行不成功返回错误信息
      5. 避免常见的上传问题
        1. 前面例子假设用户已经登录了
        2. 对文件类型和内容要很注意以及文件本身的名字
        3. 要降低用户浏览web服务器目录的风险
        4. 检查php配置和apache设置
    2. 使用目录函数
      1. opendir(目录变量)
      2. readfile(上面句柄)
      3. closedir(句柄)
      4. rewinddir(句柄)
      5. scandir()
      6. 面向对象方法
        1. 先$dir=dir("/uploads/")
        2. $dir->handle属性
        3. $dir->path属性
        4. $dir->read()方法
      7. 获得当前目录信息
        1. dirname(带路径的文件)
        2. basename(带路径的文件)
        3. disk_free_space(路径)
      8. 创建和删除目录
        1. mkdir("/mabt/test".0777)
        2. rmdir("/mabt/test")
    3. 与服务器上的文件进行交互
      1. 获取文件信息
        1. fileatime()
        2. filemtime()
        3. fileowner()
          1. posix_getpwuid()
        4. filegroup()
          1. posix_getgrgid()
        5. fileperms($file)
        6. decoct()
        7. filetype()
        8. filesize()
      2. 检测文件函数
        1. is_dir()
        2. is_executable()
        3. is_file()
        4. is_link()
        5. is_readable()
        6. is_writable()
      3. stat(文件)
      4. lstat()
      5. clearstatcache()
      6. 更改文件的属性
        1. chgrp(文件.组)
        2. chmod(文件.权限)
        3. chown(文件.作者)
        4. 上面函数都不能在window上运行
      7. 创建删除和移动文件
        1. touch(文件.时间)
        2. unlink()
        3. copy()
        4. rename(老文件.新文件)
    4. 在服务器上运行程序
      1. exec()
      2. passthru()
      3. system(命令)
      4. 反引号``
      5. 更复杂的需求
      6. 如果打算把用户提交的数据放在执行命令里
        1. 首先escapeshellcmd()过滤字符串
        2. 也可以用escapeshellarg()
    5. 使用服务器环境变量
      1. getenv()
        1. getenv("HTTP_REFERER")
      2. putenv()
      3. 运行phpinfo()函数
  2. 使用网络函数和协议函数
    1. 了解可供使用的协议
      1. HTTP超文本传输协议
      2. FTP文件传输协议
      3. RFC 文档征求意见文件
      4. IETF Internet工程任务组
    2. 发送和读取电子邮件
      1. 发邮件主要方法mail()函数
      2. 邮件协议
        1. SMTP
        2. IMAP4 Internet邮件访问协议
        3. POP3 邮政协议
        4. 用来读取特定邮件服务器上的邮件
    3. 使用其他web站点的数据
      1. 先定义url然后file_get_contents(url)
      2. list($a.$b.$c)=explode('@'.$content);
      3. urlencode()
    4. 使用网络查找函数
      1. gethostbyname(url域名)
      2. gethostbyaddr(ip参数)
      3. dns_get_mx()
      4. checkdnsrr(主机名)
      5. parse_url(url地址)
    5. 使用FTP
      1. 备份或镜像一个文件
        1. FTP文件传输协议
        2. PHP中使用fopen等函数来连接ftp服务器
      2. FTP函数
        1. $conn=ftp_connect(url主机)
        2. ftp_login($conn.user.mima)
        3. filemtime(文件路径)
        4. fileatime(文件路程)
        5. ftp_mdtm($conn.远程文件路径)
        6. ftp_fget($conn.本地文件句柄.远程文件路径.FTP_BINARY)
        7. ftp_exists()
        8. ftp_quit($conn)
        9. ftp_fput()
        10. ftp_put()
      3. 避免超时
      4. 使用其他的FTP函数
        1. ftp_size()
        2. ftp_nlist()
  3. 日期和时间的管理
    1. 在php中获取日期和时间
      1. date('格式化显示Y-M-D'.时间戳)函数
      2. 使用unix时间戳
      3. 将一个日期和时间转变成unix时间戳
      4. 返回当前时间的时间戳
      5. 使用getdate(时间戳)
      6. 使用checkdate(月.天.年)函数检查日期有效性
      7. 格式化时间戳
    2. php和MySQL之间的日期格式转换
      1. MySQL端时间转换
        1. DATE_FORMAT()
        2. UNIX_TIMESTAMP()
    3. 计算日期
    4. 使用日历函数
    5. 使用微秒ms
  4. 创建图像
    1. 在php中设定图像支持
    2. 理解图像格式
    3. 创建图像
      1. 先创建一个背景图像
      2. 在背景上绘制图形轮廓或输入文本
        1. 定义画笔颜色
        2. 绘制颜色背景
        3. 绘制一个线
        4. 添加文本内容
      3. 输出最终图形
        1. header("content-type:image/png");
        2. header函数的另一个应用重定向
        3. 定义输出类型之后可以输出图像了
      4. 清除所有资源
    4. 在其他页面中使用自动生成的图像
    5. 用文本和字体创建图像
    6. 绘制图像与用图表描绘数据
  5. 在PHP中使用会话控制
    1. 什么是会话控制
    2. Cookie
      1. 什么是Cookie
      2. 通过php设置Cookie
      3. 在会话中使用cookie
      4. 储存会话id
    3. 创建一个会话的步骤
      1. 开始一个会话
        1. session_start()
        2. 2.将php设置成当有用户访问网站自动启动一个会话
      2. 注册会话变量
      3. 使用会话变量
      4. 注销变量并销毁变量
        1. 注销会话变量
        2. 注销所有的变量
        3. 清除会话ID
    4. 在php.ini中配置会话控制
    5. 会话变量
    6. 会话和身份验证
  6. 其他有用的特性
    1. 使用eval()函数对字符串求值
    2. 中断执行:die()和exit
      1. exit()
      2. 执行语句 or die("这段语句有错误"或一个报错函数);
    3. 序列化变量和对象
      1. serialize()
      2. unserialize()
      3. 注意转义事项
    4. 获取php环境信息
      1. 查找php的扩展部件
        1. get_loaded_extensions()函数
        2. get_extension_funcs('扩展库名比如gd')函数
      2. 识别脚本所有者
      3. 确定脚本最近修改时间
    5. 暂时改变运行时环境
      1. ini_get()访问指令
      2. ini_set()修改指令
    6. 加亮源代码
    7. 在命令行中使用php
      1. 通过一个文件
      2. 管道
      3. 直接在命令下