;

报错原因:抓取页面大小超过了600000 解决办法:文件头部找到MAX_FILE_SIZE修改即可 define(‘MAX_FILE_SIZE’, 6000000); 相关资料:https://github.com/samacs/simple_html_dom/blob/master/example/example_basic_selector.php 官方文档:http://simplehtmldom.sourceforge.net/

simple html dom 报错’Fatal error: Call to a member function find() on boolean in ‘的处理 4 天前
;

1.查看当前php环境 打开phpinfo(); 搜索Architecture (x64|x86) #x86是32位 x64是64位 搜索Thread Safety (enabled|disabled) #enabled是TS版本,disabled是NTS版本 搜索PHP Extension Build (API20131226,TS,VC11) #api版本,VC11是编译器版本 根据图上配置信息,我们需要找的php扩展就是php 5.6 VC11ts-x64 2.下载php_redis.dll 地址一:https://pecl.php.net/package/redis/2.2.7/windows 地址二:https://windows.php.net/downloads/pecl/releases/redis/2.2.7/ 3.文件及配置 将下载的文件解压,然后复制php_redis.dll到C:\wamp\bin\php\php5.6.31\ext 然后编辑apache的php.ini扩展C:\wamp64\bin\apache\apache2.4.27\bin extension=php_redis.dll 重启wamp后到phpinfo()中查看 4.php连接并测试redis数据库 <?php $redis = new R…

wamp下redis安装及配置 2018年3月10日
;

Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。 前序: 首先要明白PHPSESSID看似多次刷新都不会改变其实是没有删除本地相关联的cookie,删除的方法 session_destroy();//删除服务器端的session文件 setcookie(session_name(),”,time()-3600,’/’);//删除本地相关联的cookie session_unset();//清空内存中的cookie或者是$_SESSION = array(); 然后再刷新相应的页面你就会看到PHPSESSID会发生变化了,根据此可以得:如果session文件已经创建则不重新生成PHPSESSID,否则需要重新生成,生成规则,就看下边喽……! 现在经过测试应该是不是检测session文件是否存在,而是检测PHPSESSID的cookie是否存在并且是否未过期!特此更正! 可能PHP开发者心中多少都思考过这么两个问题: 种植在客户端浏览器中的PHPSESSIONID会出现重复吗? PHPSESSIONID安全性如何,有没可能被黑客轻易的仿造呢? 带上这个问题,我稍微注意了一下PHP的源码后,疑…

PHP中Session ID的实现原理 2018年2月8日
;

一、默认机制,用磁盘文件来实现PHP会话。php.ini配置:session.save_handler = files 1、session_start() A、 session_start()是session机制的开始,它有一定概率开启垃圾回收,因为session是存放在文件中,   PHP自身的垃圾回收是无效的,SESSION的回收是要删文件的,这个概率是根据php.ini的配置决定的,   但是有的系统是 session.gc_probability =0,这也就是说概率是0,而是通过cron脚本来实现垃圾回收。 session.gc_probability =1 session.gc_divisor =1000 session.gc_maxlifetime =1440//过期时间 默认24分钟 //概率是session.gc_probability/session.gc_divisor 结果 1/1000, //不建议设置过小,因为session的垃圾回收,是需要检查每个文件是否过期的。 session.save_path =//好像不同的系统默认不一样,有一种设置是 “N;/path” //这是随机分级存储,这个样的话,垃圾回收将不起作用,需要自己写脚本 B、 session会判断当前是否有$_COOKIE[s…

彻底理解PHP的SESSION机制 2018年2月7日
;

PHP中,如果要获取SESSION数据,必须要有对应的session_id,session_id的获取方式有两种 1.基于客户端的cookie 2.基于url 先说第一种情况,基于客户端的cookie.服务器端的脚本在开启session后,会依据php.ini来存储session,下面列举一些 session.save_handler 定义存储和获取与会话关联的数据的处理器的名字。默认为 files。如果设定为files(session.save_handler = files),则采用的是php内置机制,如果想自定义存储方式(比如存储到数据库中),则使用session_set_save_handler()进行自定义设置 session.save_path 定义了传递给存储处理器的参数(注释1)。如果选择了默认的 files 文件处理器,则此值是创建文件的路径。默认为 /tmp,也可以修改,比如session.save_path = “e:/wamp/tmp”。也可以使用session_save_path()在脚本中设定(一定在session_start前设定) 举例 假设脚本是session.php session_save_path(getcwd()."/session_folder");//为…

PHP SESSION机制,从存储到读取 2018年2月7日
;

1.路径 /etc/mysql/my.cnf 2.去掉log_bin的注释 log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 100M 3.重启mysql service mysql restart 4.生成文件 /var/log/mysqlmysql-bin.000001 mysqlbinlog可用于数据库被误删后的恢复

mysql开启binlog 2018年1月16日
;

public: 公开可见,用在类中,声明类的某个方法或变量属性可以直接在外部调用。 protected: 对象内部可见 (该对象的子对象同样可以访问) private: 对象自身内部可见 (不包含该对象的子对象,或者说private属性和方法不会被继承) global: 是在方法(函数)中,如果想要使用一个在方法外部声明的变量,可以使用global来声明。 static: 静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。 const: 可以把在类中始终保持不变的值定义为常量。 define(): 函数定义一个常量。 self: 指向当前类的指针 this: 指向当前对象的指针 parent: 指向父类的指针

public protected private global static const define self this parent 2018年1月15日
;

1.file_put_contents,file_get_contents $url = ‘http://example.com/image.jpg’; $img = ‘/my/folder/flower.jpg’; //路径加新的文件名,也可以为相对路径 file_put_contents($img, file_get_contents($url)); 备注:allow_url_fopen配置项需要为true 2.copy copy(‘http://example.com/image.jpg’, ‘local/folder/flower.jpg’); 3.curl $ch = curl_init(‘http://example.com/image.jpg’); $fp = fopen(‘/my/folder/flower.jpg’, ‘wb’); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp); 4.加入调试信息 $img = ""; $img = file_get_contents($image); echo $img; //for…

php下载图片并保存 2018年1月7日
;

1.mysql $dbc=mysql_connect(‘localhost’,$user,$pass) or die(‘error!’); mysql_select_db("testdb", $dbc); mysql_query("SET NAMES ‘utf8’"); $query="select * from `testtable`"; $result=mysql_query($query,$dbc) or die(‘wrong’); while($row = mysql_fetch_array($result, MYSQL_ASSOC)){ print_r($row); } 2.mysqli 3.pdo try { $dbh = new PDO(‘mysql:host=localhost;dbname=testdb;charset=UTF8’, $user, $pass); foreach($dbh->query(‘SELECT * from testtable’) as $row) { print_r($row); } $dbh = null; } catch (PDOException $e) { print "Error!: " . $e-&gt…

mysql mysqli pdo语法对比 2017年12月30日
;

首先到http://www.cz88.net/ 下载一个最新的ip库,安装ip库后会生成一个快捷方式,如下图所示: 点击打开后,出现下图界面: 点击解压,会生成一个20多兆的文本文件,打开或者下载一个UltraEdit打开,另存为utf-8的文本文档,这样可以防止出现乱码。在此之前我们要修改一下php.ini的配置,不然中途可能会出现一些错误 默认情况下:MySQL导入文件大小有限制的,最大为2M,所以当文件很大时候,直接无法导入,下面就这个问题的解决列举如下: 在php.ini中修改相关参数: 影响MySQL导入文件大小的参数有三个: memory_limit=128M,upload_max_filesize=2M,post_max_size=8M 我比较懒,直接将这三个都改成了128。 首先创建数据库 CREATE TABLE ip_data ( ipstart INT UNSIGNED NOT NULL, ipend INT UNSIGNED NOT NULL, region VARCHAR(50) NOT NULL, address VARCHAR(100) NOT NULL, PRIMARY KEY (ipstart, ipend) ) TYPE = MyISAM; 首先在PhpMyAdmin里手动建一个名称为ip_data的数据库…

利用纯真IP库建立mysql ip数据库 2017年12月1日
;

1.文件大小限制 路径:/etc/php5/apache2/php.ini 修改: upload_max_filesize = 30M post_max_size = 30M 同时memory_limit必须大于以上两项,重启服务器否则无法生效 相关文档:https://docs.phpmyadmin.net/en/latest/faq.html#faq1-16 2,文件导入报错‘Invalid column count in CSV input on line 1’ 导致此问题时因为表格的字段和数据库字段没有对应,修改之即可 数据库的ID主键要在数据导入完成后再添加

phpmyadmin导入svc文件的相关问题 2017年11月21日
;

服务器通过HTTP响应头Set-Cookie来告诉用户代理cookie的名、值、对应的路径、有效期等等,用户代理(一般就是浏览器)保存下来后,当向后端请求数据时,就会把对应的cookie放到请求头中发给服务器。 前端也可以通过JS来设置cookie。 所以只要设置好cookie之后,浏览器会自动在请求时附上cookie,并不需要你主动提交。 PHP中设置cookie PHP中设置Cookie的函数是setcookie(还有个setrawcookie并不常用)。 setcookie(‘hello’, ‘world’, time()+3600, ‘/test/’, ‘example.com’); 这样就设置了一个名为hello值为world,有效期为当前时间加上3600秒(也就是1个小时),域名为example.com,路径为/test/(代表只能在诸如http://example.com/test/a.php这样的路径下有效)的cookie。 具体参数请参考文档http://php.net/manual/zh/function.setcookie.php 服务器发送cookie 服务器会在响应的HTTP头中包含一个Set-Cookie头: Set-Cookie: hello=world; Expires=Sun, 13 Nov 2016 11:…

cookie的运行机制 2017年11月16日
;

传统的方案是,登录页和主页是单独的两个页面,登录成功后服务器生成用户信息对应的session,然后渲染主页数据,并通过响应头将sessionid传给浏览器并生成相应的cookie文件。这样下次请求页面时,浏览器会在http header带上相应的cookie,然后服务器根据cookie中的sessionid判断用户是否登录,再显示用户数据。

sesion验证的流程 2017年10月27日
;

1.jsonp jsonp只支持GET方式,type设为POST,也会自动变为GET 2.iframe 可以使用创建一个隐藏的iframe来实现,与ajax上传图片原理一样,较麻烦 3.服务端设置Access-Control-Allow 在被请求的Response header中加入 header(‘Access-Control-Allow-Origin:*’); header(‘Access-Control-Allow-Methods:POST’); header(‘Access-Control-Allow-Headers:x-requested-with,content-type’); Access-Control-Allow-Origin:* 表示允许任何域名跨域访问 如果需要指定某域名才允许跨域访问,只需把Access-Control-Allow-Origin:*改为Access-Control-Allow-Origin:允许的域名 例如:header(‘Access-Control-Allow-Origin:http://www.client.com’);

ajax跨域总结 2017年10月18日
;

步骤一:修改全局配置文件 路径:/etc/mysql/my.cnf bind-address = 127.0.0.1 修改为: bind-address = 0.0.0.0 步骤二:针对特定用户授权 (xshell内执行sql语句始终无反馈,不得已发现在phpmyadmin内可手动修改) phpmyadmin找到user一栏,接下来’Change Login Information’选项host改为’any host’ 命令行模式下修改: update user set host = ‘%’ where user = ‘root’; //注意=两边的空格 select host,user from user; //查看结果 grant命令相关 1.格式 grant 权限 on 数据库对象 to 用户 grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’; 2.示例 权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。 当权限1,权限2,…权…

mysql用户开启远程连接 2017年10月8日
;

文档:https://mp.weixin.qq.com/wiki

微信开发 2017年8月31日
;

1.什么是 html 标签,html 实体 . html标签 描述 html实体 great than &gt; . 2.为什么需要转换 比如我们要在浏览器里显示代码,浏览器会把它当作 html 标签语言直接执行,解决方法就是将 html 标签转变为 html 实体再编写到代码中. 比如我们要显示<script>alert(1)</script>, 那么我们的代码中应该这样写:&lt;script&gt;alert(1)&lt;/script&gt;。 既然代码&lt;script&gt;alert(1)&lt;/script&gt;显示的是<script>alert(1)</script>, 那么如果要显示&lt;script&gt;alert(1)&lt;/script&gt;; 又应该写怎么样的代码呢? 道理很简单,一段文本,如果在页面中的显示跟代码不一致,那说明肯定是里面包含了html的关键字,比如上一段代码中就包含了关键字&,如果想要在浏览器中显示&(html关键字),则需要在代码中用它对应的实体来替换掉,&的实体为&amp;, 因此要显示&a…

html标签与实体详细说明 2017年8月23日
;

Cookie的机制 Cookie是浏览器(User Agent)访问一些网站后,这些网站存放在客户端的一组数据,用于使网站等跟踪用户,实现用户自定义功能。 Cookie的Domain和Path属性标识了这个Cookie是哪一个网站发送给浏览器的;Cookie的Expires属性标识了Cookie的有 效时间,当Cookie的有效时间过了之后,这些数据就被自动删除了。 如果不设置过期时间,则表示这个Cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,Cookie就消失了。这种生命期为浏览会话期的 Cookie被称为会话Cookie。会话Cookie一般不保存在硬盘上而是保存在内存里。如果设置了过期时间,浏览器就会把Cookie保存到硬盘 上,关闭后再次打开浏览器,这些Cookie依然有效直到超过设定的过期时间。存储在硬盘上的Cookie可以在不同的浏览器进程间共享,比如两个IE窗 口。而对于保存在内存的Cookie,不同的浏览器有不同的处理方式。 Session的机制 Session是存放在服务器端的类似于HashTable结构(每一种Web开发技术的实现可能不一样,下文直接称之为HashTable)来存放用户数据,当浏览器第一次发送请求时,服务器自动生成了一个HashTable和一个Session ID用来唯一标识这个HashTable…

登录记住密码功能的实现 2017年8月19日
;

出于好奇,想看看取消root账号的全局权限是什么效果,结果竟然真的可以哦 sudo killall mysqld //干掉所有mysql进程 mysqld_safe –skip-grant-tables & //进入mysql安全模式 此时进入了mysql的console(控制台) mysql -p Enter password: //接着提示输入密码,此时会创建新密码,以前的密码依然可以用 接着进入了mysql控制台 mysql>use mysql //选择数据库 mysql>grant all privileges on *.* to baidu@localhost identified by ‘1’; //@前为账号名 mysql>flush privileges //更新权限 重启 service mysql restart

mysql误操作导致root账号权限丢失 2017年8月10日
;

按小时显示 select timestamp,count(*) as test from browserinfo group by date_format(timestamp, ‘%Y-%m-%d %H ‘); 查询今天,昨天,近7天,近30天,本月,上一月 select * from `browserinfo` where date_format(`timestamp`,’%Y-%m-%d’) = date_format(now(),’%Y-%m-%d’); //当天 select * from `browserinfo` where to_days(date_format(`timestamp`,’%Y-%m-%d’)) = to_days(now()); //当天,效果同上一条 select * from `browserinfo` where to_days(`timestamp`) = to_days(now()); //当天,效果同上两条 select * from `browserinfo` where to_days(now())-to_days(`timestamp`) <= 1; //昨天 select * from `browserinfo` where date_sub(curdate(), INTERVAL 7…

mysql 时间戳 按周、日、月 统计方法 2017年8月8日
;

从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码。 一、json_encode() <?php $arr = array (‘a’=>1,’b’=>2,’c’=>3,’d’=>4,’e’=>5); echo json_encode($arr); ?> 输出 {"a":1,"b":2,"c":3,"d":4,"e":5} 再看一个对象转换的例子: $obj->body = ‘another post’; $obj->id = 21; $obj->approved = true; $obj->favorite_count = 1; $obj->status = NULL; echo json_encode($obj); 输出 {  "body":"another post",  "id":21,  "approved":true,  "favorite_count":1,  "status"…

json_encode及json_decode用法说明 2017年8月1日
;
mysql 去除重复数据 2017年7月29日
;

$input = file_get_contents("php://input"); var_dump($input);

一次接收所有POST数据 2017年7月25日
;

<form action="<?php echo $_SERVER[‘PHP_SELF’];?>" method="post"> if(isset($_POST[‘submit’])) { $item=$_POST["item"]; echo $item; } action为空也可以

form表单提交到达当前页面 2017年7月25日