xml地图|网站地图|网站标签 [设为首页] [加入收藏]
PHP解压ZIP文件到指定文件夹的方法_php技巧_脚本之
分类:编程

本文实例讲述了php实现背景图上添加圆形logo图标的方法。分享给大家供大家参考,具体如下:

本文实例讲述了PHP解压ZIP文件到指定文件夹的方法。分享给大家供大家参考,具体如下:

摘要:

  1. 压缩logo 成固定大小的方形图片2. 将logo 转成圆形logo3. 将logo与背景图合并
/** * function: 解压zip 格式的文件 * author:friker * date:2015-15-14 * reference:http://php.net/manual/zh/ref.zip.php * all rights reserved:wujiangwei123@126.com */class Unzip{ public function __construct(){ //init code here... header("content-type:text/html;charset=utf8"); } /** * 解压文件到指定目录 * * @param string zip压缩文件的路径 * @param string 解压文件的目的路径 * @param boolean 是否以压缩文件的名字创建目标文件夹 * @param boolean 是否重写已经存在的文件 * * @return boolean 返回成功 或失败 */ public function unzip($src_file, $dest_dir=false, $create_zip_name_dir=true, $overwrite=true){ if ($zip = zip_open{ if { $splitter = ($create_zip_name_dir === true) ? "." : "/"; if{ $dest_dir = substr($src_file, 0, strrpos)."/"; } // 如果不存在 创建目标解压目录 $this->create_dirs; // 对每个文件进行解压 while ($zip_entry = zip_read{ // 文件不在根目录 $pos_last_slash = strrpos(zip_entry_name; if ($pos_last_slash !== false){ // 创建目录 在末尾带 / $this->create_dirs($dest_dir.substr(zip_entry_name, 0, $pos_last_slash+1)); } // 打开包 if (zip_entry_open{ // 文件名保存在磁盘上 $file_name = $dest_dir.zip_entry_name; // 检查文件是否需要重写 if ($overwrite === true || $overwrite === false && !is_file{ // 读取压缩文件的内容 $fstream = zip_entry_read($zip_entry, zip_entry_filesize; @file_put_contents; // 设置权限 chmod; echo "save: ".$file_name."
"; } // 关闭入口 zip_entry_close; } } // 关闭压缩包 zip_close; } }else{ return false; } return true; } /** * 创建目录 */ public function create_dirs{ if { $directory_path = ""; $directories = explode; array_pop; foreach($directories as $directory){ $directory_path .= $directory."/"; if (!is_dir{ mkdir; chmod($directory_path, 0777); } } } }}/* using: $z = new Unzip(); $z->unzip("./bootstrap-3.3.4.zip",'./unzipres/', true, false);*/

本文主要介绍了利用webservice,session,cookie技术,来进行通用的单点登录系统的分析与设计。具体实现语言为PHP。单点 登录,英文名为Single Sign On,简称为 SSO,是目前企业,网络业务的用户综合处理的重要组成部分。而SSO的定义,是在多个应用系统中,用户只需要登陆一次就可以访问所有相互信任的应用系 统。

废话不多说,直接上代码:

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP操作zip文件及压缩技巧总结》、《php文件操作总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

动机:

load->library; } /** * @todo : 本函数用于 将方形的图片压缩后 * 再裁减成圆形 做成logo * 与背景图合并 * @return 返回url */ public function index(){ //头像 $headimgurl = 'a.jpg'; //背景图 $bgurl = './aa.png'; $imgs['dst'] = $bgurl; //第一步 压缩图片 $imggzip = $this->resize_img; //第二步 裁减成圆角图片 $imgs['src'] = $this->test; //第三步 合并图片 $dest = $this->mergerImg; } public function resize_img{ $imgname = $path.uniqid().'.jpg'; $file = $url; list = getimagesize; //获取原图尺寸 $percent = ; //缩放尺寸 $newwidth = $width * $percent; $newheight = $height * $percent; $src_im = imagecreatefromjpeg; $dst_im = imagecreatetruecolor($newwidth, $newheight); imagecopyresized($dst_im, $src_im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); imagejpeg; //输出压缩后的图片 imagedestroy; imagedestroy; return $imgname; } //第一步生成圆角图片 public function test{ $w = 110; $h=110; // original size $original_path= $url; $dest_path = $path.uniqid().'.png'; $src = imagecreatefromstring(file_get_contents; $newpic = imagecreatetruecolor; imagealphablending; $transparent = imagecolorallocatealpha($newpic, 0, 0, 0, 127); $r=$w/2; for for{ $c = imagecolorat; $_x = $x - $w/2; $_y = $y - $h/2; if + { imagesetpixel; }else{ imagesetpixel($newpic,$x,$y,$transparent); } } imagesavealpha; // header('Content-Type: image/png'); imagepng; imagedestroy; imagedestroy; return $dest_path; } //php 合并图片 public function mergerImg { $imgname = $path.rand.'.jpg'; list($max_width, $max_height) = getimagesize; $dests = imagecreatetruecolor($max_width, $max_height); $dst_im = imagecreatefrompng; imagecopy($dests,$dst_im,0,0,0,0,$max_width,$max_height); imagedestroy; $src_im = imagecreatefrompng; $src_info = getimagesize; imagecopy($dests,$src_im,270,202,0,0,$src_info[0],$src_info[1]); imagedestroy; // var_dump;exit; // header("Content-type: image/jpeg"); imagejpeg; // unlink; unlink; return $imgname; }}

希望本文所述对大家PHP程序设计有所帮助。

用过ucenter的全站登录方式的朋友,应该都知道这是典型的观察者模式的解决方案。用户中心作为subject, 其所属observer的注册和删除统一在ucenter的后台进行。而各个子应用站点都对应一个observer。每次用户中心的登录动作,都会触发 js脚本回调w3c标准的子站登录接口。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP图形与图片操作技巧汇总》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《PHP数组操作技巧大全》、《php字符串用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

这种方式的缺点,本人认为主要是两点:1. 子站点过多时,回调接口相应增多,这个在分布子站的量的限制上,如何控制来使登录效率不会太低,不好把握; 2. 当某个子站回调接口出现问题时,默认的登录过程会卡住(可以限制登录程序的执行时间,但相应出现问题子站后面的子站的回调接口就调不到了。

希望本文所述对大家PHP程序设计有所帮助。

基于以上问题,在实际开发过程中,本人设计了另一套单点登录系统。

一. 登陆原理说明

单点登录的技术实现机制:当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候,就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行效验,检查ticket的合法性。如果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。

可以看出,要实现SSO,需要以下主要的功能:

a) 所有应用系统共享一个身份认证系统;

b) 所有应用系统能够识别和提取ticket信息;

c) 应用系统能够识别已经登录过的用户,能自动判断当前用户是否登录过,从而完成单点登录的功能

