導航:首頁 > 編程語言 > php實例大全

php實例大全

發布時間:2023-08-30 17:25:03

1. php實現模擬post請求用法實例

本文實例講述了php實現模擬post請求的方法。分享給大家供大家參考。具體如下:
class
Request{
public
static
function
post($url,
$post_data
=
'',
$timeout
=
5){//curl
$ch
=
curl_init();
curl_setopt
($ch,
CURLOPT_URL,
$url);
curl_setopt
($ch,
CURLOPT_POST,
1);
if($post_data
!=
''){
curl_setopt($ch,
CURLOPT_POSTFIELDS,
$post_data);
}
curl_setopt
($ch,
CURLOPT_RETURNTRANSFER,
1);
curl_setopt
($ch,
CURLOPT_CONNECTTIMEOUT,
$timeout);
curl_setopt($ch,
CURLOPT_HEADER,
false);
$file_contents
=
curl_exec($ch);
curl_close($ch);
return
$file_contents;
}
public
static
function
post2($url,
$data=array()){//file_get_content
$postdata
=
http_build_query(
$data
);
$opts
=
array('http'
=>
array(
'method'
=>
'POST',
'header'
=>
'Content-type:
application/x-www-form-urlencoded',
'content'
=>
$postdata
)
);
$context
=
stream_context_create($opts);
$result
=
file_get_contents($url,
false,
$context);
return
$result;
}
public
static
function
post3($host,$path,$query,$others=''){//fsocket
$post="POST
$path
HTTP/1.1\r\nHost:
$host\r\n";
$post.="Content-type:
application/x-www-form-";
$post.="urlencoded\r\n${others}";
$post.="User-Agent:
Mozilla
4.0\r\nContent-length:
";
$post.=strlen($query)."\r\nConnection:
close\r\n\r\n$query";
$h=fsockopen($host,80);
fwrite($h,$post);
for($a=0,$r='';!$a;){
$b=fread($h,8192);
$r.=$b;
$a=(($b=='')?1:0);
}
fclose($h);
return
$r;
}
}
$url='http://******/con/Inter.php';
$data=Request::post($url,array('api'=>'tag_list'));
$data2=Request::post2($url,array('api'=>'tag_list'));
echo
$data;
希望本文所述對大家的php程序設計有所幫助。

2. php幾種排序演算法實例詳解

四種排序演算法的PHP實現:
1)插入排序(InsertionSort)的基本思想是:
每次將一個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子文件中的適當位置,直到全部記錄插入完成為止。

2)選擇排序(SelectionSort)的基本思想是:
每一趟從待排序的記錄中選出關鍵字最小的記錄,順序放在已排好序的子文件的最後,直到全部記錄排序完畢。

3)冒泡排序的基本思想是:
兩兩比較待排序記錄的關鍵字,發現兩個記錄的次序相反時即進行交換,直到沒有反序的記錄為止。

4)快速排序實質上和冒泡排序一樣,都是屬於交換排序的一種應用。所以基本思想和上面的冒泡排序是一樣的。

1.sort.php文件如下:

<?php
classSort{
private$arr=array();
private$sort='insert';
private$marker='_sort';
private$debug=TRUE;
/**
*構造函數
*
*@paramarray例如:
$config=array(
'arr'=>array(22,3,41,18),//需要排序的數組值
'sort'=>'insert',//可能值:insert,select,bubble,quick
'debug'=>TRUE//可能值:TRUE,FALSE
)
*/
publicfunctionconstruct($config=array()){
if(count($config)>0){
$this->_init($config);
}
}
/**
*獲取排序結果
*/
publicfunctiondisplay(){
return$this->arr;
}
/**
*初始化
*
*@paramarray
*@returnbool
*/
privatefunction_init($config=array()){
//參數判斷
if(!is_array($config)ORcount($config)==0){
if($this->debug===TRUE){
$this->_log("sort_init_param_invaild");
}
returnFALSE;
}
//初始化成員變數
foreach($configas$key=>$val){
if(isset($this->$key)){
$this->$key=$val;
}
}
//調用相應的成員方法完成排序
$method=$this->sort.$this->marker;
if(!method_exists($this,$method)){
if($this->debug===TRUE){
$this->_log("sort_method_invaild");
}
returnFALSE;
}
if(FALSE===($this->arr=$this->$method($this->arr)))
returnFALSE;
returnTRUE;
}
/**
*插入排序
*
*@paramarray
*@returnbool
*/
privatefunctioninsert_sort($arr){
//參數判斷
if(!is_array($arr)ORcount($arr)==0){
if($this->debug===TRUE){
$this->_log("sort_array(insert)_invaild");
}
returnFALSE;
}
//具體實現
$count=count($arr);
for($i=1;$i<$count;$i++){
$tmp=$arr[$i];
for($j=$i-1;$j>=0;$j--){
if($arr[$j]>$tmp){
$arr[$j+1]=$arr[$j];
$arr[$j]=$tmp;
}
}
}
return$arr;
}
/**
*選擇排序
*
*@paramarray
*@returnbool
*/
privatefunctionselect_sort($arr){
//參數判斷
if(!is_array($arr)ORcount($arr)==0){
if($this->debug===TRUE){
$this->_log("sort_array(select)_invaild");
}
returnFALSE;
}
//具體實現
$count=count($arr);
for($i=0;$i<$count-1;$i++){
$min=$i;
for($j=$i+1;$j<$count;$j++){
if($arr[$min]>$arr[$j])$min=$j;
}
if($min!=$i){
$tmp=$arr[$min];
$arr[$min]=$arr[$i];
$arr[$i]=$tmp;
}
}
return$arr;
}
/**
*冒泡排序
*
*@paramarray
*@returnbool
*/
privatefunctionbubble_sort($arr){
//參數判斷
if(!is_array($arr)ORcount($arr)==0){
if($this->debug===TRUE){
$this->_log("sort_array(bubble)_invaild");
}
returnFALSE;
}
//具體實現
$count=count($arr);
for($i=0;$i<$count;$i++){
for($j=$count-1;$j>$i;$j--){
if($arr[$j]<$arr[$j-1]){
$tmp=$arr[$j];
$arr[$j]=$arr[$j-1];
$arr[$j-1]=$tmp;
}
}
}
return$arr;
}
/**
*快速排序
*@bywww.5wx.org
*@paramarray
*@returnbool
*/
privatefunctionquick_sort($arr){
//具體實現
if(count($arr)<=1)return$arr;
$key=$arr[0];
$left_arr=array();
$right_arr=array();
for($i=1;$i<count($arr);$i++){
if($arr[$i]<=$key)
$left_arr[]=$arr[$i];
else
$right_arr[]=$arr[$i];
}
$left_arr=$this->quick_sort($left_arr);
$right_arr=$this->quick_sort($right_arr);

returnarray_merge($left_arr,array($key),$right_arr);
}
/**
*日誌記錄
*/
privatefunction_log($msg){
$msg='date['.date('Y-m-dH:i:s').']'.$msg.' ';
return@file_put_contents('sort_err.log',$msg,FILE_APPEND);
}
}
/*Endoffilesort.php*/
/*Locationhtdocs/sort.php*/
2.sort_demo.php文件如下:

<?php
require_once('sort.php');
$config=array(
'arr'=>array(23,22,41,18,20,12,200303,2200,1192),
//需要排序的數組值
'sort'=>'select',
//可能值:insert,select,bubble,quick
'debug'=>TRUE
//可能值:TRUE,FALSE
);
$sort=newSort($config);
//var_mp($config['arr']);
var_mp($sort->display());
/*Endofphp*/

3. PHP8新特性示例

命名參數 :就是具名參數,在調用函數的時候,可以指定參數名稱,指定參數名稱後,參數順序可以不安裝原函數參數順序傳

示例:

註解 :註解可以將類定義成一個一個低耦合,高內聚的元數據類。在使用的時候通過註解靈活引入,反射註解類實例的時候達到調用的目的。註解類只有在被實例化的時候才會調用

示例

示例:

解釋 :在不確定參數類型的場景下,可以使用.

示例:

解釋:和 switch case 差不多,但是嚴格要求 === 匹配

示例:

解釋:簡化了 is_null 判斷

示例:

考慮到 PHP 動態語言類型的特性,現在很多情況下,聯合類型都是很有用的。聯合類型是兩個或者多個類型的集合,表示可以使用其中任何一個類型。

請注意,聯合類型中不包含 void ,因為 void 表示的含義是 「根本沒有返回值」。 另外,可以使用 |null 或者現有的 ? 表示法來表示包含 nullable 的聯合體 :

JIT — just in time — 編譯器雖然不總是在 Web 請求的上下文中,但是有望顯著地提高性能。目前還沒有完成任何准確的基準測試,但是肯定會到來。

屬性在其他語言中通常被稱為 註解 ,提供一種在無需解析文檔塊的情況下將元數據添加到類中的方法。

盡管已經可以返回 self,但是 static 直到 PHP 8 才是有效地返回類型 。考慮到 PHP 具有動態類型的性質,此功能對於許多開發人員將非常有用。

有人可能將其稱為必要的邪惡: mixed 類型讓許多人感覺十分混亂。然而,有一個很好的論據支持去實現它:缺少類型在 PHP 中會導致很多情況:

因為上述原因,添加 mixed 類型是一件很棒的事兒。 mixed 本身代表下列類型中的任一類型:

請注意,mixed 不僅僅可以用來作為返回類型,還可以用作參數和屬性類型。因為 mixed 類型已經包括了 null,因此 mixed 類型不可為空。下面的代碼會觸發致命錯誤:

已上是整理出來的新特性的變化,後續會繼續整理,PHP8的發布會讓PHP更上一層樓,相信PHP是世界上最好的語言!

4. PHP典型模塊與項目實戰大全:PHP文件下載的原理及實現

PHP文件下載的原理及實現

通常文件下載過程是十分簡單的 建立一個鏈接指向到目標文件就可以了 例如下面的鏈接

<a href=// xxx /xxx rar>點擊下載文件</a>

但是 實際情況可能會稍復雜 比如需要用戶填寫完整注冊信息後才可以下載該文件 這時最先想到的是使用Redirect的方式 下面介紹兩種方式

( )用Redirect方式 先檢查表格是否已經填寫完畢和完整 然後將鏈接指到該文件 這樣用戶就可以下載 請看下面的示例代碼

<?php

/*文件功能 檢查變數form是否完整*/

if($form){

//重新定向瀏覽器指向

Header( Location: // // xxx /xxx rar )

exit;

}

?>

( )根據下載文件的序號來查找 鏈接的形式如下

<a href= // xxx /download php?id= >點擊下載文件</a>

上面的鏈接使用ID方式接收要下載文件的編號 然後再用Redirect的方式連接到真實的文件鏈接

以上這兩種方法雖然實現了文件的下載功能 但是缺點是直接暴露了文件所屬的路徑 而且沒有防盜鏈的功能 所以上面的方式是簡單直接但存在安全隱患的文件下載方式 在PHP中 通常是利用header()函數和fread()函數來實現安全的文件下載

例如 需要下載的是一個文件名為xxx rar的文件 首先創建文件是download php的PHP文件 通過前面的例子很容易通過文件的ID號從資料庫中得到待下載文件的真實位置 在獲得文件的真實存儲位置後 可缺培悉以通過header()函數的location參數直接重定向到這個文件 但是這樣仍然是不安全的 因為某些下載軟體還是可以通過重定向分析獲得該文件的位置信息 因此需要用另外一種方法 就是PHP的文件處理API函數 它是通過fread()函數把文件直接輸出到瀏覽器提示用戶下載 這樣所有的處理都是在伺服器端完成的 因此用戶就無法獲得文件具體存儲位置信息的 示例代碼如下

<?

$file_name = xxx rar ; //下載文件名

$file_dir = /up/ ;中纖 //下載文件存放目錄

//檢查文件是否存在

if (! file_exists ( $file_dir $file_name )) {

echo 文件找不到 ;

exit ()

} else {

//打開文件

$file = fopen ( $file_dir $file_name r )

//輸入文件標簽

Header ( Content type: application/octet stream )

Header ( Accept Ranges: bytes )

Header ( Accept Length: filesize ( $file_dir $file_name ) )

Header ( Content Disposition: attachment; filename= $file_name )

//輸出文件內容

//讀取文件內容並直接輸出到瀏覽器

echo fread ( $file filesize ( $file_dir $file_name ) )

fclose ( $file )

exit ()

}

?>

【代碼解讀】

上述代碼中 程序發送Header信息是用來告訴Apache和瀏覽器下載文件的相關信息的 content type的含義代表文件MIME類型是文件流格式 如果在Apache配置裡面把文件的MIME類型設為application/octet stream(如add application/octet stream xxx rar) 那麼瀏覽器(客戶端伏乎)就會知道 這是一個文件流格式的文件並提示用戶下載 Accept Ranges是一個響應頭標 它允許伺服器指明將在給定的偏移和長度處 為資源組成部分的接受請求 該頭標的值被理解為請求范圍的度量單位 Content Length是指定包含於請求或響應中數據的位元組長度 例如 Content Length: Content Disposition:attachment是用來告訴瀏覽器 文件是可以當做附件被下載 下載後的文件名稱為$file_name該變數的值

運行download php文件 效果如圖 所示 從圖中可以看到文件按照預想的方式被提示下載 單擊 保存 按鈕將文件保存在本地

圖 PHP文件安全下載

返回目錄 PHP典型模塊與項目實戰大全

編輯推薦

Java Web開發詳解

PHP Web開發學習實錄

lishixin/Article/program/PHP/201311/21519

5. PHP典型模塊與項目實戰大全:PHP能做什麼

PHP能做什麼

PHP初學者的一個主要疑問就是 PHP能用來做什麼?按照PHP手冊上的經典解釋就是 PHP能做任何事!

下面為讀者具體的介紹PHP主要的應用領域 PHP是運行於服務端的腳本程序 因此可以用其完成任何CGI(Common Gateway Interface)程序能夠完成的工作 CGI工作流程如圖 所示 CGI主要用於完成在B/S(Browser/Server)模式下的應用開發 例如 動態頁面輸出 獲取表單數據 創建或接收Session/Cookies

圖 CGI工作流程示意圖

PHP主要應用於以下 個領域

服務端腳本

伺服器腳本運行模式需要具備 個條件 PHP解析器(CGI或者伺服器模塊) Web伺服器 Web瀏覽器

具體執行流程 首先運行Web伺服器 然後安裝並配置PHP 最後可以用Web瀏覽器訪問PHP程序的輸出 即瀏覽服務端的PHP頁面(或數據輸出)

命令行腳本

通過命令行模式運行PHP腳本 這種模式下不需要伺服器的支持或者依賴瀏覽器的觸發 在命令行腳本模式下僅需要PHP解析器來執行 通常這種方法被用在Windows和Linux平台下做日常運行腳本使用 如某些守護程序等 當然這些腳本也可以用來處理簡單的文本

編寫桌面應用程序

PHP也許並不完全適合用來做圖形界面應用程序 但是開發人員同樣可以在客戶端程序應用某些PHP的高級特性 通過使用PHP GTK來編寫這些程序 PHP GTK是PHP的一個擴展 並不包含在標準的開發包中 開發人員需要單獨編譯它 通過PHP GTK可以建立獨立的GUI(用戶圖形界面)應用程序 例如 音頻播放器 文本編輯器 資料庫後台等

返回目錄 PHP典型模塊與項目實戰大全

編輯推薦

Java Web開發詳解

PHP Web開發學習實錄

lishixin/Article/program/PHP/201311/21535

閱讀全文

與php實例大全相關的資料

熱點內容
塑源碼燕窩的安全性 瀏覽:174
作業調度採用高響應比優先調度演算法 瀏覽:160
和平精英如何切換蘋果到安卓 瀏覽:530
資料庫調用表單的命令 瀏覽:920
程序員技能大賽 瀏覽:9
什麼app買品牌衣服 瀏覽:13
手機看世界名著哪個app好 瀏覽:493
運行命令切換列印機用戶 瀏覽:919
android滑動button 瀏覽:939
伺服器日誌可以干什麼 瀏覽:644
安卓系統空間怎麼清理軟體 瀏覽:343
維也納pdf 瀏覽:641
加密貨幣交易所哪個最好 瀏覽:816
linux的現狀 瀏覽:926
命令與征服叛逆者修改器 瀏覽:246
怎麼用ios玩安卓全民槍戰 瀏覽:668
程序員入行前後的頭發 瀏覽:711
嵌入式圖像演算法 瀏覽:329
伺服器如何訪問伺服器失敗 瀏覽:875
android進度球 瀏覽:1001