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