[PHP基础]总结2

读取文件内容

将全部文件全部读取到一个字符串中
$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');

绘制文字


输出图像文件

$filename='img.png';
imagepng(#img,$filename);

$filename='img.jpg';
imagejpeg($img,$filename,80);//80质量参数

生成图像二维码


从图片文件创建图片

$im=imagecreatefromjpeg($filename);
$logo=imagecreatefromjpeg($filename);
imagecopy($im,$logo,15,15,0,0,$width,$height);
imagejpeg($im,$filename);

加水印


异常处理

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");

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

";
    //读取session的值
    echo $_SESSION['test'];
    //销毁一个session
    unset($_SESSION[‘test’]);
    echo "
"; 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存储在服务端安全性较高

10000,
      'name'=>'Spark',
      'email'=>'[email protected]',
      '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 "解密后的用户信息:
"; print_r($uinfo); ?>
解密后的用户信息
aray
(
    [uid]=>10000
    [name]
     .......
)

你可能感兴趣的:([PHP基础]总结2)