今天在網路上找尋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年7月10日 星期四
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>
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必須為檔案的完整徑名~~
$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必須為檔案的完整徑名~~
訂閱:
文章 (Atom)