公告: 最近网站更新,清除部分友链!如有疑问,请联系我!

关注我的微信公告平台

关注我的微信公告号

个人博客源码
一个炫酷的flash网站模板
兼容所有浏览器的页面加载进度条
利用jQuery设置 鼠标滑过图片居中放大和缩小
边栏过渡效果
jQuery制作相册
对象克隆以及深复制和浅复制

对象克隆以及深复制和浅复制

  对象的克隆顾名思义就是复制一个对象,但是复制对象分两种情况,一种是两个变量都指向一个对象,这是浅复制;一种是两个变量指向两个对象,这是深复制!  一,浅复制 class A {   public $a = 1;   public $b = 2;  }  $a = new A();  $b = $a;    $a->a = 2;  echo $b->a;    //输出2  复制对象后,a对象属性的改变也会引起b属性的改变    二,深复制 class A {   public $a = 1;   public $b = 2;     //当对象被克隆时调用,这时$b->b的值是3   public function __clone() {   $this->b = 3;   }    }  $a = new A();  $b = clone $a;    $a->a = 2;  echo $b->a;    //输出1  复制对象后,a对象属性的改变不会引起b属性的改变 
所属栏目:深入PHP 时间:2016-09-21浏览量:14
curl中的cookiejar无法保存cookie

curl中的cookiejar无法保存cookie

  首先给一段curl保存cookie的代码$ch = curl_init(); $options = array( CURLOPT_URL => 'http://www.ly89.cn/', CURLOPT_COOKIEJAR => 'D:\workdir\test\cookie.txt' ); curl_setopt_array($ch, $options); curl_exec($ch);  我想说的是如果发现cookie.txt里面没有内容,一定要看看CURLOPT_COOKIEJAR的路径是不是绝对路径一定要是绝对路径才能生效!一定要是绝对路径才能生效!一定要是绝对路径才能生效!PS:我被坑过!
所属栏目:深入PHP 时间:2016-09-20浏览量:16
模拟用户登录(含验证码登录)

模拟用户登录(含验证码登录)

  最近一直在做模拟用户登录,记录一下心得!!(以有验证码登录的为例)  这种登录一般要分三步!  一,模拟进入验证码页面获取cookie值  一般验证码会记录在session中,而每个session都会有对应的一个sessionid记录在cookie中,所以我们需要获取当前验证码页面的cookie值!然后我们需要获取到验证码图片对验证码的内容进行识别,可以是人工识别和自动识别!(PS:我是直接下载到本地然后自己去识别的,自动识别貌似很复杂)  二,找到表单内容 1,找到登录页面,只有这个页面才能接受你发送的数据,然后进行辨别是否可以登录 2,form表单所有的input的name和value,我们需要将这些值发送给服务器,当然其实服务器不一定需要全部的input,但为了保险起见,还是都发给服务器的好(PS:用户名和密码都是提前注册好的,这可不是黑客教程)  三,验证码的处理  在form表单中会有一个input是验证码的,这个input的value值需要填我们第一步获取的验证码内容,那我们既然用的是第一步的验证码的值,那我们也要用第一步验证码页面的cookie!所以要带着cookie模拟进入验证码页面 上面三步的原理是这样的: 1,现在服务器储存一个验证码session_start(); $_SESSION['captch'] = '1234';这是开启了一个session会话,那肯定会有一个对应的sessionid,比如是abcd 2,现在我们在第一步的获取的验证码cookie就是PHPSESSIONID=abcd,那我们需要识别的验证码内容就是1234 3,现在模拟到登录页面,登录页面会调用验证码页面,那这次又会开启一个新的session会话,而且验证码内容和上一个也是不一样的 4,那现在我们就要获取上一个验证码内容,所以就将PHPSESSIONID=abcd发送给服务器,跟服务器说“我现在就要打开这个session会话” 5,那现在我们输入上一个验证码内容就是正确的那! 好了,上面已经登录完成啦,如果登录成功服务器会返回一段cookie,这个cookie相当于通行证,有了他其他页面才知道你已经登录啦所以,模拟访问其他页面的时候需要带着着这段cookie! 下面是我模拟用户登录写的一段代码,有兴趣的可以看看,我用的是Snoopy采集类  1,code.php,这是获取验证码和验证码cookie的,验证码会显示出来,cookie会储存到cookie.txt中require 'Snoopy.php'; $snoopy = new Snoopy(); $url = ''; $snoopy->fetch($url); foreach ($snoopy->headers as $value) { if (preg_match('/Set-Cookie:(.*)/i', $value, $match)) { file_put_contents('cookie.txt', trim($match[1])); } } echo $snoopy->results;  2,login.php,登录页面,登录页面获取的验证码会储存到cookies.txtrequire 'Snoopy.php'; $snoopy = new Snoopy(); $loginUrl = ''; $post = array(); $post['username'] = ''; $post['password'] = ''; $post['checkcodestr'] = '';    //这里要填写获取的验证码 $snoopy->rawheaders['Cookie'] = file_get_contents('cookie.txt'); $snoopy->agent = "Mozilla/5.0 (Windows NT 6.1)  AppleWebKit/537.36 (KHTML, like Gecko)  Chrome/52.0.2743.82 Safari/537.36 "; $snoopy->submit($loginUrl, $post); $cookies = ''; foreach ($snoopy->headers as $value) { if (preg_match('/Set-Cookie:(.*)/i', $value, $match)) { $cookies .= trim($match[1]).';'; } } file_put_contents('cookies.txt', $cookies);  3,fetch.php,抓取页面,这里就要带着cookies.txt里面的cookie进行抓取require 'Snoopy.php'; $snoopy = new Snoopy(); $url = ''; $snoopy->rawheaders['Cookie'] = file_get_contents('cookies.txt'); $snoopy->agent = "Mozilla/5.0 (Windows NT 6.1)  AppleWebKit/537.36 (KHTML, like Gecko)  Chrome/52.0.2743.82 Safari/537.36 "; $snoopy->fetch($url); echo $snoopy->results; 当然login.php和fetch.php也是可以合并的,看情况决定喽!   
