海运的博客

DNS服务器获取用户IP

发布时间:November 20, 2014 // 分类:DNS // No Comments

在做智能DNS的时候全长VIEW根据请求的IP返回不同的IP,请求的IP是递归DNS的IP,edns-client-subnet附加客户端IP。

PHP JSON解码GBK

发布时间:November 19, 2014 // 分类:PHP // No Comments

在用PHP JSON处理符合标准的GBK编码内容时会返回null,将内容从GBK转换为UTF8再处理正常:

$jsonp = mb_convert_encoding($jsonp, "gbk", "utf-8");
//或
$jsonp = iconv('gbk','utf-8',$jsonp)

跨语言/平台调用

发布时间:November 17, 2014 // 分类: // No Comments

本机跨语言调用可使用IPC通信,跨平台/网络可使用以下:
轻量级:
http://www.phprpc.org/zh_CN/
https://github.com/hprose
重量级:
https://thrift.apache.org/
https://github.com/google/protobuf/

Windows命令行设置永久环境变量

发布时间:November 17, 2014 // 分类:Windows // No Comments

在cmd窗口中set设置的环境变量为临时变量,如:

set PATH=%PATH%;D:\Program Files\

使用setx设置为永久环境变量:

setx PATH "%PATH%;D:\Program Files\"

PHP Curl使用Cookie

发布时间:November 16, 2014 // 分类:PHP // No Comments

发送或保存Cookie:

$ch = curl_init();
$url = 'http://www.haiyun.me/';
$cookiefile = '/tmp/cookie.txt';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile); //保存cookie到此文件
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile); //发送请求时从此文件获取cookie
curl_setopt($ch, CURLOPT_COOKIE, 'user=user; pass=pass'); //单独设置请求cookie
$content = curl_exec($ch);
curl_close($ch);

解析服务器设置的cookie并保存为变量:

$ch = curl_init('http://www.haiyun.me/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//输出返回head
curl_setopt($ch, CURLOPT_HEADER, 1);
$res = curl_exec($ch);
//切分内容和head
list($header, $body) = explode("\r\n\r\n", $res);
preg_match('/^Set-Cookie:\s*([^;]*)/mi', $header, $match);
parse_str($match[1], $cookies);
print_r($cookies);

从curl保存的cookie文件中解析cookie,文件格式见:http://www.cookiecentral.com/faq/#3.5
domain - The domain that created AND that can read the variable.
flag - A TRUE/FALSE value indicating if all machines within a given domain can access the variable. This value is set automatically by the browser, depending on the value you set for domain.
path - The path within the domain that the variable is valid for.
secure - A TRUE/FALSE value indicating if a secure connection with the domain is needed to access the variable.
expiration - The UNIX time that the variable will expire on. UNIX time is defined as the number of seconds since Jan 1, 1970 00:00:00 GMT.
name - The name of the variable.
value - The value of the variable.

<?php
   $lines = file('/tmp/404344922.cookie');
   foreach($lines as $line) {
      if($line[0] != '#' && substr_count($line, "\t") == 6) {
         $tokens = explode("\t", $line);
         $tokens = array_map('trim', $tokens);
         $cookies[$tokens[5]] = $tokens[6];
      }
   }
   print_r($cookies);

设置保存cookie至文件:

<?php
   $file = fopen("/tmp/reg.cookie", "a");
   $domain = '.haiyun.me';
   $flag = 'TRUE';
   $path = '/';
   $secure = 'FALSE';
   $expiration = 0;
   $key = 'key';
   $value = 'value';
   $cookie = "$domain\t$flag\t$path\t$secure\t$expiration\t$key\t$value\n";
   fwrite($file, $cookie);
   fclose($file);
分类
最新文章
最近回复
  • track: NAT 部分没处理,这块感觉有问题。
  • yu: 查到有用的资料很幸福!
  • boscotsang: 请问下服务器端如何控制权限让通过权限认证的客户端才能连接?现在这样只要有自编译的客户端程序都可...
  • yck932: 大侠,请问哪里有 tunnels 详细参考资料,谢谢
  • bubble: 现在linux 4.9以上的内核有个bbr的参数,用这个bbr比用锐速效果更好,可参考我的博文...
  • wang: openwrt 只有 tmp/etc/miniupnpd.conf 修改后又重置了,其他路径找...
  • wbq: 可以了 只是https透明代理如何做呢?
  • wbq: 你的这个配置需要浏览器设置代理ip+port, 现在假设不设置,只配置客户端网关为Nginx那...
  • wbq: 您好,想用Nginx做个透明代理,客户端机器配置下网关(即Nginx那台机器),客户端dns配...
  • ccc: 可以提供易调用openssl常用函数吗?