當前位置:首頁 » 編程語言 » php函數fopen

php函數fopen

發布時間: 2024-10-10 04:50:20

⑴ fopen函數的用法

php fopen函數用法如下:

fopen作用:打開文件或者URL。

語法:fopen(filename,mode,include_path,context)

fopen()會獲取文件信息,包括文件名、文件狀態、當猜李仔前讀寫位置等,並將這些信息保存到一個FILE類型的結構體變數中,然後將該變數的地址返回。FILE是<stdio.h>頭文件中的一個結構體,它專門用來保存文件信息。我們不用關心FILE的具體結構,只需要知道它的用法就行。

如果希望接收fopen()的返回值,就需要定義一個FILE類型的指針。不同的操作需要不同的文件許可權。例如,只想讀取文件中的數據的話,「只讀」許可權就夠了;既想讀取又想寫入數據的話,「讀寫」許可權就是必須的了。

另外,文件擾信也有不同的類型,按照數據的存儲方式可以分為二進制文件和文本文件,它們的操作細穗汪節是不同的。在調用fopen()函數時,這些信息都必須提供,稱為「文件打開方式」。

⑵ php 中 fopen()打開文件(Url)失敗是什麼原因

需要在php.ini中將相關配置開啟

fopen原型:

resourcefopen(string$filename,string$mode[,bool$use_include_path=false[,resource$context]])

如果PHP認為filename指定的是一個已注冊的協議,而該協議被注冊為一個網路URL,PHP將檢查並確認allow_url_fopen已被激活。如果關閉了,PHP將發出一個警告,而fopen的調用則失敗。

allow_url_fopen:本選項激活了URL形式的fopen封裝協議使得可以訪問URL對象例如文件。默認的封裝協議提供用ftp和http協議來訪問遠程文件,一些擴展庫例如zlib可能會注冊更多的封裝協議。

注意:

  1. 出於安全性考慮,此選項只能在php.ini中設置。

  2. 此選項是緊接著版本4.0.3發布後引進的。版本4.0.3以及之前的版本只能在編譯時通過配置項--disable-url-fopen-wrapper來取消此特性。

⑶ php的文件操作(php操作文件的函數)

php文件操作之小型留言本實例

本文實例講述了php文件操作之小型留言本。分享給大家供大家參考。具體如下:

Index.php文件如下:

?php

$path

=

"DB/";

//定義路徑

$dr

=

opendir($path);

//打開目錄

while($filen

=

readdir($dr))

//循環讀取目錄中的文件

{

if($filen

!=

"."

and

$filen

!=

"..")

{

$fs

=

fopen($path.$filen,

"r");

echo

"B標題:/B".fgets($fs)."BR";

echo

"B作者:/B".fgets($fs)."BR";

echo

"B內容:/BPRE".fread($fs,

filesize($path.$filen))."/PRE";

echo

"HR";

fclose($fs);

}

}

closedir($dr)

//關閉目錄

?

Post.php文件如下:

?php

$path

=

"DB/";

$filename

=

"S".date("YmdHis").".dat";

$fp

=

fopen($path.$filename,

"w");

fwrite($fp,

$_POST["title"]."/n");

fwrite($fp,

$_POST["author"]."/n");

fwrite($fp,

$_POST["content"]."/n");

fclose($fp);

echo

"留言發表成功!";

echo

"a

href="Index.php"

mce_href="Index.php"返回首頁/a";

?

!DOCTYPE

HTML

PUBLIC

"-//W3C//DTD

HTML

4.01

Transitional//EN"

""

html

head

title發表新的留言/title

meta

http-equiv="Content-Type"

content="text/html;

charset=gb2312"

/head

body

H1p

align="center"發表新的留言/p/H1

form

name="form1"

method="post"

action="Post.php"

table

width="500"

border="0"

align="center"

cellpadding="0"

cellspacing="0"

tr

td標題/td

tdinput

name="title"

type="text"

id="title"

size="50"/td

/tr

tr

td作者/td

tdinput

name="author"

type="text"

id="author"

size="20"/td

/tr

tr

td內容/td

tdtextarea

name="content"

cols="50"

rows="10"

id="content"/textarea/td

/tr

/table

p

align="center"

input

type="submit"

value="Submit"

input

type="reset"

value="Reset"

/p

/form

/body

/html

希望本文所述對大家的php程序設計有所幫助。

php是什麼格式的文件,怎麼播放(打開)?

1、PHP,是超級文本預處理語言(HypertextPreprocessor)的縮寫。

PHP它是一種HTML內嵌式的語言,是一種在伺服器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言。

2、首先找到一個php文件,如下圖所示。

3、滑鼠右擊php文件,在彈出來的列表中選擇「打開方式(H)」,如下圖所示。

4、在打開的方式的選項中選擇「記事本」,如下圖所示。

5、然後就可以在記事本中看到php的代碼了,如下圖所示。

6、滑鼠php文件,在出現的列表中選擇「Notepad++」,如下圖所示。

7、然後可以看到在Notepad++中打開的php代碼如下圖所示,可以看到此時php代碼顯示不同顏色,這是Notepad++自帶的高顯亮。

PHP繞過open_basedir限制操作文件的三種方法

由於open_basedir的設置對system等命令執行函數是無效的,所以我們可以使用命令執行函數來訪問限制目錄。

我們首先創建一個目錄

且在該目錄下新建一個1.txt內容為abc

再在該目錄下創建一個目錄命名為b

並且在該目錄下創建一個1.php文件內容為

且在php.ini中設置好我們的open_basedir

我們嘗試執行1.php看看open_basedir是否會限制我們的訪問

執行效果如圖

很明顯我們無法直接讀取open_basedir所規定以外的目錄文件。

接下來我們用system函數嘗試繞open_basedir的限制來刪除1.txt

編輯1.php為

先來看看執行1.php之前的文件情況

執行1.php之後

我們先來了解一下symlink函數

symlink函數將建立一個指向target的名為link的符號鏈接,當然一般情況下這個target是受限於open_basedir的。

由於早期的symlink不支持windows,我的測試環境就放在Linux下了。

測試的PHP版本是5.3.0,其他的版本大家自測吧。

在Linux環境下我們可以通過symlink完成一些邏輯上的繞過導致可以跨目錄操作文件。

我們首先在/var/www/html/1.php中編輯1.php的內容為

接著在/var/www/中新建一個1.txt文件內容為

再來設置一下我們的open_basedir

在html目錄下編輯一個php腳本檢驗一下open_basedir

執行看下。

意料之中,文件無法訪問。

我們執行剛才寫好的腳本,1.php

此時tmplink還是一個符號鏈接文件,它指向的路徑是c/d,因此exploit指向的路徑就變成了

由於這個路徑在open_basedir的范圍之內所以exploit成功建立了。

之後我們刪除tmplink符號鏈接文件再新建一個同名為tmplink的文件夾,這時exploit所指向的路徑為

由於這時候tmplink變成了一個真實存在的文件夾所以tmplink/../../變成了1.txt所在的目錄即/var/www/

然後再通過訪問符號鏈接文件exploit即可直接讀取到1.txt的文件內容

當然,針對symlink()只需要將它放入disable_function即可解決問題,所以我們需要尋求更多的方法。

glob是php自5.3.0版本起開始生效的一個用來篩選目錄的偽協議,由於它在篩選目錄時是不受open_basedir的制約的,所以我們可以利用它來繞過限制,我們新建一個目錄在/var/www/下命名為test

並且在/var/www/html/下新建t.php內容為

執行結果如圖:

成功躲過open_basedir的限制讀取到了文件。

php實現編輯和保存文件的方法

文章主要介紹了php實現編輯和保存文件的方法,涉及php針對文件的讀取、編輯和保存操作的'相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下。

本文實例講述了php實現編輯和保存文件的方法。分享給大家供大家參考。具體如下:

save_file.php:

?php

session_start();

$handle=fopen($_POST['original_file_name'],"w");

$text=$_POST['file_contents'];

if(fwrite($handle,$text)==FALSE){

$_SESSION['error']='spanclass="redtxt"Therewasanerror/span'

}else{

$_SESSION['error']='spanclass="redtxt"Fileeditedsuccessfully/span'

}

fclose($handle);

header("Location:".$_POST['page']);

?

read_file.php:

!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"

""

htmlxmlns=""

head

metahttp-equiv="Content-Type"content="text/html;charset=iso-8859-1"/

titleUntitledDocument/title

/head

formaction="savecontents.php"method="post"

textareaname="file_contents"style="width:700px;height:600px;"

?php

$fileName="location/of/orignal/file/my_file.php";

$handle=fopen($fileName,"r");

while(!feof($handle)){

$text=fgets($handle);

echo$text;

}

?

/textarea

inputtype="hidden"value="?echo$fileName;?"name="original_file_name"/

/form

body

/body

/html

希望本文所述對大家的php程序設計有所幫助。

⑷ php fopen()的返回值是什麼

若執行fopen函數時發生錯誤,則函數的返回值是NULL(即0)。

fopen的函數原型為: FILE *fopen(const char *filename, const char *mode);其功能是使用給定的模式 mode 打開 filename 所指向的文件。文件順利打開後,指向該流的文件指針就會被返回。如果文件打開失敗則返回NULL,並把錯誤代碼存在 error 中。該函數位於C 標准庫<stdio.h>中。

(4)php函數fopen擴展閱讀:

fopen() 將 filename 指定的名字資源綁定到一個流上。如果 filename 是 "scheme://..." 的格式,則被當成一個 URL,PHP 將搜索協議處理器(也被稱為封裝協議)來處理此模式。如果該協議尚未注冊封裝協議,PHP 將發出一條消息來幫助檢查腳本中潛在的問題並將 filename 當成一個普通的文件名繼續執行下去。

如果 PHP 認為 filename 指定的是一個本地文件,將嘗試在該文件上打開一個流。該文件必須是 PHP 可以訪問的,因此需要確認文件訪問許可權允許該訪問。如果激活了 安全模式 或者 open_basedir 則會應用進一步的限制。

熱點內容
陰陽師防禦隊伍怎麼配置 發布:2024-10-10 07:19:52 瀏覽:886
雲存儲測試工具 發布:2024-10-10 07:19:03 瀏覽:464
java的組件 發布:2024-10-10 06:58:30 瀏覽:176
源代碼編譯後的二進制文件 發布:2024-10-10 06:57:40 瀏覽:136
java門戶網站 發布:2024-10-10 06:48:26 瀏覽:990
伺服器多cpu如何協同工作 發布:2024-10-10 06:42:12 瀏覽:997
appium錄制腳本 發布:2024-10-10 06:42:12 瀏覽:604
壓縮彈簧行程 發布:2024-10-10 06:35:50 瀏覽:803
php目錄在哪 發布:2024-10-10 06:30:09 瀏覽:623
安卓手機怎麼屏蔽垃圾號碼 發布:2024-10-10 06:24:32 瀏覽:925