所属栏目:深入PHP 时间:2016-09-16浏览量:44
PHP采集类Snoopy下载

PHP采集类Snoopy下载

    PHP采集类Snoopy下载,挺好用的!这里也有使用Snoopy的示例!    下载密码:zfa7
所属栏目:代码工具 时间:2016-09-16浏览量:22
gzip压缩页面

gzip压缩页面

  首先注意一点使用gzip的前提是开启zlib扩展!  一,使用gzencode()函数进行字符串压缩header('Content-Encoding:gzip'); $str = 'hello world!'; if (extension_loaded('zlib'))     echo gzencode($str);  注意如果在获取该页面的内容后,需要用gzdecode()函数对该字符串进行解压!  二,使用ob_gzhandler进行页面压缩 ob_gzhandler的功能比较强大,下面是官网手册的说明ob_gzhandler()目的是用在ob_start()中作回调函数,以方便将gz 编码的数据发送到支持压缩页面的浏览器。在ob_gzhandler()真正发送压缩过的数据之前,该 函数会确定(判定)浏览器可以接受哪种类型内容编码("gzip","deflate",或者根本什么都不支持),然后 返回相应的输出。 所有可以发送正确头信息表明他自己可以接受压缩的网页的浏览器,都可以支持。if (extension_loaded('zlib'))     ob_start('ob_gzhandler');  三,对css,js文件进行压缩  ob_gzhandler只对输出内容进行压缩,对css和js文件不压缩!但我们可以用下面方法将css和js文件压缩输出(以js文件为例)  如果我想引入a.js文件,那我们可以建立一个a.php的文件,代码如下ob_start('ob_gzhandler'); $content = file_get_contents('a.js'); echo $content; ob_end_clean();  引入js文件代码如下<script type="text/javascript" src="a.php"></script>  下面是引入js文件的大小  下面是引入php文件的大小  注意:一般浏览器会对第一次引入的js或者css文件进行缓存,所以第一次引入js或者css文件是从服务器读取,而之后是从浏览器缓存中读取(没有清除缓存的情况下)!而上面的方法引入的是php文件,浏览器不会对其进行缓存,所以每次都是从服务器中读取!这是我们需要知道的一点! 
所属栏目:深入PHP 时间:2016-09-11浏览量:27
php自动加载类的几种方法

