存档

2013年3月 的存档

PHP获取各大视频网站页面中的Flash播放地址

2013年3月24日 5 条评论

目前已支持新浪播客、优酷网、土豆网、酷6网、搜狐视频、56网、奇艺网、凤凰网等视频网站的视频播放页链接。
PHP API调用实例:http://fengdingbo.com/tools/web_video.php?url=视频页面地址[......]

Read more

分类: PHP 标签: ,

JS自动获取Form表单数据并转换成键值对

2013年3月21日 没有评论

Jquery的$.ajax方法可以实现ajax调用,要设置url,type,data参数等。
如果要提交现有Form需要写很多代码,何不直接将Form的所有信息直接转移到ajax中呢。

<form id="Form1" action="action.php" method="post" >
名称:<input name="name" type="text" /><br />
密码:<input name="password" type="password" /><br />
<input type="submit" value="提 交" />
</form>

当提交后,会跳转到action.[......]

Read more

分类: JavaScript 标签:

MongoDB复杂表结构的操作实例

2013年3月16日 没有评论
// 初始化表结构
db.userFriends.insert({ 
	"_id" : ObjectId("51415a161d41c8274f74dd85"),
	"userId" : 10, 
	"set" : [
 		// 此节点文档为组
		{
			"setName" : "我的好友", 
			"time" : Date(),
			"setUSER" : [ 
				// 此节点文档为好友
				{ 
					"userId" : 6, 
					"userNickname" : "FengDingbo" 
				},
				{ 
					"userId" : 7, 
					"userNickname" : "Larry" 
				} 
			]
		}, 
		{ 
			"setName" : "我的同事", 
			"time" : Date(),
			"setUSER" : [ 
				{ 
					"userId" : 3, 
					"userNickname" : "Qiufeng" 
				}, 
				{ 
					"userId" : 2, 
					"userNickname" : "Bobo" 
				} 
			]
		}
	]
});
// 删除组
db.userFriends.update(
	{userId:10},
	{
		$pull:{
			"set":{setName:"我的同事"}
		}
	}
)
// 添加组
db.userFriends.update(
	{userId:10},
	{
		$push:{
			"set":{"setName" : "我的同事","setUSER" : [ ],"time" : Date()}
		}
	}
)

32eeedfbb96238b45b0d4194985bca600[......]

Read more

分类: MongoDB 标签:

PHP flock文件锁定 独占操作测试

2013年3月15日 没有评论

flock – 轻便的咨询文件锁定

flock()函数原型

bool flock ( int handle, int operation [, int &wouldblock] )

PHP 支持以咨询方式(也就是说所有访问程序必须使用同一方式锁定, 否则它不会工作)锁定全部[......]

Read more

分类: PHP 标签: ,

PHP CURL模拟登录163邮箱抓取好友列表

2013年3月9日 1 条评论
<?php
$username	="username@163.com";
$password	="password";
$robot = new web_robot();
// 获取163联系人
$address_list = $robot->get_address_list($username, $password);
print_r($address_list);
 
/**
 * 模拟登录163邮箱抓取好友列表
 * @copyright (c) 2013
 * @author qiufeng <fengdingbo@gmail.com>
 * @link	http://www.fengdingbo.com
 * @version 1.0
 */
class web_robot{
 
	/**
	 * 存放cookie信息的临时文件名 
	 * @var string
	 */
	public $cookie_tmp_file;
 
	public function __construct()
	{
		$this->cookie_tmp_file = tempnam( ini_get( "upload_tmp_dir" ), "cookie" );
	}
 
	public function __destruct()
	{
		// 删除临时COOKIE
		unlink($this->cookie_tmp_file);
	}
 