基于以上基本原则,本人用php语言设计了一套单点登录系统的程序,目前已投入正式生成服务器运行。本系统程序,将ticket信息以全系统唯一的 session id作为媒介,从而获取当前在线用户的全站信息。

二. 过程说明:

  1. 第一次登陆某个站:

a) 用户输入用户名+密码,向用户验证中心发送登录请求

b) 当前登录站点,通过webservice请求,用户验证中心验证用户名,密码的合法性。如果验证通过,则生成ticket,用于标识当前会话的用户,并将当前登陆子站的站点标识符记录到用户中心,最后

c) 将获取的用户数据和ticket返回给子站。如果验证不通过,则返回相应的错误状态码。

d) 根据上一步的webservice请求返回的结果,当前子站对用户进行登陆处理:如状态码表示成功的话,则当前站点通过本站cookie保存ticket,并本站记录用户的登录状态。状态码表示失败的话,则给用户相应的登录失败提示。

  1. 登陆状态下,用户转到另一子:

a) 通过本站cookie或session验证用户的登录状态:如验证通过,进入正常本站处理程序;否则户中心验证用户的登录状态,如验证通过,则对返回的用户信息进行本地的登录处理,否则表明用户未登录。

本文由澳门新葡亰手机版发布于编程,转载请注明出处:PHP解压ZIP文件到指定文件夹的方法_php技巧_脚本之

上一篇:PHP屏蔽关键字实现方法_php实例_脚本之家 下一篇:没有了
猜你喜欢
热门排行
精彩图文