1. php 如何獲取 客戶端http header
<?php
$dir=$HTTP_GET_VARS["dir"];//.......取得上個頁面傳遞來的路徑
$file=$HTTP_GET_VARS["file"];//.......取得傳遞來的文件名
$url=parse_url($HTTP_REFERER);/*......取得前一頁面的URL地址,並將其放入一個數組中*/
if($url[host]!=$HTTP_HOST){echo"要下載本軟體請到<ahref=http://www.df365.org>東方小屋</a>";exit;}/*檢查來源網站是不是自己的網站,如果不是,返回「要下載本……」*/
if(empty($dir))$dir="/";//......如果路徑名為空,則為指定根目錄
if(empty($file)){echo"未指定要下載的文件!";exit;}/*如果文件名為空,返回「未指定……」*/
$rootdir="文件存放的根目錄";//......你的下載路徑根目錄
$realurl=$rootdir.$dir;//.......取得你的下載目錄
chdir($realurl);//......將當前目錄轉到下載目錄中
if(!file_exists($file)){echo"對不起,此鏈接已經失效,請在下載頁面上向我們報告,謝謝!";exit;}//......測試文件是否存在
$filename=$file;
//發送文件頭信息
header("Cache-control:private");//fixforIE
header("Content-Type:application/octet-stream");
header("Content-Length:".filesize($filename));
header("Content-Disposition:attachment;filename=$filename");
$fp=fopen($filename,'r');//以讀取方式打開指定文件
fpassthru($fp);//**CORRECT**以二進制方式讀取文件
fclose($fp);//關閉文件
?>
2. 難,求高手,php怎麼獲取httprequest和httpresponse信息
HttpResponse輸出文件:
Response.Clear();
Response.ContentType = "application/octet-stream";
//通知瀏覽器下載文件而不是打開
Response.AddHeader("Content-Disposition", "attachment; filename=aaa.csv");
var sw = new StreamWriter(response.OutputStream);
//cc.Write<CustomerData>(list, sw, csvFileDesc);
sw.Flush();
sw.Close();
HttpRequest獲取文件:
var sr = new StreamReader(request.InputStream);
3. PHP HTTP 認證實例詳解
HP來實現HTTP的強制認證是十分簡單的,只需簡單的幾行代碼就可以實現,下面我們來看一個例子,然後結合這里例子我向大家詳細介紹一下PHP實現HTTP認證。
<?php
if(!isset($_SERVER['PHP_AUTH_USER']))
{
header('WWW-Authenticate:
Basic
realm="系統名稱"');
header('HTTP/1.0
401
Unauthorized');
echo
'未通過HTTP認證.';
exit;
}
else
{
echo
'認證通過.';
echo
'用戶名:
'.$_SERVER['PHP_AUTH_USER']."\n";
echo
'密碼:
'.$_SERVER['PHP_AUTH_PW']."\n";
}
?>
1.實現說明
怎麼樣,看到上面的代碼了吧,就這么幾行添加到你的程序頁面上就可以實現了.
它是通過利用header()函數向客戶端瀏覽器發送」Authentication
Required」信息,強制其彈出一個用戶名/密碼輸入窗口,當用戶輸入用戶名和密碼後,包含有URL的PHP腳本將會加上預定義變數PHP_AUTH_USER,
PHP_AUTH_PW和AUTH_TYPE然後再次調用,這三個變數分別表示用戶名,密碼和認證類型(從PHP5.0.1起開始支持」Basic」和」Digest」兩種認證方式),它們被保存在$_SERVER(從HP>>4.1.0起有效)或$HTTP_SERVER_VARS(從PHP3起有效)數組中具體應用時,我們可以把驗證的幾行代碼寫成函數,只要判斷到用戶變數不存在或驗證不正確就一直執行該函數並彈出窗口,而且還可以設置錯誤登錄幾次就不允許該用戶訪問,具體的使用大家使勁的發散思考吧.
2.注意事項:
1.這段代碼必須放到程序的開始,且在其開始執行之前不能有任何輸出(若有輸出則需要使用輸出緩沖函數才行).
2.PHP的HTTP認證機制僅在PHP以Apache模塊方式運行時才有效,這個容易理解,它本身是HTTP強制認證,肯定是不適合於CGI版本,不能在命令行下執行的.
3.header發送標頭代碼時請小心.為了對所有的客戶端保證兼容性,關鍵字」Basic」的第一個字母必須大寫為」B」,分界字元串必須用雙引號引用(不能是單引號);在HTTP/1.0和401之間必須有且僅有一個空格.
4.在上面列子中,僅輸出了用戶名和密碼,而在實際系統中則可按照登錄驗證流程進行與資料庫或其他方式進行判斷和驗證.
5.從PHP4.3.0起,為防止有人通過編寫腳本來從頁面上獲取密碼,當外部認證對特定頁面有效,並且安全模式被開啟時,PHP_AUTH變數將不會被設置.可以用REMOTE_USER來辨別外部認證的用戶,用AuthType指令來判斷外部認證機制是否有效.
6.要想讓HTTP認證能夠在IIS下工作,PHP配置選項cgi.rfc2616_headers必須設置為0(默認值).
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
4. php如何獲得http post的數據
PHP獲取POST數據的幾種方法:
方法1、最常見的方法是:$_POST['fieldname'];
說明:只能接收Content-Type:
application/x-www-form-urlencoded提交的數據。
方法2、file_get_contents("php://input");
說明:
允許讀取
POST
的原始數據。
和
$HTTP_RAW_POST_DATA
比起來,它給內存帶來的壓力較小,並且不需要任何特殊的
php.ini
設置。
php://input
不能用於
enctype="multipart/form-data"。
方法3、$GLOBALS['HTTP_RAW_POST_DATA'];
說明:
總是產生
$HTTP_RAW_POST_DATA
變數包含有原始的
POST
數據。
此變數僅在碰到未識別
MIME
類型的數據時產生。
5. php怎麼響應客戶端發送http請求
http請求有get,post。
php發送http請求有三種方式[我所知道的有三種,有其他的告訴我]。
1. file_get_contents();詳情見:http://www.jb51.net/article/41833.htm
2. curl發送請求。
3. fsocket發送。
下面說使用curl發送。
首先環境需要配置好curl組件。
在windows中讓php支持curl比較簡單:
在php.ini中將extension=php_curl.dll前面的分號去掉,
有人說需要將php根目錄的libeay32.dll和ssleay32.dll需要拷貝到系統目錄下去。我實驗不拷貝也可以。
在linux中,如果使用源碼安裝,需要在make 之前,./configure --with-curl=path,
其中,path是你的 libcurl庫的位置,比如你安裝libcurl庫之後,
path可能就是/usr/local/,libcurl可以是靜態庫,也可以是動態庫。
注意libcurl庫configure的時候,可以將一些不需要的功能去掉,
比如ssl , ldap等。在php configure的時候,會去檢查libcurl中某些功能是否被開啟,進而去相應地調整生成的php。