	/**
	 * 获取联系人列表
	 * || ============================
	 * || 返回值说明:
	 * || ----------------------------
	 * || int data type:
	 * || 201:用户名或密码不正确.
	 * || 202:服务器异常,请稍后再试.
	 * || 203:没有找到邮箱联系人.
	 * || 
	 * || array data type:
	 * || 获取联系人列表成功.
	 * || ============================
	 * @param string $username
	 * @param string $password
	 * @return mixed
	 */
	public function get_address_list($username, $password)
	{
		if ( ! $this->login($username, $password))
		{
			return 201;
		}
 
		$header = $this->_getheader($username);
 
		if ( ! $header['sid'])
		{
			return 202;
		}
 
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, "http://" . $header['host'] . "/js4/s?sid=" . $header['sid'] . "&func=global:sequential");
		curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie_tmp_file);
		curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept-Language: zh-cn', 'Connection: Keep-Alive', 'Content-Type: application/xml; charset=UTF-8'));
		$str = "<?xml version=\"1.0\"?><object><array name=\"items\"><object><string name=\"func\">pab:searchContacts</string>" .
				"<object name=\"var\"><array name=\"order\"><object><string name=\"field\">FN</string><boolean name=\"ignoreCase\">true</boolean></object>" .
				"</array></object></object><object><string name=\"func\">user:getSignatures</string></object>" .
				"<object><string name=\"func\">pab:getAllGroups</string></object></array></object>";
 
		curl_setopt($ch, CURLOPT_POST, 1);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $str);
		curl_setopt($ch, CURLOPT_TIMEOUT, 60);
		ob_start();
		curl_exec($ch);
		$data = ob_get_clean();
 
		// 把字符转转化为SimpleXMLElement Object
		$XML = (array)simplexml_load_string($data)->array->object[0]->array;
		if (array_key_exists('object', $XML))
		{
			foreach($XML['object'] as $v)
			{
				$array_format = (array)$v;
				$list[] = $array_format['string'];
			}
 
			return $list;
		}
 
		return 203; }
 
	/**
	 * 登陆163邮箱
	 * @param string $username
	 * @param string $password
	 * @return boolean
	 */
	private function login($username, $password)
	{
		// 登陆163,保存cookie
		$cookies = array();
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 
		curl_setopt($ch, CURLOPT_URL, "http://reg.163.com/logins.jsp");
		curl_setopt($ch, CURLOPT_POST, 1);
		curl_setopt($ch, CURLOPT_POSTFIELDS, "username=".$username."&password=".$password."&type=1");
 
		curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookie_tmp_file);
		curl_setopt($ch,CURLOPT_HEADER,1);
		curl_setopt($ch, CURLOPT_TIMEOUT, 30);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //文件流形式返回
		$str = curl_exec($ch);
		curl_close($ch);
 
		preg_match('/(window.location.replace\(\"(.*)\"\))/i', $str,$content);
 
		if (isset($content) && is_array($content) && array_key_exists(2, $content))
		{
			ob_start();
			$ch = curl_init($content[2]);
			curl_setopt($ch, CURLOPT_TIMEOUT, 30);
			curl_setopt($ch,CURLOPT_COOKIEFILE, $this->cookie_tmp_file);
			$str2 = curl_exec($ch);
			curl_close($ch);
			$content = ob_get_clean();
 
			// 校验是否登陆成功
			if (strpos($content, "安全退出") && strpos($content, $username))
			{
				return TRUE;
			}
		}
 
		return FALSE;
	}
 
	/**
	 * 获取头部信息
	 * @param string $username
	 * @return array
	 */
	private function _getheader($username)
	{
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, "http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight=1&verifycookie=1&language=-1&style=-1&username=" . $username);
		curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie_tmp_file);  //当前使用的cookie
		curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookie_tmp_file);   //服务器返回的新cookie
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_HEADER, true);
		curl_setopt($ch, CURLOPT_NOBODY, true);
		$content = curl_exec($ch);
		curl_close($ch);
 
		preg_match_all('/Location:\s*(.*?)\r\n/i', $content, $regs);
		$refer = $regs[1][0];
		preg_match_all('/http\:\/\/(.*?)\//i', $refer, $regs);
		$host = $regs[1][0];
		preg_match_all("/sid=(.*)/i", $refer, $regs);
		$sid = $regs[1][0];
 
		return array('sid' => $sid, 'refer' => $refer, 'host' => $host);
	}
}
?>
分类: PHP 标签: ,

MongoDB数据操作之删

2013年3月8日 没有评论

remove()函数原型

db.collection.remove( <query>, <justOne> )

例子

// 删除所有数据
db.test.remove()
// 删除_id大于10的所有数据
db.test.remove(
	{_id:{$gt:10}}
)

[......]

Read more

分类: MongoDB 标签: