浏览模式: 普通 | 列表

使用Snoopy进行模拟登陆、采集(curl)

[ 2014-09-03 09:25:47 | 作者: admin ]
Snoopy是一个使用PHP写的采集类,使用了一下发现功能比较强大,几乎可以模拟浏览器的所有行为,可以实现的功能有:

比起使用curl,fsockopen等函数来说方便很多,下面总结一下这个类一些属性与方法的作用。

方法:

        fetch($url) 该方法用于抓取网页内容,类似于file_get_contents
        submit($posturl,$params,$files) 该方法提交表单数据,第二个参数是一个一维数组,例如array('user'=>'zhangsan','pwd'=>'lisi'),第三个参数是可选参数,上传文件时用到,例如array('myfile' => './images/test.jpg')
        fetchlinks($url) 该方法用于获取网页所有链接
        fetchform($url) 该方法用于获取网页上的form表单内容
...

阅读全文…

php中的几个目录函数

[ 2014-08-15 15:53:10 | 作者: admin ]
<?php
echo 'documentroot:'.$_SERVER['DOCUMENT_ROOT'].'<br>'; //根目录,在apache的配置文件里定义:httpd.conf 比如:DocumentRoot "D:/work/php_root"
echo 'httphost:'.$_SERVER['HTTP_HOST'].'<br>'; //域名,比如:localhost
echo 'phpself:'.$_SERVER['PHP_SELF'].'<br>'; // 从根目录到文件本身的路径
echo 'script filename'.$_SERVER['SCRIPT_FILENAME'].'<br>'; //documentroot+phpself
echo 'request uri'.$_SERVER['REQUEST_URI'].'<br>'; //从根目录开始所有的URL字符串,包括问号之后的字符
...

阅读全文…
php多个连续空格(&nbsp;)或者分段<br/>替换为一个。如何改写下面这个更加简短?
function re($content)
{
         /* return preg_replace('/(<br\s*\/?>){3,}|(&nbsp;){3,}/i'),'\\1',$content); */ //错误!
         /* return preg_replace('/(<br\s*\/?>|&nbsp;){3,}/i'),'\\1',$content); */ //错误!
         return preg_replace(array('/(<br\s*\/?>){3,}/i','/(&nbsp;){3,}/i'),'\\1',$content);
}


//test
$content = '1111&nbsp;&nbsp;&nbsp;&nbsp;<br><br><br><br
...

阅读全文…
一、问题原因

从php5.1.0开始,php.ini里加了date.timezone这个选项,并且默认情况下是关闭的。DATE()函数显示的时间都是格林威治标准时间,和北京时间相差正好8个小时。其他时间函数如strtotime()也会有此问题,以下解决方法均可适用。

二、解决办法

方法一:修改php.ini设置:
打开php.ini,查找“date.timezone =”,去掉前面的分号,并在其后面加上设置的时区值,重启服务即可。
如:date.timezone=PRC

部分时区值:
格林威治(默认时区):Etc/GMT。东八区快8小时为Etc/GMT-8,西八区慢8小时为Etc/GMT+8。
大陆内地可用的值有:Asia/Chongqing、Asia/Shanghai、Asia/Urumqi 、PRC。依次为重庆,上海,乌鲁木齐,中华人民共和国。
...

阅读全文…

PHP中获取文件扩展名的N种方法

[ 2014-05-27 10:09:29 | 作者: admin ]
PHP中获取文件扩展名的N种方法
从网上收罗的,基本上就以下这几种方式:


第1种方法:
function get_extension($file)
{
substr(strrchr($file, '.'), 1);
}
第2种方法:
function get_extension($file)
{
return substr($file, strrpos($file, '.')+1);
}
第3种方法:
function get_extension($file)
{
return end(explode('.', $file));
}
第4种方法:
function get_extension($file)
{
$info = pathinfo($file);
return $info['extension'];
}
第5种方法:
function get_extension($file)
...

阅读全文…

No input file specified 的原因

[ 2014-05-23 11:03:07 | 作者: admin ]
p.s. windows下遇到一个现象,php.ini中如果直接使用盘符 f: 就会出现这个提示,后面加上英文的路径 f:/php 就可以正常 ,如
open_basedir = "F:/php;f:/php;C:/WINDOWS/TEMP/;"


解决NGINX PHP "No input file specified"
打开一个页面<?php phpinfo(); ?> 然后在游览器下运行 结
No input file specified.

以下内容为网络收集

FastCGI模式下访问php文件时,出现No input file specified.错误
查看access.log 发现是 404

原因分析:
任何对.php文件的请求,都简单地交给php-cgi去处理,但没有验证该php文件是否存在。PHP文件不存在,没办法返回普通的404错误,它返回 ...

阅读全文…
这应该也不是360浏览器独有的现象
在360浏览器安装和升级的时候,会导入IE保存的cookie
而当IE下保存的cookie未指定域的时候,360会为其指定一个域 形如 .bbs.xg98.com
这其实就成了新的cookie,而不是原来的cookie了,所以程序识别不到。
当用户重新登陆的时候,浏览器会优先读取指定了域的cookie,而导致未指定域的cookie读取不到,所以无论新增还是更新重新登陆都无效。

这个时候只有手动清楚cookie,或者使用程序删除掉指定域的部分cookie,程序才能自动读取未指定域的cookie,不用重新登陆即生效。

PHP图形验证码无法显示的原因

[ 2014-04-04 11:11:45 | 作者: admin ]
一、如果是utf-8,就有可能是BOM没有清除
二、在Header("Content-type: image/PNG"); 之前有输出
三、第一行PHP隐藏了代码,如空格,回车等。
解决代码:
<?php
session_start(); //启动Session会话
$image_width=70; //设置图像宽度
$image_height=18; //设置图像高度
ob_clean();
$new_number=$_GET[num];
//$new_number=5;
$num_image=imagecreate($image_width,$image_height); //创建一个画布
imagecolorallocate($num_image,255,255,255); //设置画布的颜色
...

阅读全文…