php自动加载类的几种方法

  下面介绍两种php自动加载类的方法!  一,使用spl_autoload_register()函数function autoload($class) { $arr = explode('_', $class); if ($arr[0] == 'a') { $dirPath = 'a'; //相对路径或者绝对路径 } $path = $dirPath.DIRECTORY_SEPARATOR.$class.'.php'; require_once($path); } spl_autoload_register('autoload'); //实现a文件夹下的a_b对象 new a_b();  这种方法比较方法简介,但是限制性比较大,a文件夹下面的所有类的名称必须含有a文件夹的名称,比如对象a_b的名称就必须有a!  二,自定义加载类对象  下面这个类是我自己写的,他步骤比第一种方法稍微麻烦一点,但是类名称的定义很自由,没有第一种方法的限制!(PS:只是提供一种思路)class Autoloader { private $dir = array(); /* *将需要加载类的目录路径进行注册 *@param string $tag  需要注册目录路径的代号 *@param string $path 需要注册的目录路径 相对路径或者绝对路径 **/ public function regisDir($tag, $path) { $this->dir[$tag] = $path; } /* *加载类文件 *@param string $class   DIR_CLASS **/ public function loadClass($class) { $arr = explode('_', $class); $dir = $arr[0]; try { if (!isset($this->dir[$dir]))  throw new Exception("没有注册 $dir 路径"); $dirPath = $this->dir[$dir]; } catch (Exception $e) { exit($e->getMessage()); } $path = $dirPath.DIRECTORY_SEPARATOR.$arr[1].'.php'; require_once $path; } } //加载a文件夹下面的对象b $autoload = new Autoloader(); $autoload->regisDir('A', 'a'); //OR   $autoload->regisDir('A', 'D:htdocslocalhosta'); $autoload->loadClass('A_b'); new b();
所属栏目:深入PHP 时间:2016-09-11浏览量:27
php 开发过程中需要注意编码格式的地方

php 开发过程中需要注意编码格式的地方

    这几天在开发过程中,遇到很多编码格式的问题,现在就我遇到的问题总结一下!当然肯定不全面,欢迎大家补充!    一,文件编码格式    1,windows系统中,一般新建的记事本文件都是ANSI格式,那在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码!有很多文件编辑器都可以转换编码的,比如nodepad++,如下    2,在linux系统中,使用vim编辑器查看当前文件的编码::set fileencoding设置当前文件编码::set fileencoding=utf-8    二,浏览器的编码格式    1,php设置header('Content-Type:text/html;charest=utf-8');    2,html设置    三,字符串的编码    一般字符串编码都与文件编码一致,但也有特殊情况!当我们抓取网页中的字符串时,该字符串的编码是抓取网页的编码,这时我们可以使用转换编码函数iconv('gbk', 'utf-8', '你好,世界!'); //将字符串由gbk转换编码到utf-8        最后如果我们需要对数据库进行操作的话,也是需要注意数据库的编码格式,主要在建立数据库,数据表和字段时注意!
所属栏目:深入PHP 时间:2016-09-04浏览量:56
js打印出对象所有信息函数

js打印出对象所有信息函数

    首先引入obj_dump.js文件,然后调用obj_dump(obj)函数,即可返回对象具体信息,他的信息排列跟数组一样,一目了然!    具体使用代码如下var obj = { a : { b : { c : 'd' } }, b : { c : { d : 'e' }, f : { g : 'h' } }, c : 'a' }; document.write(obj_dump(obj));    输出信息如下    下载密码:eju6
所属栏目:代码工具 时间:2016-08-27浏览量:34
php 在foreach里面改变数组的值

php 在foreach里面改变数组的值

  今天跟大家分享一个小技巧,foreach循环时如何改变数组的值,并在下一次循环中用到!  先看一下这个例子:    $arr = [1, 3, 5, 7];     foreach ($arr as $key => $value) {         $arr[$key+1] = 3;         echo $value;     }  输出:1357  这时候虽然改变了$arr下一个元素的值,但是输出的$value依然是原先的值,那我们用下面这种方法    $arr = [1, 3, 5, 7];     foreach ($arr as $key => $value) {         $arr[$key+1] = 3;         echo $arr[$key];     } 输出:1333这样可以使用上一次循环修改的值!
所属栏目:深入PHP 时间:2016-08-23浏览量:41

最热文章百度富文本编辑器UEditor安装配置全过程

    网站开发时富文本编辑器是必不可少的,他可以让用户自行编辑内容的样式然后上传到后台!下面我们来介绍如何安装使用百度富文本编辑器! 一、下载并且设置百度富文本编辑器的样式    你可以去百度UEditor的官网去下载编辑器,网址是http://uedit......阅读全文

联系我

姓 名:王业楼

微 博:点击这里关注我的微博

Q  Q:点击这里给我发消息

邮 箱:wangyelou@yeah.net

最新评论