久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

十天學會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";
  }

?>
  • 注釋:對于 IE,識別 jpg 文件的類型必須是 pjpeg,對于FireFox,必須是 jpeg。

保存被上傳的文件[ ]

  • 上面的例子在服務器的 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>

參考來源[ ]

使用手冊導航

十天學會php

第一天:PHP基礎教程|第二天:PHP基礎語法|第三天:運算符、循環(huán)與數(shù)組|第四天:數(shù)組、函數(shù)、表單|第五天:$_GET、$_POST |第六天:PHP日期、引用|第七天:文件上傳、Cookies|第八天:Sessions、發(fā)送電子郵件|第九天:錯誤處理、異常處理、過濾器|第十天:PHP學習必看