读取文件内容
将全部文件全部读取到一个字符串中
$content=file_get_contents('./test.txt');
$content=file_get_contents('./test.txt',null,null,100,500);//100读取内容的开始点 500长度
fgets
从文件指针中读取一行
freads
读取指定长度的字符串
$fp=fopen('./text.txt','rb');//rb只读方式打开一个二进制文件
while(!feof($fp)){
echo fgets($fp);//读取一行
}
fclose($fp);
$fp=fpen('./text.txt','rb');
$contents=' ';
while(!feof($fp)){//测试文件指针是否到文件结束的位置
$contents.=fread($fp,4096);//一次读取4096个字符
}
fclose($fp);//关闭文件指针 避免文件句柄被占用
文件是否存在
$filename='./test.txt';
if(file_exists($filename)){
echo file_get_contents($filename);
}
file_exists
文件、目录是否存在
is_file
给定的路径是都是一个文件
$filename='./test.txt';
if(is_file($filename)){
echo file_get_contents($filename);
}
is_writeable($filename)
是否可读
is_readable($filename)
是否可写
文件元属性
fileowner
获取文件所有者
filectime
创建时间
filemtime
修改时间
fileatime
访问时间
$mtime=filemtime($filename);
echo '修改时间: '.date('Y-m-d H:i:s',filemtime($filename));
filesize($filename)
取得文件大小
$size=filesize($filename);//返回字节数
time()
获取时间戳
date()
取得当前日期
date("Y-m-d");//2014-03-20
date("Y-m-d",'1396193923');//2014-03-30
strtotime
获取某个日期/时间的时间戳
strtotime('2014-04-29');//1398700800
strtotime('2014-04-29 00:00:01');//1398700801
date_default_timezone_set('Asia/shanghai');//设置默认时区是中国
strtotime(要解析的时间字符串,计算返回值的时间[可选])
返回:时间戳/FALSE
strtotime("now")//time()
strtotime("+1 seconds");
strtotime("+1 day");
strtotime("+1 week");
strtotime("+1 week 3 days 7hours 5seconds");
gmdate
格式化一个GMT的日期和时间,返回的是格林威治标准时(GMT)
中国时区:东八区(GMT+8)
date('Y-m-d H:i:s',time());//2014-05-01 15:15:22
gmdate('Y-m-d H:i:s',time());//2014-05-01 07:15:22
PHP图形操作之GD库简介
GD
Graphic Device,PHP的GD库用来处理图形的扩展库,通过GD库提供的一系列API,可以对图像进行处理或直接生成信的图片。
GD库常用语图片加水印,验证码生成等方法
创建真彩色的空白图片
$img=imagecreatetruecolor(100,100);
画笔
$red=imagecolorallocate($img,0xFF,0x00,0x00);//R,G,B
线条绘制
imageline($img,0,0,100,100,$red);//0,0起始坐标 100,100终点坐标
通过header与imagepng进行图像输出
header("content-type:image/png");
imagepng($img);
释放图片占用的内存
imagedestroy(#img);
图像保存到文件中
imagepng($img,'img.png');
绘制文字
<?php
$img=imagecreatetruecolor(100,100);
$red=imagecolorallocate($img,0xFF,0x00,0x00,0x00);
imagestring($img,5,0,0,"hello world",$red);//5
header("content-type:image/png");
imagepng($img);
imagedestroy($img);
?>
输出图像文件
$filename='img.png';
imagepng(#img,$filename);
$filename='img.jpg';
imagejpeg($img,$filename,80);//80质量参数
生成图像二维码
<?php
$img=imagecreatetruecolor(100,400);
$black=imagecolorallocate($img,0x00,0x00,0x00);
$green=imagecolorallocate($img,0x00,0xFF,0x00);
$white=imagecolorallocate($img,0xFF,0xFF,0xFF);
imagefill($img,0,0,$white);//image线条的绘制
$color="";
for($i=0;$i<4;$i++){
$code.=rand(0,9);//$code.=dechex(rand(0,15));
}
imagestring($img,5,10,10,$code,$black);
//加入噪点干扰
for($i=0;$i<50;$i++){
imagesetpixel($img,rand(0,100),rand(0,100),$black);
imagesetpixel($img,rand(0,100),rand(0,100),$green);
}
header("content-type:image/png");
imagepng($img);
imagedestroy($img);
?>
从图片文件创建图片
$im=imagecreatefromjpeg($filename);
$logo=imagecreatefromjpeg($filename);
imagecopy($im,$logo,15,15,0,0,$width,$height);
imagejpeg($im,$filename);
加水印
<?php
$url="test.jpg";
$content=file_get_contents($url);
$filename='tmp.jpg';
file_put_contents($filename,$content);
#url='test2.png';
file_put_contents('logo.png',file_get_contents($url));
//开始添加水印
$imagecreatefromjpeg($filename);
$logo=imagecreatefrompng('logo.png');
$size=getimagesize('logo.png');
imagecopy($im,$logo,15,15,0,0,$size[0],$size[1]);
//15目标X 15目标y $size[0]loo宽 $size[2]logo高
header("content-type:image/png");
imagepng($im);
?>
异常处理
try{
}catch(Exception $e){
//$e->getMessage();
}
throw new Exception("....");
Exception的属性与方法
message
异常消息内容
code
异常代码
file
抛出异常的文件名
line
抛出异常在改文件的行数
方法
getTrace 获取异常追踪信息
getTraceAsString 获取异常追踪信息的字符串
getMessage 获取出错信息
class MyException extends Exception{
function getInfo(){
return '自定义错误信息';
}
}
try{
......throw new MyException('error');
}catch(Exception $e){
echo $e->getInfo();
echo $e->getMessage();
}
Cookie
setcookie
name(cookie名)
可以通过$COOKIE['name']进行访问
value(cookie的值)
expire(过期时间)
Unix时间戳格式,默认为0,表示浏览器关闭即失效
path(有效路径)
如果路径为'/',则整个网站都有效
domain(有效域)
默认整个域名都有效,如果设置了‘www.imooc.com’,则只有在www子域中有效
$value='test';
setCookie("TestCookie",$value);
setCookie("TestCookie",$value,time()+3600);//有效期一小时
setCookie("TestCookie",$value,time()+3600,"path","imooc.com");
Cookie是通过标头设置的
所以可用header方法
header("Set-Cookie:cookie_name=value");
<?php
$value=time();
setcookie('test',$value);
if(isset($_COOKIE['test']){
echo 'success';
}
?>
cookie的删除
setcookie('test',' ',time()-1);
或
header("Set-Cookie:test=13393832059;expires=".gmdate('D,d M Y H :i:s \G\M\T'),time()-1);
这里用gmdate,用来生成格林威治标准时间,以排除时差的影响
cookie的有效路径
setcookie('test',time(),0,'/path');
使test在/path以及子路径/path/abc下都有效,但是在根目录就读取不到test的cookie值。
session与cookie异同
cookie相对不是太安全,容易被盗用导致cookie欺骗,单个cookie的值最大只能存储4K。
每次请求都要进行网络传输,占用带宽。
session是将用户的会话数据存储在服务端,没有大小限制,通过session id进行用户识别,PHP默认情况下session id是通过cookie来保存的。session依赖于cookie,但这并不绝对。session id也可以通过参数来实现,只要将session id传递到服务端进行识别的机制都可以使用session
<?php
//开始使用session
session_start();
//设置一个session
$SESSION['test']=time();
//显示当前的session_id
echo "session_id:".session_id();
echo "<br>";
//读取session的值
echo $_SESSION['test'];
//销毁一个session
unset($_SESSION[‘test’]);
echo "<br>";
var_dump($_SESSION);
?>
session_id:90ik.....
148946047
array(0){
}
session_start();
$_SESSION['test']=time();
var_dump($_SESSION);\
array(1){
["test"]=>
int(1489465540)
}
session会自动的对要设置的值进行encode与decode,因此session可以支持任意数据类型,包括数据与对象等。
session_start();
$_SESSION['ary']=array('name'=>'jobs');
$_SESSION['obj']=new stdClass();
var_dump(#_SESSION);
默认情况下,session是以文件形式存储在服务器上的,因此当一个页面开启了session之后,会独占这个session文件,这样会导致当前用户的其他访问无法执行而等待。可以采用缓存或数据库形式存储来解决这个问题。
删除某个session的值:unset
session_start();
$_SESSION['name']='jobs';
unset($_SESSION['name']);
echo $_SESSION['name'];//提示name不存在
session_destroy:
删除所有数据,但session_id仍存在
session_start();
$_SESSION[‘name’]='jobs';
$_SESSION['time']=time();
session_destroy();
session_destroy不会立即销毁值,只有下次访问时,$_SESSION才为空
如果要立即销毁$_SESSION,使用unset
sesstion_start();
$_SESSION[‘name’]='jobs';
$_SESSION['name']=time();
unset($_SESSION);
session_destroy();
var_dump($_SESSION);//此时已为空
session存储登录信息
$_SESSION[‘uid’]=$userinfo['uid'];
$_SESSION['userinfo']=$userinfo;
session与cookie
session可存取多种数据类型
cookie只支持字符串类型
cookie对安全性较高的数据需格式化和加密
session存储在服务端安全性较高
<?php
session_start();
$userinfo=array(
'uid'=>10000,
'name'=>'Spark',
'email'=>'spark@imooc.com',
'sex'=>'man',
'age'=>'18'
);
header("content-type:text/html;charset=utf-8");
$_SESSION['uid']=$userinfo['uid'];
$_SESSION['name']=$userinfo['name'];
$_SESSION['userinfo']=$userinfo;
$securekey='imooc';
$str=serialize($userinfo);
$str=base64_encode(mcrypt_encrypt(MCRYPT_RIJNDEL_256,md5($securekey),$str,MCRYPT_MODE_ECB));
//用户信息加密后,将加密后的用户数据存储到cookie中
setcookie('userinfo',$str);
//当需要使用时进行解密
$str=mcrypt_decrypt(MCRYPT_RIJNDEAL_256,md5($securekey),base64_encode($str),MCRYPT_MODE_ECB);
$uinfo=unserialize($str);
echo "解密后的用户信息:<br>";
print_r($uinfo);
?>
解密后的用户信息
aray
(
[uid]=>10000
[name]
.......
)