20100819 PHP-MySQL-CLASS 10
檔案上傳後接收資料的陣列變數名為 $_FILES
move_uploaded_file( 上傳檔案的暫時檔名, 上傳檔案路徑及儲存檔名 )
mb_convert_encoding( )
$_SERVER[‘PHP_AUTH_USER’]
$_SERVER[‘PHP_AUTH_PW’]
若視窗開啟, 認證訊息就無法產生
Lab: ftp1.php
複製一個檔案, 複製到 class 9 的目錄下, 執行 ftp1.php
可以觀察到 可以指定 檔案名稱以及讓用戶端下載的名稱( 名稱不需要相同 )
ftp1.php 檔案如下
<?php
//include("auth1.php"); //可不加上此行
header("Content-type: text/html; charset=utf-8");
$file="./9707.zip"; // 實際檔案的路徑+檔名
$filename="0714.zip"; // 下載的檔名
header("Content-type: ".filetype("$file"));//指定類型
header("Content-Disposition: attachment; filename=".$filename."");
readfile($file);
?>
header( ) 函數
ftp1.php 延伸的主題
將 record2009.sql 檔案匯入 pcschool 資料庫
分頁網頁設計
設計頁碼連結時請留意單雙引號, 不要少了或多了
Lab: 人數統計分析, 頁碼判斷
display1.php 內容如下
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>人數統計分析</title></head>
<body><?
include("server.php");
if( isset($_GET['page']) )
$page = intval( $_GET['page'] ); // intval( ) 作用回整數
else{$page = 1;}
$page_size = 10;
$sql = "select count(*) as total from record";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$total = $row['total'];
if(isset($total)) //假設有資料
{
if( $total < $page_size ) //若總筆數 小於每頁筆數, 總頁數 = 1
$page_count=1;
if( $total % $page_size) //假設有餘數, 總頁數 + 1
$page_count=(int)($total / $page_size) + 1;
else
$page_count = $total / $page_size;
}
else
$page_count = 0;
$page_number = '';
if( $page == 1 ) //$page_number要填寫什麼呢?
$page_number .= '[第一頁][上一頁]';
else
{
$page_number.='[<a href='.$_SERVER['PHP_SELF'].'?page=1>第一頁</a>]';
$page_number.='[<a href='.$_SERVER['PHP_SELF'].'?page='.($page-1).'>'."上一頁</a>]";
}
if(($page == $page_count) || ($page_count == 0))
$page_number .= '[下一頁][尾頁]';
else
{
$page_number.='[<a href='.$_SERVER['PHP_SELF'].'?page='.($page+1).'>'."下一頁</a>]";
$page_number.='[<a href='.$_SERVER['PHP_SELF'].'?page='.$page_count.'>'."尾頁</a>]";
}
if(isset($total)) //假設有資料,依據變數進行檢索
{
$sql = "select * from record limit ".($page-1)*$page_size.",$page_size";
echo $sql;
$result = mysql_query($sql) or die(mysql_error());
echo "<table border=1>";
echo "<tr><td>時間</td><td>ip</td></tr>";
while($list1=mysql_fetch_array($result))
{
echo "<tr><td>".$list1['visitday']."</td>";
echo "<td>".$list1['ip']."</td></tr>"; }
echo "</table>";
echo $page_number;
}
?></body></html>
Q: 頁碼連結語法很複雜
A: 可以設計 html 語法的頁碼連結. 再將可用 php 語法取代的 html 語法刪除,加上作為字串與變數的連結
Q: 若 SQL 語法有問題?
A:
php 的 header( ) 函數可指定網頁類型為 jpg, 但 IE 啟該網頁可能有問題
Q: 如何不要下載 pdf ?
A: 可使用 header ( ) 函數指定網頁為 pdf , 再以 echo 方式回應 file_get_contents(“pdf檔案”) 內容, 可於 php 內 加入 ip 偵測等語法.
header( ) 函數可作
檔案上傳後接收資料的陣列變數名為 $_FILES
move_uploaded_file( 上傳檔案的暫時檔名, 上傳檔案路徑及儲存檔名 )
mb_convert_encoding( )
- 將資料作編碼轉換, 例如 Big5 轉 UTF-8
- 中文檔名資料須作編碼轉換
$_SERVER[‘PHP_AUTH_USER’]
- 開啟視窗前認證訊息內的帳號
$_SERVER[‘PHP_AUTH_PW’]
- 開啟視窗前認證訊息內的密碼
若視窗開啟, 認證訊息就無法產生
Lab: ftp1.php
複製一個檔案, 複製到 class 9 的目錄下, 執行 ftp1.php
可以觀察到 可以指定 檔案名稱以及讓用戶端下載的名稱( 名稱不需要相同 )
ftp1.php 檔案如下
<?php
//include("auth1.php"); //可不加上此行
header("Content-type: text/html; charset=utf-8");
$file="./9707.zip"; // 實際檔案的路徑+檔名
$filename="0714.zip"; // 下載的檔名
header("Content-type: ".filetype("$file"));//指定類型
header("Content-Disposition: attachment; filename=".$filename."");
readfile($file);
?>
header( ) 函數
- 除了可作網頁切換, 不存暫存檔案等設計外, 也可呼叫網頁的認證訊息, 模擬其他檔案, 更改下載檔案檔名.
ftp1.php 延伸的主題
- 若希望 user 只能下載 1 次, 該如何設計?
- 加入資料庫偵測, 若下載一次則 update 資料, 下次就不能下載.
將 record2009.sql 檔案匯入 pcschool 資料庫
分頁網頁設計
- 請先確認, 儲存以下資料的變數名稱及變數內容
- 目前頁數
- 每一頁筆數
- 總筆數
- 總頁數
設計頁碼連結時請留意單雙引號, 不要少了或多了
Lab: 人數統計分析, 頁碼判斷
display1.php 內容如下
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>人數統計分析</title></head>
<body><?
include("server.php");
if( isset($_GET['page']) )
$page = intval( $_GET['page'] ); // intval( ) 作用回整數
else{$page = 1;}
$page_size = 10;
$sql = "select count(*) as total from record";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$total = $row['total'];
if(isset($total)) //假設有資料
{
if( $total < $page_size ) //若總筆數 小於每頁筆數, 總頁數 = 1
$page_count=1;
if( $total % $page_size) //假設有餘數, 總頁數 + 1
$page_count=(int)($total / $page_size) + 1;
else
$page_count = $total / $page_size;
}
else
$page_count = 0;
$page_number = '';
if( $page == 1 ) //$page_number要填寫什麼呢?
$page_number .= '[第一頁][上一頁]';
else
{
$page_number.='[<a href='.$_SERVER['PHP_SELF'].'?page=1>第一頁</a>]';
$page_number.='[<a href='.$_SERVER['PHP_SELF'].'?page='.($page-1).'>'."上一頁</a>]";
}
if(($page == $page_count) || ($page_count == 0))
$page_number .= '[下一頁][尾頁]';
else
{
$page_number.='[<a href='.$_SERVER['PHP_SELF'].'?page='.($page+1).'>'."下一頁</a>]";
$page_number.='[<a href='.$_SERVER['PHP_SELF'].'?page='.$page_count.'>'."尾頁</a>]";
}
if(isset($total)) //假設有資料,依據變數進行檢索
{
$sql = "select * from record limit ".($page-1)*$page_size.",$page_size";
echo $sql;
$result = mysql_query($sql) or die(mysql_error());
echo "<table border=1>";
echo "<tr><td>時間</td><td>ip</td></tr>";
while($list1=mysql_fetch_array($result))
{
echo "<tr><td>".$list1['visitday']."</td>";
echo "<td>".$list1['ip']."</td></tr>"; }
echo "</table>";
echo $page_number;
}
?></body></html>
Q: 頁碼連結語法很複雜
A: 可以設計 html 語法的頁碼連結. 再將可用 php 語法取代的 html 語法刪除,加上作為字串與變數的連結
Q: 若 SQL 語法有問題?
A:
- 請在 mysql_query( ) 之後加上 die( mysql_error( ) )
- 若仍看不懂訊息, 請把 SQL 語法 echo 出來.
- limit 語法之後要有空格
php 的 header( ) 函數可指定網頁類型為 jpg, 但 IE 啟該網頁可能有問題
- 建議以 <img src=”x.php”> 方式開啟 php 檔案
Q: 如何不要下載 pdf ?
A: 可使用 header ( ) 函數指定網頁為 pdf , 再以 echo 方式回應 file_get_contents(“pdf檔案”) 內容, 可於 php 內 加入 ip 偵測等語法.
header( ) 函數可作
- 開啟網頁前認證
- 下載檔案時,檔名改變
- 開啟 jpg, pdf 等檔案
- 轉換至其他網頁
沒有留言:
張貼留言