程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP模擬表單POST數據

PHP模擬表單POST數據

編輯:關於PHP編程

新浪微博提供的API為JSON格式,我們寫一個PHP腳本將其轉化成數組並且像表單一樣發布到我們的網站。這就需要使用PHP去模擬表單的POST動作,使用CURL庫可以很方便地實現這個需求。

首先是將JSON轉化成數組。

		$count = 15;
		$url = "https://api.weibo.com/2/statuses/home_timeline.json?source=bkjia&count=".$count."&page=1";
		echo $url.'<br />';
		
		$curl = curl_init();
		curl_setopt($curl, CURLOPT_URL, $url);
		// 設置是否顯示header信息 0是不顯示,1是顯示  默認為0
		//curl_setopt($curl, CURLOPT_HEADER, 0);
		// 設置cURL 參數,要求結果保存到字符串中還是輸出到屏幕上。0顯示在屏幕上,1不顯示在屏幕上,默認為0
		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
		// 要驗證的用戶名密碼
		curl_setopt($curl, CURLOPT_USERPWD, "[email protected]:2639996");
		$data = curl_exec($curl);
		curl_close($curl);
		
		$result = json_decode($data, true);
		
		$post_data = array();
		for($i = 0; $i < $count; $i++)
		{
			$post_data['mid'][] = $result['statuses'][$i]['mid'];	// 微博id
			$post_data['title'][] = htmlspecialchars( $result['statuses'][$i]['user']['name'] . ':' . $this -> sysSubStr($result['statuses'][$i]['text'], 50, true) );	// 微博標題
			$post_data['editor'][] = $result['statuses'][$i]['user']['name'];	// 微博作者名
			$post_data['userid'][] = $result['statuses'][$i]['user']['id'];	// 微博作者id
			$post_data['logo'][] = $result['statuses'][$i]['user']['avatar_large'];	// 微博作者頭像
			$post_data['part'][] = '官方微博';	// 微博出處
			if(isset($result['statuses'][$i]['original_pic']))
			{
				// 微博原圖
				$post_data['picture'][$i] = $result['statuses'][$i]['original_pic'];
				// 微博縮略圖
				$post_data['thumbnail'][$i] = $result['statuses'][$i]['thumbnail_pic'];
				$post_data['text'][] = $result['statuses'][$i]['text'].'<img src="'.$result['statuses'][$i]['thumbnail_pic'].'" />';	// 微博內容
			}
			else
			{
				$post_data['text'][] = $result['statuses'][$i]['text'];	// 微博內容
			}
		}

然後將數組經過URL編碼編程符合表單POST的字符串數據,再使用CURL庫將其POST出去。

		for($j = 0; $j < $count; $j++)
		{
			$o="";
			foreach($post_data as $k=>$v)
			{
				$o.= "$k=".urlencode($post_data[$k][$j])."&";
			}
			$post_str = substr($o,0,-1);

			if(file_get_contents($mid_file) == $post_data['mid'][$j])
			{
				break;
			}
			else
			{
				echo urldecode($post_str).'<br />';
				
				$ch = curl_init();
				curl_setopt($ch, CURLOPT_POST, 1);
				curl_setopt($ch, CURLOPT_HEADER, 0);
				curl_setopt($ch, CURLOPT_URL, 'http://x.zhnews.net/post.data.php?db=weibosina');
				curl_setopt($ch, CURLOPT_POSTFIELDS, $post_str);
				$result = curl_exec($ch);
				if(curl_errno($ch)){	//出錯則顯示錯誤信息
					print curl_error($ch);
				}
			}
		}

再來一個簡單的例子:

$post_data = array();
$post_data['clientname'] = "test08";
$post_data['clientpasswd'] = "test08";
$post_data['submit'] = "submit";
$url='http://xxx.xxx.xxx.xx/xx/xxx/top.php';
$o="";
foreach ($post_data as $k=>$v)
{
    $o.= "$k=".urlencode($v)."&";
}
$post_data=substr($o,0,-1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL,$url);
//為了支持cookie
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$result = curl_exec($ch);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved