WIKI使用導航
站長百科導航
站長專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機
- cPanel
- 網(wǎng)址導航專題
- 云計算
- 微博營銷
- 虛擬主機管理系統(tǒng)
- 開放平臺
- WIKI程序與應用
- 美國十大主機
十天學會PHP/第七天:文件上傳、Cookies
來自站長百科
十天學會PHP |
打開文件fopen()[ ]
- fopen()函數(shù)用于在 PHP 中打開文件。
- 此函數(shù)的第一個參數(shù)含有要打開的文件的名稱,第二個參數(shù)規(guī)定了使用哪種模式來打開文件:
<html> <body> <?php $file=fopen("welcome.txt","r"); ?> </body> </html>
文件可能通過下列模式來打開:
- r 只讀。在文件的開頭開始。
- r+ 讀/寫。在文件的開頭開始。
- w 只寫。打開并清空文件的內容;如果文件不存在,則創(chuàng)建新文件。
- w+ 讀/寫。打開并清空文件的內容;如果文件不存在,則創(chuàng)建新文件。
- a 追加。打開并向文件文件的末端進行寫操作,如果文件不存在,則創(chuàng)建新文件。
- a+ 讀/追加。通過向文件末端寫內容,來保持文件內容。
- x 只寫。創(chuàng)建新文件。如果文件已存在,則返回 FALSE。
- x+ 讀/寫。創(chuàng)建新文件。如果文件已存在,則返回 FALSE 和一個錯誤。
- 注釋:如果 fopen() 無法打開指定文件,則返回 0(false)。
- 例子
- 如果 fopen() 不能打開指定的文件,下面的例子會生成一段消息:
<html> <body> <?php $file=fopen("welcome.txt","r") or exit("Unable to open file!"); ?> </body> </html>
關閉文件
- fclose() 函數(shù)用于關閉打開的文件。
<?php $file = fopen("test.txt","r");
//some code to be executed
fclose($file); ?>
- 檢測 End-of-file
- feof() 函數(shù)檢測是否已達到文件的末端 (EOF)。
- 在循環(huán)遍歷未知長度的數(shù)據(jù)時,feof() 函數(shù)很有用。
- 注釋:在 w 、a 以及 x 模式,您無法讀取打開的文件!
if (feof($file)) echo "End of file";
- 逐行讀取文件
f*gets() 函數(shù)用于從文件中逐行讀取文件。
- 注釋:在調用該函數(shù)之后,文件指針會移動到下一行。
- 例子
- 下面的例子逐行讀取文件,直到文件末端為止:
<?php $file = fopen("welcome.txt", "r") or exit("Unable to open file!"); //Output a line of the file until the end is reached while(!feof($file)) { echo fgets($file). "<br />"; } fclose($file); ?>
- 逐字符讀取文件
- fgetc() 函數(shù)用于從文件逐字符地讀取文件。
- 注釋:在調用該函數(shù)之后,文件指針會移動到下一個字符。
- 例子
- 下面的例子逐字符地讀取文件,直到文件末端為止:
<?php $file=fopen("welcome.txt","r") or exit("Unable to open file!"); while (!feof($file)) { echo fgetc($file); } fclose($file); ?>
創(chuàng)建一個文件上傳表單[ ]
- 允許用戶從表單上傳文件是非常有用的。
- 請看下面這個供上傳文件的 HTML 表單:
<html> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form> </body> </html>
- 請留意如下有關此表單的信息:
- <form> 標簽的 enctype 屬性規(guī)定了在提交表單時要使用哪種內容類型。在表單需要二進制數(shù)據(jù)時,比如文件內容,請使用 "multipart/form-data"。
- <input> 標簽的 type="file" 屬性規(guī)定了應該把輸入作為文件來處理。舉例來說,當在瀏覽器中預覽時,會看到輸入框旁邊有一個瀏覽按鈕。
- 注釋:允許用戶上傳文件是一個巨大的安全風險。請僅僅允許可信的用戶執(zhí)行文件上傳操作。
創(chuàng)建上傳腳本[ ]
- "upload_file.php" 文件含有供上傳文件的代碼:
<?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } ?>
- 通過使用 PHP 的全局數(shù)組 $_FILES,你可以從客戶計算機向遠程服務器上傳文件。
- 第一個參數(shù)是表單的 input name,第二個下標可以是 "name", "type", "size", "tmp_name" 或 "error"。就像這樣:
$_FILES["file"]["name"] - 被上傳文件的名稱 $_FILES["file"]["type"] - 被上傳文件的類型 $_FILES["file"]["size"] - 被上傳文件的大小,以字節(jié)計 $_FILES["file"]["tmp_name"] - 存儲在服務器的文件的臨時副本的名稱 $_FILES["file"]["error"] - 由文件上傳導致的錯誤代碼
- 這是一種非常簡單文件上傳方式?;诎踩矫娴目紤],您應當增加有關什么用戶有權上傳文件的限制。
上傳限制[ ]
- 在這個腳本中,我們增加了對文件上傳的限制。用戶只能上傳 .gif 或 .jpeg 文件,文件大小必須小于 20 kb:
<?php if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } } else { echo "Invalid file"; } ?>
保存被上傳的文件[ ]
- 上面的例子在服務器的 PHP 臨時文件夾創(chuàng)建了一個被上傳文件的臨時副本。
- 這個臨時的復制文件會在腳本結束時消失。要保存被上傳的文件,我們需要把它拷貝到另外的位置:
<?php if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Invalid file"; } ?>
什么是 Cookie?[ ]
- cookie 常用于識別用戶。cookie 是服務器留在用戶計算機中的小文件。每當相同的計算機通過瀏覽器請求頁面時,它同時會發(fā)送 cookie。通過 PHP,您能夠創(chuàng)建并取回 cookie 的值。
- 如何創(chuàng)建 cookie?
- setcookie() 函數(shù)用于設置 cookie。
- 注釋:setcookie() 函數(shù)必須位于 <html> 標簽之前。
- 語法
setcookie(name, value, expire, path, domain);
- 例子
- 在下面的例子中,我們將創(chuàng)建名為 "user" 的 cookie,把為它賦值 "Alex Porter"。我們也規(guī)定了此 cookie 在一小時后過期:
<?php setcookie("user", "Alex Porter", time()+3600); ?> <html> <body> </body> </html>
- 注釋:在發(fā)送 cookie 時,cookie 的值會自動進行 URL 編碼,在取回時進行自動解碼(為防止 URL 編碼,請使用 setrawcookie() 取而代之)。
如何取回 Cookie 的值?[ ]
- PHP 的 $_COOKIE 變量用于取回 cookie 的值。
- 在下面的例子中,我們取回了名為 "user" 的 cookie 的值,并把它顯示在了頁面上:
<?php // Print a cookie echo $_COOKIE["user"]; // A way to view all cookies print_r($_COOKIE); ?>
- 在下面的例子中,我們使用 isset() 函數(shù)來確認是否已設置了 cookie:
<html> <body> <?php if (isset($_COOKIE["user"])) echo "Welcome " . $_COOKIE["user"] . "!<br />"; else echo "Welcome guest!<br />"; ?> </body> </html>
如何刪除 cookie?[ ]
- 當刪除 cookie 時,您應當使過期日期變更為過去的時間點。
- 刪除的例子:
<?php // set the expiration date to one hour ago setcookie("user", "", time()-3600); ?> <pre> ===如果瀏覽器不支持 cookie 該怎么辦?=== *如果您的應用[[程序]]涉及不支持 cookie 的[[瀏覽器]],您就不得不采取其他方法在應用程序中從一張頁面向另一張頁面?zhèn)鬟f信息。一種方式是從表單傳遞數(shù)據(jù)(有關表單和用戶輸入的內容,稍早前我們已經(jīng)在本教程中介紹過了)。 *下面的表單在用戶單擊提交按鈕時向 "welcome.php" 提交了用戶輸入: <pre> <html> <body> <form action="welcome.php" method="post"> Name: <input type="text" name="name" /> Age: <input type="text" name="age" /> <input type="submit" /> </form> </body> </html>取回 "welcome.php" 中的值,就像這樣: <html> <body> Welcome <?php echo $_POST["name"]; ?>.<br /> You are <?php echo $_POST["age"]; ?> years old. </body> </html>
參考來源[ ]
使用手冊導航 | ||
---|---|---|
|