2014年7月10日 星期四

PHP不透過curl來達到使用POST讀取網頁或CGI

今天在網路上找尋PHP不透過curl來達到使用POST讀取網頁或CGI的方式:
找到以下資訊確實可用:
(原文出處:http://wezfurlong.org/blog/2006/nov/http-post-from-php-without-curl/)
函式宣告:
function do_post_request($url, $data, $optional_headers = null)
{
  $params = array('http' => array(
              'method' => 'POST',
              'content' => $data
            ));
  if ($optional_headers !== null) {
    $params['http']['header'] = $optional_headers;
  }
  $ctx = stream_context_create($params);
  $fp = @fopen($url, 'rb', false, $ctx);
  if (!$fp) {
    throw new Exception("Problem with $url, $php_errormsg");
  }
  $response = @stream_get_contents($fp);
  if ($response === false) {
    throw new Exception("Problem reading data from $url, $php_errormsg");
  }
  return $response;
}
使用方式:
echo do_post_request("http://192.168.172.203/cgi-bin/ed3.cgi","page_charset=big5&userid=admin&userpwd=123456&pagename=26&mainmenu=69&page=0");

2014年6月2日 星期一

form一次選擇多個檔案+php上傳範例

<?
for($i = 0 ; $i < count($_FILES["files"]["name"]) ; $i++) { echo $_FILES["files"]["name"][$i]."</br>"; } ?> <form action='' method='post' enctype='multipart/form-data'> <input name="files[]" type="file" multiple="multiple"/> <input type='submit' value='test'> </form>

2014年3月21日 星期五

PHP下載檔案的正確寫法

<?
$file = $_GET["file"];
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=".basename($file));
header("Content-Transfer-Encoding: binary");
$fd = fopen($file, "rb");  //大檔案下載的解決方法~readfile($file)會出問題~
if($fd)
{
    ob_end_clean();
    fpassthru($fd);
}
fclose($fd);
?>

將以上程式儲存成download.php
然後要下載的聯結就以如下方式呼叫:
download.php?file=XXXX
XXXX必須為檔案的完整徑名~~