;

首先到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数据库 10 天前
;

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文件的相关问题 20 天前
;

服务器通过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的运行机制 26 天前
;

传统的方案是,登录页和主页是单独的两个页面,登录成功后服务器生成用户信息对应的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’ 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,…权限n被all privileges或者all代替,表示赋予用户全部权限。 当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。 用户地址可以是localhost,也可以是ip地址…

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日
;

步骤一:下载bigdump.php(http://www.ozerov.de/bigdump/usage/) 步骤二:通过编辑器bigdump.php配置数据库连接信息 步骤三:将sql文件一起放于bigdump.php所在的文件夹或子目录内 步骤四:通过浏览器访问bigdump.php

通过BigDump导入超大MySQL数据文件 2017年7月10日
;

<?php $a= array(‘张三’,’李四’,’王五’); $b= array (’23’,’24’,’25’); $c= array (‘北京’,’上海’,’广州’ ); foreach($a as $key=>$val){ $d[$key][‘姓名’]=$a[$key]; $d[$key][‘年龄’]=$b[$key]; $d[$key][‘城市’]=$c[$key]; } var_dump($d); ?>

php多个一维数组合并成二维数组 2017年6月30日
;

$postdata = http_build_query( array( ‘var1’ => ‘some content’, ‘var2’ => ‘doh’ ) ); $opts = array(‘http’ => array( ‘method’ => ‘POST’, ‘header’ => ‘Content-type: application/x-www-form-urlencoded’, ‘content’ => $postdata ) ); $context = stream_context_create($opts); $result = file_get_contents(‘http://example.com/submit.php’, false, $context);

file_get_contents()通过post获取数据 2017年5月19日
;

Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员。 Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员。如果检测结果为是,该元素不一定在集合中;但如果检测结果为否,该元素一定不在集合中。因此Bloom filter具有100%的召回率。这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况,可见 Bloom filter 是牺牲了正确率和时间以节省空间。 如需要判断一个元素是不是在一个集合中,我们通常做法是把所有元素保存下来,然后通过比较知道它是不是在集合内,链表、树都是基于这种思路,当集合内元素个数的变大,我们需要的空间和时间都线性变大,检索速度也越来越慢。 Bloom filter 采用的是哈希函数的方法,将一个元素映射到一个 m 长度的阵列上的一个点,当这个点是 1 时,那么这个元素在集合内,反之则不在集合内。这个方法的缺点就是当检测的元素很多的时候可能有冲突,解决方法就是使用 k 个哈希 函数对应 k 个点,如果所有点都是 1 的话,那么元素在集合内,如果有 0 的话…

bloom filter 2017年3月17日

一:配置path 二:cmd执行: php  d:/phpstudy/www/test.php

windows下的CLI模式下运行php文件 2017年1月6日
;

<?php $arr = array (‘a’=>1,’b’=>2,’c’=>3,’d’=>4,’e’=>5); echo json_encode($arr); ?>

php 输出 json 数据 2016年8月3日
;
echo,print,print_r,v_dump 2016年7月5日
;

文件路径:/etc/php5/apache2/php.ini 修改:display_errors = On 重启 sudo service apache2 restart

php 开启错误提示 2016年7月5日
;

判断是否安装: var_dump(extension_loaded(‘curl’)); 安装步骤: sudo apt-get install php5-curl sudo service apache2 restart (此命令经常失败,直接重启整个服务器) 安装过程中会自动写入配置文件,所有不用再修改配置 如果有问题尝试安装其他包: sudo apt-get install curl libcurl3 libcurl3-dev;

curl判断是否安装及安装 2016年7月5日