rss文章格式說明

<?php xml version=”1.0″ encoding=”UTF-8″?>
<rss version=”2.0″>
<channel>
網站描述區
文章區
</channel>
</rss>

基本格式

<?php xml version=”1.0″ encoding=”UTF-8″?>
<rss version=”2.0″>
<channel>
<title><![CDATA[網站名稱]]></title>
<link>http://網址/</link>
<description><![CDATA[網站描述]]></description>
<item>文章1</item>
<item>文章2</item>
<item>….</item>
</channel>
</rss>

F2blog的格式

<?php xml version=”1.0″ encoding=”UTF-8″?>
<rss version=”2.0″>
<channel>
<title><![CDATA[網站名稱]]></title>
<link>http://網址/</link>
<description><![CDATA[網站描述]]></description>
<language>語系utf-8</language>
<copyright><![CDATA[版權宣告]]></copyright>
<webMaster><![CDATA[網站管理者]]></webMaster>
<generator>網站建置軟體</generator>
<item>
    <link>文章1網址</link>
    <title><![CDATA[文章1標題]]></title>
    <author>文章1作者</author>
    <category><![CDATA[文章1類別]]></category>
    <pubDate>文章1日期</pubDate>
    <guid>文章1網址</guid>   
    <description><![CDATA[文章1詳細內容]]></description>
</item>
<item>
    <link>文章2網址</link>
    <title><![CDATA[文章2標題]]></title>
    <author>文章2作者</author>
    <category><![CDATA[文章2類別]]></category>
    <pubDate>文章2日期</pubDate>
    <guid>文章2網址</guid>   
    <description><![CDATA[文章2詳細內容]]></description>
</item>
</channel>
</rss>

如何對網站做頻寬控制

如何對網站做頻寬控制—-mod_bw

用過cband頻寬控制後覺得還是以下好用
理由:cband他限制網站所有檔案的流量,無法對檔案作控管
其實最有效果是對檔案作頻寬流量控制,比如說對jpg做限制…  

先去http://apache.ivn.cl/#bandwidth 或者到http://bwmod.sourceforge.net/下載符合你作業平臺的Bandwidth Mod(mod_bw)版本。
  下載這個安裝模組
  tar -zxvf mod_bw-0.8.tgz
  cd mod_bw
  apxs -i -a -c mod_bw.c
  這樣就安裝了這個模組
  然後進去到httpd.conf裏面來添加
  LoadModule bandwidth_module patch/apache/mod_bandwidth.so
  DocumentRoot “/var/www”
  BandWidthModule On ——加入些行
  
  Options Indexes FollowSymLinks
  AllowOverride None
  BandWidth all 10240000 ——–這樣就限制整個站點的速度為10M
  BandWidthModule [On|Off]
  apaceh 預設是關閉的,所以請把他打開
  BandWidthModule on
  ForceBandWidthModule [On|Off]
  這個設定預設情形,他不會對每個要求限制,如果你把他打開,他就會對每個要求做限制
  普通要求:AddOutputFilterByType MOD_BW text/html text/plain
  打開設定:ForceBandWidthModule On
  BandWidth [From] [bytes/s]
  這個設定有2個參數,第一是from,第二是速度,第一你可以用整個ip位址,或者是network mask例如:192.168.0.0/24 or 192.168.0.0/255.255.255.0) or all。最後的all就是全部皆可,不限制
  BandWidth localhost 10240
  BandWidth 192.168.218.5 0
  上面針對 localhost 給 10KB的速度,然後針對 192.168.218.5 不限制速度
  在版本0.8還可以針對client端的瀏覽器做限制
  BandWidth u:[User-Agent] [bytes/s]
  你可以利用正規語法比對client端瀏覽器
  BandWidth “u:^Mozilla/5(.*)” 10240
  BandWidth “u:wget” 102400
  還蠻不錯的功能
  MinBandWidth [From] [bytes/s]
  BandWidth all 102400
  MinBandWidth all 50000
  The example above, will have a top speed of 100kb for the 1st client. If more clients come, it will be splitted accordingly but
  everyone will have at least 50kb (even if you have 50 clients)
  BandWidth all 50000
  MinBandWidth all -1
  上面這個例子是保證client端下載速度保證 50KB/s
  LargeFileLimit [Type] [Minimum Size] [bytes/s]
  這個專門是用來限制大型檔案,譬如說影音檔 avi wmv 之類的 還蠻好用的喔
  LargeFileLimit .avi 500 10240
  上面是說如果 avi檔案超過500KB 就限制速度在 10KB
  BandWidthPacket [Size]
  這個不用理他,不要隨便調整他
  BandWidthError [Error]
  這是錯誤訊息導向,比如說超過限制,你可以寫個html檔然後導向那邊
  ErrorDocument 510 /errors/maxconexceeded.html
  BandWidthError 510
  MaxConnection [From] [Max]
  限制連線數目,這個還蠻好用的
  限制所有連線速度無限,但是只能有20條連線
  BandWidth all 0
  MaxConnection all 20
  限制無限制ip速度無限,連線數20,然後網域192.168.0.0/24的速度 10KB,連線數目5
  BandWidth all 0
  BandWidth 192.168.0.0/24 10240
  MaxConnection all 20
  MaxConnection 192.168.0.0/24 5
  然後在舉一些官方的例子
  Limit every user to a max of 10Kb/s on a vhost :
  BandwidthModule On
  ForceBandWidthModule On
  Bandwidth all 10240
  MinBandwidth all -1
  Servername www.example.com
  Limit al internal users (lan) to 1000 kb/s with a minimum of 50kb/s , and
  files greater than 500kb to 50kb/s.
  BandwidthModule On
  ForceBandWidthModule On
  Bandwidth all 1024000
  MinBandwidth all 50000
  LargeFileLimit * 500 50000
  Servername www.example.com
  限制 avi 跟 mpg 速度 20kb/s.
  BandwidthModule On
  ForceBandWidthModule On
  LargeFileLimit .avi 1 20000
  LargeFileLimit .mpg 1 20000
  Servername www.example.com
  Using it the “right” way, with output filter by mime type (for text) to 5kb/s:
  BandwidthModule On
  AddOutputFilterByType MOD_BW text/html text/plain
  Bandwidth all 5000
  Servername www.example.com
  連接數限制
  先去這下載一個吧..http://dominia.org/djao/limitipconn2.html
  下載後會得到
  mod_limitipconn-0.23.tar.bz2
  解壓出來..tar -jxvf mod_limitipconn-0.23.tar.bz2
  直接make install即可.
  並且在mod_status下添加了ExtendedStatus On這一行。這時我們的mod_limitipconn模組就安裝完畢,下一步就是對某個目錄進行併發連接數的設置了。
  mod_limitipconn可以對全局和虛擬主機進行不同的限制,其語法結構都是
  
  #所限制的目錄所在,此處表示主機的根目錄
  MaxConnPerIP 3 #所限制的每個IP併發連接數為3個
  NoIPLimit image/* #對圖片不做IP限制
  
  #所限制的目錄所在,此處表示主機的/mp3目錄
  MaxConnPerIP 1 #所限制的每個IP併發連接數為1個
  OnlyIPLimit audio/mpeg video #該限制只對視頻和音頻格式的檔
  
  
  當對全局進行限制時,將這段代碼放在httpd.conf檔沒有VirtualHost的地方,若是對某個虛擬主機進行限制,請將其放在 和之間,我們可以通過更改Location以及 MaxConnPerIP方便的控制所限制的目錄和併發連接數。
  最後,只要重新啟動Apache服務,併發連接數的限制就可以生效。

網頁設計技術~asp改寫副檔名

IIS的ISAPI伺服器擴展URL REWRITE(URL重寫)簡介

來源:http://www.zuoyefeng.com/show.aspx?id=79&cid=70

URL REWRITE,我的翻譯是URL重寫,或者URL重定義。在asp+iis的網站開發模式中,可以實現如將http://xxxxxx.cn/news.asp?id=220 變成http://xxxxxx.cn/220.html 的形式。例如某條新聞的實際網址是http://xxxxxx.cn/news.asp?id=220 ,通過URL重寫之後,我們就可以直接輸入 http://xxxxxx.cn/220.html 的網址,來訪問該條新聞。

對於iis伺服器,要實現此項功能,需從 http://www.helicontech.com/download/ 網站上,下載Lite Version (free)免費版的軟體,將此軟體安裝於伺服器之後,在其安裝目錄上,找到配置文件httpd.ini,用記事本打開,輸入相應的規則。然後,在相應的站點上,ISAPI中,添加此元件。OK,配置完成,功能生效。

2、URL_REWRITE的規則寫法參考:

當我需要將將news.asp?id=234的映射成news/234.html時,只需設置:

RewriteRule /news/(\d+)\.html /news\.asp\?id=$1 [N,I]

這樣就把 /news/234.html 這樣的請求映射成了 /news.asp?id=234
當有對/news/234.html的請求時:web伺服器會把實際請求轉發給/news.asp?id=234

比對於某一個簡單應用可以是:

RewriteRule /news/(\d+)\.html /news/news\.php\?id=$1 [N,I]
這樣就把 http://www.xxxxxx.com/news/234.html 映射到了 http://www.xxxxxx.com/news/news.php?id=234

一個更通用的能夠將所有的動態頁面進行參數映射的表達式是:
把 http://www.xxxxxx.cn/foo.php?a=A&b=B&c=C
表現成 http://www.xxxxxx.cn/foo.php/a/A/b/B/c/C

RewriteRule (.*?\.php)(\?[^/]*)?/([^/]*)/([^/]*)(.+?)? $1(?2$2&:\?)$3=$4?5$5: [N,I]

3、使用URL重寫功能的好處:

首先,有助於增加網站的安全性,因為它隱藏了諸如asp php jsp等相關的伺服器技術,以最原始的html文件形式,呈現於客戶。

其次,在平台移植時,不會各頁面的網站。如將news.asp?id=123轉移news.php?id=123,即將asp平台轉移php,如使用此URL重寫,這個頁面的網址就是news/123.html。

其它方面,方便URL引用,有助於搜索引擎的枚舉。

ISAPI_rewrite中文手冊
http://www.isapirewrite.cn/docs/

其他相關URL重寫擴展產品
ABC_Rewrite
http://www.jrsw.com/iis/index.html

紫雨軒IIS URL 重寫元件
http://www.redcheek.net/blogview.asp?logID=110

網頁設計利器~iframe語法

網頁設計利器~iframe語法

一、前言

開始之前,先說明這篇文章的構想,要在選單中控制另一個 Frame 裡的 iFrame 尺寸。以圖來表達這種說法的話,大概就像這樣:
變更 iFrame 的內容是小事,假如連尺寸都要變更該怎麼做呢? 看似簡單,因為涉及 Frame 問題就變得複雜,這裡先對 Frame 種類作簡單區別,之後才不會被複雜的 Frame 搞混了。
接著開始對它的結構作分析,要達到這個目標必須要開出下列五個網頁:
index.htm、frame1.htm、frame2.htm、iframe1.htm、iframe2.htm

frame1.htm 和 frame2.htm 藉頁框設定 frameset 語法嵌入母頁(index.htm),目的只為了將選單和內容隔開,是屬於固定性質的 frame,不會對內容作更動;iframe1.htm 和 iframe2.htm 則藉 iframe 語法嵌入 frame2.htm,圖示如下:
接下來可以直接看 Html 語法了,說明少一點比較不會愈描愈黑 ^ ^

二、程式碼

index.htm

<html>
<head><title>Index</title></head>
<frameset cols=”80,*” frameborder=”no” border=”0″ framespacing=”0″>
<frame src=”frame1.htm” name=”frame1″ id=”frame1″ scrolling=”auto” noresize=”noresize”>
<frame src=”frame2.htm” name=”frame2″ id=”frame2″>
</frameset>
<noframes><body></body></noframes>
</html>

很一般的 Frameset (頁框設定)

frame1.htm

<html><head><title>Frame1</title></head><body>
<label>
<input type=”button” name=”button1″ value=”iframe1″ onClick=”parent.frame2.my_iframe.location.href=’iframe1.htm'”>
<input type=”button” name=”button2″ value=”iframe2″ onClick=”parent.frame2.my_iframe.location.href=’iframe2.htm'”>
</label>
</body></html>
按鈕跳過三個頁框控制 iFrame,是 JavaScript 用法,target 的話只要 my_iframe 就可以了

frame2.htm

<html><head><title>Frame2</title></head><body>
<table border=”1″><tr><td>
<iframe src=”iframe1.htm” name=”my_iframe” id=”my_iframe” frameborder=”0″ marginwidth=”0″ marginheight=”0″></iframe>
</td></tr></table>
</body></html>
Table 和 iFrame 標籤上都不要有尺寸設定

iframe1.htm

<html><head><title>iFrame1</title></head><body>
<script language=”JavaScript”>
<!–
parent.document.all.my_iframe.width=300;
parent.document.all.my_iframe.height=200;
// –>
</script>
iFrame1
</body></html>
以 JavaScript 控制 iFrame 尺寸

iframe2.htm

<html><head><title>iFrame2</title></head><body>
<script language=”JavaScript”>
<!–
parent.document.all.my_iframe.width=200;
parent.document.all.my_iframe.height=300;
// –>
</script>
iFrame2
</body></html>

只有 iFrame 尺寸和 iframe1.htm 不同

三、實際狀況
iFrame 好用的地方在於,裡面甚至可以放入一個網站,若應用得當,對網頁設計是很有幫助的喔

網站架設~apache~php.ini設定

php.ini 核心配置選項說明
該列表只包含核心的 php.ini 配置選項。擴展的配置選項在各個擴展的文檔頁面分別被描述。有關 session 的選項可以在 sessions 頁面找到。

Httpd 選項

表格 G-3. Httpd 選項

名稱 默認值 可修改範圍 更新記錄
async_send “0” PHP_INI_ALL

語言選項

表格 G-4. 語言和雜類配置選項

名稱 默認值 可修改範圍 更新記錄
short_open_tag “1” PHP_INI_PERDIR 在 PHP < = 4.0.0 時是 PHP_INI_ALL。 asp_tags "0" PHP_INI_PERDIR 在 PHP <= 4.0.0 時是 PHP_INI_ALL。 precision "14" PHP_INI_ALL y2k_compliance "1" PHP_INI_ALL allow_call_time_pass_reference "1" PHP_INI_PERDIR 在 PHP <= 4.0.0 時是 PHP_INI_ALL。 expose_php "1" 僅可在 php.ini 中配置。 zend.ze1_compatibility_mode "0" PHP_INI_ALL 從 PHP 5.0.0 起可用。 以下是配置選項的簡要解釋。 short_open_tag boolean 決定是否允許使用 PHP 代碼開始標志的縮寫形式()。如果要和 XML 結合使用 PHP,可以禁用此選項以便於嵌入使用 < ?xml ?>。否則還可以通過 PHP 來輸出,例如:< ?php echo '。如果禁用了,必須使用 PHP 代碼開始標志的完整形式(< ?php ?>)。

注: 本指令也會影響到縮寫形式 < ?=,它和 標志之外還允許使用 ASP 風格的標志 < % %>。這也包括了輸出變量值的縮寫 < %= $value %>。更多信息見從 HTML 中分離一節。

注: ASP 風格標志的支持是 3.0.4 版新加的。

precision integer
浮點數中顯示有效數字的位數。

y2k_compliance boolean
強制 2000 年兼容(在不兼容的瀏覽器中會出問題)。

allow_call_time_pass_reference boolean
是否啟用在函數調用時強制參數被按照引用傳遞。此方法已不被讚成並在 PHP/Zend 未來的版本中很可能不再支持。鼓勵使用的方法是在函數定義中指定哪些參數應該用引用傳遞。鼓勵大家嘗試關閉此選項並確保腳本能夠正常運行,以確保該腳本也能在未來的版本中運行(每次使用此特性都會收到一條警告,參數會被按值傳遞而不是按照引用傳遞)。

在函數調用時通過引用傳遞參數是不推薦的,因為它影響到了代碼的整潔。如果函數的參數沒有聲明作為引用傳遞,函數可以通過未寫入文檔的方法修改其參數。要避免其副作用,最好僅在函數聲明時指定那個參數需要通過引用傳遞。

參見引用的解釋。

expose_php boolean
決定是否暴露 PHP 被安裝在服務器上(例如在 Web 服務器的信息頭中加上其簽名)。沒有任何安全上的威脅,只是讓客戶端能夠知道是否在服務器中安裝了 PHP。

zend.ze1_compatibility_mode boolean
啟用 Zend 引擎 1 (PHP 4) 兼容模式。這影響到了對象的復制、構造及比較。

參見從 PHP 4 移植到 PHP 5。

資源限制

表格 G-5. 資源限制

名稱 默認值 可修改範圍 更新記錄
memory_limit “8M” PHP_INI_ALL

以下是配置選項的簡要解釋。

memory_limit integer
本指令設定了一個腳本所能夠申請到的最大內存字節數。這有助於防止寫得不好的腳本消耗光服務器上的可用內存。要使用此指令必須在編譯的時候激活。因此 configure 一行中應該包括:–enable-memory-limit。如果不需要任何內存上的限制,必須將其設為 -1。

自 4.3.2 起,當激活了 memory_limit,PHP 函數 memory_get_usage() 便可以使用了。

當使用 integer 類型時,其值以字節為度量單位。還可以用簡化符號,說明見此 FAQ。

See also: max_execution_time.

數據處理

表格 G-6. 數據處理配置選項

名稱 默認值 可修改範圍 更新記錄
track_vars “On” PHP_INI_??
arg_separator.output “&” PHP_INI_ALL 從 PHP 4.0.5 起可用。
arg_separator.input “&” PHP_INI_PERDIR 從 PHP 4.0.5 起可用。
variables_order “EGPCS” PHP_INI_ALL
auto_globals_jit “1” PHP_INI_PERDIR 從 PHP 5.0.0 起可用。
register_globals “0” PHP_INI_PERDIR 在 PHP < = 4.2.3 時是 PHP_INI_ALL。 register_argc_argv "1" PHP_INI_PERDIR 在 PHP <= 4.2.3 時是 PHP_INI_ALL。 register_long_arrays "1" PHP_INI_PERDIR 從 PHP 5.0.0 起可用。 post_max_size "8M" PHP_INI_PERDIR 在 PHP <= 4.2.3 時是 PHP_INI_ALL。從 PHP 4.0.3 起可用。 gpc_order "GPC" PHP_INI_ALL auto_prepend_file NULL PHP_INI_PERDIR 在 PHP <= 4.2.3 時是 PHP_INI_ALL。 auto_append_file NULL PHP_INI_PERDIR 在 PHP <= 4.2.3 時是 PHP_INI_ALL。 default_mimetype "text/html" PHP_INI_ALL default_charset "" PHP_INI_ALL always_populate_raw_post_data "0" PHP_INI_PERDIR 在 PHP <= 4.2.3 時是 PHP_INI_ALL。從 PHP 4.1.0 起可用。 allow_webdav_methods "0" PHP_INI_PERDIR 以下是配置選項的簡要解釋。 track_vars boolean 如果激活,則環境變量,GET,POST,Cookie 和 Server 變量都能夠分別在全局關聯數組中找到:$_ENV,$_GET,$_POST,$_COOKIE 和 $_SERVER。 注意自 PHP 4.0.3 起,track_vars 總是打開的。 arg_separator.output string PHP 所產生的 URL 中來分隔參數的分隔符。 arg_separator.input string PHP 用來將 URL 解析為變量的分隔符列表。 注: 本指令中的每個字符都會被當成分隔符! variables_order string 設定 EGPCS(Environment,GET,POST,Cookie,Server)變量解析的順序。默認設定為“EGPCS”。舉例說,將其設為“GP”,會導致 PHP 完全忽略環境變量,cookies 和 server 變量,並用 GET 方法的變量覆蓋 POST 方法的同名變量。 參見 register_globals。 auto_globals_jit boolean 啟用後,SERVER 和 ENV 變量在他們第一次使用後 (Just In Time) 便被創建,而不是等到腳本開始運行時。如果這些變量沒有在腳本總使用,啟用這個變量會提高服務器性能。 要使此選項有效,PHP 配置選項 register_globals, register_long_arrays, 和 register_argc_argv 必須禁用。 register_globals boolean 決定是否將 EGPCS(Environment,GET,POST,Cookie,Server)變量注冊為全局變量。 PHP 4.2.0 開始,本選項默認為 off。 相關信息請閱讀安全一章中的使用 register_globals。 請注意 register_globals 不能在運行時設定(ini_set()),盡管如以上說明在主機允許時可以用 .htaccess。一個 .htaccess 項目的例子:php_flag register_globals off。 注: register_globals 受 variables_order 選項的影響。 register_argc_argv boolean 決定 PHP 是否定義 argv & argc 變量(可能包含有 GET 信息)。 參見命令行方式。此外,本選項自 PHP 4.0.0 起可用,在此之前總是“On”。 register_long_arrays boolean 設定 PHP 是否注冊已過時的 $HTTP_*_VARS 之類的預定義變量。如果為 On(默認值),則類似 $HTTP_GET_VARS 的 PHP 變量會被注冊。如果不使用,為性能考慮建議關閉此選項,而使用超全局數組例如 $_GET 替代之。 本指令自 PHP 5.0.0 起可用。 post_max_size integer 設定 POST 數據所允許的最大大小。此設定也影響到文件上傳。要上傳大文件,該值必須大於 upload_max_filesize。 如果配置腳本中激活了內存限制,memory_limit 也會影響文件上傳。通常說,memory_limit 應該比 post_max_size 要大。 當使用 integer 類型時,其值以字節為度量單位。還可以用簡化符號,說明見此 FAQ。 如果 POST 數據尺寸大於 post_max_size $_POST 和 $_FILES superglobals 便會為空。這可以以多種方式證明,例如,傳遞 $_GET 變量到腳本以處理數據, 也就是

, 然後查看 $_GET[‘processed’] 是否被設置。

gpc_order string
設定 GET/POST/COOKIE 變量解析的順序,默認為“GPC”。舉例說,將其設為“GP”,會導致 PHP 完全忽略 cookie 變量,並用 GET 方法的變量覆蓋 POST 方法的同名變量。

注: 本選項不能用於 PHP 4。用 variables_order 替代之。

auto_prepend_file string
指定在主文件之前自動解析的文件名。該文件就像調用了 include() 函數一樣被包含進來,因此會使用 include_path。

特殊值 none 禁止了自動前綴。

auto_append_file string
指定在主文件之後自動解析的文件名。該文件就像調用了 include() 函數一樣被包含進來,因此會使用 include_path。

特殊值 none 禁止了自動後綴。

注: 如果腳本通過 exit() 終止,則自動後綴不會發生。

default_mimetype string

default_charset string
自 4.0b4 起,PHP 總是默認在 HTTP 信息頭 Content-type: 中輸出字符編碼。要禁止發送字符集,將本選項設為空即可。

always_populate_raw_post_data boolean
總是產生 $HTTP_RAW_POST_DATA 變量包含有原始的 POST 數據。否則,此變量僅在碰到未識別 MIME 類型的數據時產生。不過,訪問原始 POST 數據的更好方法是 php://input。$HTTP_RAW_POST_DATA 對於 enctype=”multipart/form-data” 表單數據不可用。

allow_webdav_methods boolean
允許在 PHP 腳本中處理 WebDAV 的 HTTP 請求(例如 PROPFIND,PROPPATCH,MOVE,COPY 等)。此選項在 PHP 4.3.2 以後便不存在了。如果要取得這些請求的 POST 數據,也要設定 always_populate_raw_post_data。

參見 magic_quotes_gpc,magic-quotes-runtime 和 magic_quotes_sybase。

路徑和目錄

表格 G-7. 路徑和目錄配置選項

名稱 默認值 可修改範圍 更新記錄
include_path “.;/path/to/php/pear” PHP_INI_ALL
doc_root NULL PHP_INI_SYSTEM
user_dir NULL PHP_INI_SYSTEM
extension_dir “/path/to/php” PHP_INI_SYSTEM
cgi.fix_pathinfo “1” PHP_INI_ALL
cgi.force_redirect “1” PHP_INI_ALL
cgi.redirect_status_env NULL PHP_INI_ALL
fastcgi.impersonate “0” PHP_INI_ALL
cgi.rfc2616_headers “0” PHP_INI_ALL

以下是配置選項的簡要解釋。

include_path string
指定一組目錄用於 require(),include() 和 fopen_with_path() 函數來尋找文件。格式和係統的 PATH 環境變量類似:一組目錄的列表,在 UNIX 下用冒號分隔,在 Windows 下用分號分隔。

例子 G-1. Unix include_path

include_path=”.:/php/includes”

例子 G-2. Windows include_path

include_path=”.;c:\php\includes”

在包含路徑中使用 . 可以允許相對路徑,它代表當前目錄。

doc_root string
PHP 在服務器上的根目錄。僅在非空時使用。如果 PHP 被配置為安全模式,則此目錄之外的文件一概不被解析。如果 PHP 編譯時沒有指定 FORCE_REDIRECT,並且在任何 web 服務器(除了 IIS)中以 CGI 方式運行 PHP,則應該設定 doc_root。替代方案是使用下面的 cgi.force_redirect 配置選項。

user_dir string
在用戶目錄之下使用 PHP 文件的基本目錄名,例如 public_html。

extension_dir string
PHP 用來尋找動態連接擴展庫的目錄。參見 enable_dl 和 dl()。

extension string
當 PHP 啟動時所加載的動態連接擴展庫。

cgi.fix_pathinfo boolean
對 CGI 提供了真正的 PATH_INFO/PATH_TRANSLATED 支持。以前 PHP 的行為是將 PATH_TRANSLATED 設為 SCRIPT_FILENAME,而不管 PATH_INFO 是什么。有關 PATH_INFO 的更多信息見 cgi 規格。將此值設為 1 將使 PHP CGI 修正其路徑以遵守規格。設為 0 將使 PHP 的行為和從前一樣。默認為零。用戶應該修正其腳本使用 SCRIPT_FILENAME 而不是 PATH_TRANSLATED。

cgi.force_redirect boolean
在大多數 web 服務器中以 CGI 方式運行 PHP 時很有必要用 cgi.force_redirect 提供安全。PHP 默認其為 On。可以將其關閉,但風險自擔。

注: Windows 用戶:可以安全地在 IIS 之下將其關閉,事實上必須這么做。要在 OmniHTTPD 或 Xitami 之下使用也必須將其關閉。

cgi.redirect_status_env string
如果打開了 cgi.force_redirect,並且不是在 Apache 或 Netscape(iPlanet)web 服務器之下運行,可能需要設定一個環境變量名,PHP 將去尋找它來知道可以繼續執行下去。

注: 設定此變量可能會導致安全問題,首先要知道自己在做什么。

fastcgi.impersonate string
IIS(在基於 WINNT 的操作係統上)中的 FastCGI 支持模倣客戶端安全令牌的能力。這使得 IIS 能夠定義運行時所基於的請求的安全上下文。Apache 中的 mod_fastcgi 不支持此特性(03/17/2002)。如果在 IIS 中運行則設為 1。默認為 0。

cgi.rfc2616_headers int
指定 PHP 在發送 HTTP 響應代碼時使用何種報頭。如果設定為 0,PHP 發送一個 Status: 報頭,Apache 和其它 web server 都支持。如果此選項設定為 1,PHP 將發送 RFC 2616 兼容的報頭。除非你知道自己在做什么,否則保留其值為 0。

文件上傳

表格 G-8. 文件上傳配置選項

名稱 默認值 可修改範圍 更新記錄
file_uploads “1” PHP_INI_SYSTEM 在 PHP <= 4.2.3 時是 PHP_INI_ALL。從 PHP 4.0.3 起可用。 upload_tmp_dir NULL PHP_INI_SYSTEM upload_max_filesize "2M" PHP_INI_PERDIR 在 PHP <= 4.2.3 時是 PHP_INI_ALL。 以下是配置選項的簡要解釋。 file_uploads boolean 是否允許 HTTP 文件上傳。參見 upload_max_filesize,upload_tmp_dir 和 post_max_size 指令。 當使用 integer 類型時,其值以字節為度量單位。還可以用簡化符號,說明見此 FAQ。 upload_tmp_dir string 文件上傳時存放文件的臨時目錄。必須是 PHP 進程所有者用戶可寫的目錄。如果未指定則 PHP 使用係統默認值。 upload_max_filesize integer 所上傳的文件的最大大小。 當使用 integer 類型時,其值以字節為度量單位。還可以用簡化符號,說明見此 FAQ。 普通 SQL 表格 G-9. 普通 SQL 配置選項 名稱 默認值 可修改範圍 更新記錄 sql.safe_mode "0" PHP_INI_SYSTEM 以下是配置選項的簡要解釋。 sql.safe_mode boolean 調試器配置選項 注意 僅 PHP 3 實現了一個默認的調試器。更多信息請參考附錄 E。 debugger.host string 調試器所使用的主機的 DNS 名或 IP 地址。 debugger.port string 調試器所用的端口號。 debugger.enabled boolean 是否啟用調試器。

網頁設計~PHP/MySQL連結函數

PHP/MySQL相關函數
一、連接資料庫

在連接資料庫時,使用以下的函式:

mysql_connect ([string server [, string username [, string password]]]) //持續性的資料庫連接

mysql_pconnect ([string server [, string username [, string password]]])

函式執行成功時,會傳回一個 MySQL link 的辨識資源,執行失敗則傳回 FALSE。函式的參數:(主機名稱或位址 ,使用者的帳號, 使用者的密碼)

例如:
$link = mysql_pconnect(“localhost”,”root”,”4321″);

二、選擇資料庫

取得資料庫連線之後,接下來便是選擇所要選取的資料庫。選擇資料庫的函式如下:

mysql_select_db (string database_name [, resource link_id])

函式執行成功,會傳回 True 值,否則傳回 False 值。函式的參數:資料庫名稱,MySQL link 的辨識資源。通常第二個參數可以省略。

例如:
mysql_select_db(“std”);

三、執行查詢

資料庫選擇完畢之後,便可以針對資料庫執行查詢的動作。以下是執行查詢所使用的函式:

mysql_query (string query [, resource link_id])

函式接受 SQL 命令,作為對資料庫執行查詢的命令。如果 SQL 命令是 SELECT類型,執行成功時,就會傳回資源辯識物件,作為之後處理查詢結果之用;否則,則傳回 False 值。其他類型的 SQL 命令,執行成功,會傳回 True 值,否則傳回 False 值。函式的參數:SQL 命令句、MySQL link 的辨識資源。通常第二個參數可以省略。

例如:
$result = mysql_query(“select * from user “);

四、處理查詢結果

如果之前所執行的查詢是 SELECT 類型,會傳回查詢結果。我們通常會利用執行查詢所得的資源物件,取得查詢結果,並逐筆處理其中的每一筆記錄。最常用的方式,是使用迴圈逐一執行 mysql_fetch_array()函式,然後將每一筆記錄放入陣列中,再讀取每一筆記錄,各欄位的值。

mysql_fetch_array (resource result [, int result_type])

函式執行成功時,傳回一筆記錄,並將紀錄放入陣列中。如果,查詢結果中,不再有任何紀錄時,則傳回 False 值。函式的參數:查詢結果的資源辯識物件,陣列的型態常數

陣列的型態常數,是一個整數的常數。它的值有以下三種:MYSQL_ASSOC、MYSQL_NUM、及MYSQL_BOTH。預設值是 MYSQL_BOTH。當第二個參數是MYSQL_ASSOC 時,函式會將紀錄存成使用文字指數的陣列。當第二個參數是MYSQL_NUM時,函式會將紀錄存成使用數值指數的陣列。當第二個參數是MYSQL_BOTH 時,函式會將紀錄存成可同時使用文字指數及數值指數的陣列。

例如:
$row = mysql_fetch_array($result);

五、關閉資料庫連結

如果,之前連接資料庫時,所使用的函式,是 mysql_connect(),則可以使用 mysql_close()函式來關閉資料庫的連接。若使用 mysql_pconnect(),則可省略這個步驟。不過,通常,在 PHP程式執行完畢時,會自動關閉資料庫的連接,所以不執行這個函式,也無所謂。

mysql_close ([resource link_identifier])

函式執行成功時,傳回 True 值。否則,則傳回 False 值。函式的參數:MySQL link 的辨識資源 ,參數通常可省略。

例如:
mysql_close($link);

六、其他函數

mysql_num_rows
語法:int mysql_num_rows ( resource RESULT)
說明:用來計算 RESULT 裡頭有多少個資料列。
用法:$num_rows = mysql_num_rows($result);

mysql_fetch_row (不建議使用)
語法:array mysql_fetch_row ( resource RESULT)
說明:搭配迴圈的使用,本函數可以從 RESULT 裡,將資料一列一列讀取出來。
用法一:
$num_rows = mysql_num_rows($result);
for ( $i=0; $i< $num_rows; $i++ ) {
list($value1, $value2) = mysql_fetch_row($result);
echo $value1;
echo $value2;
echo ……
}
用法二:
while ( list($value1, $value2) = mysql_fetch_row($result) ) {
echo $value1;
echo $value2;
echo ……
}
用法三:
while ( $value = mysql_fetch_row($result) ) {
echo $value[0];
echo $value[1];
echo ……
}

mysql_data_seek
語法:bool mysql_data_seek ( resource RESULT_IDENTIFIER, int ROW_NUMBER)
說明:將 RESULT_IDENTIFIER 的內部指標移到第 ROW_NUMBER 個 row 去。
用法:mysql_data_seek($result, 6);

mysql_insert_id
語法:int mysql_insert_id ( [resource LINK_IDENTIFIER])
說明:假如您將某個欄位的型態設為「AUTO_INCREMENT」的話,使用本函數將可以得知在 INSERT 敘述被執行時,MySQL 自動為該欄位產生的值為何。
用法:$ID = mysql_insert_id($link);

mysql_free_result
語法:bool mysql_free_result ( resource RESULT)
說明:釋放 RESULT 所佔用的記憶體。
用法:mysql_free_result($result);

mysql_error
語法:string mysql_error ( [resource LINK_IDENTIFIER])
說明:本函數用來取得 MySQL 在執行 SQL 敘述時的錯誤訊息。當您在為程式除錯時,可能會用得上它。
用法:$Error = mysql_error($link);

一個完整的例子

//顯示
$myquery = “select * from std”; $result = mysql_query($myquery) or die(“查詢 Query 錯誤”); while($row = mysql_fetch_array($result)){
echo $row[“name”],$row[“city”],$row[“stdnum”],$row[“address”] ;
echo ”
“; }
//新增
$myquery = “insert std (name,city,stdnum,address) values(“柯念珍”,”新竹縣”,”s20001″, “竹北市華興街129號”);
mysql_query($myquery) or die(“新增 Query 錯誤”);

//編修
$myquery = “update std set
name = “陳念惠”,
city = “桃園縣”
where id = ’10′”;
mysql_query($myquery) or die(“編修 Query 錯誤”);

//刪除
$myquery = “delete from std where id = ’10′”;
mysql_query($myquery) or die(“刪除 Query 錯誤”);
?>
資料來源:新竹縣網頁補給站

網頁設計,好用的smarty教學

網頁設計,好用的smarty教學

smarty實例教學

一、什麼是smarty?
smarty是一個使用PHP寫出來的模板PHP模板引擎,它提供了邏輯與外在內容的分離,簡單的講,目的就是要使用PHP程式員同美工分
離,使用的程式員改變程式的邏輯內容不會影響到美工的頁面設計,美工重新修改頁面不會影響到程式的程式邏輯,這在多人合作的項目
中顯的尤為重要。

二、smarty優點:
1. 速度:採用smarty編寫的程式可以獲得最大速度的提高,這一點是相對於其它的模板引擎技術而言的。

2. 編譯型:採用smarty編寫的程式在執行時要編譯成一個非模板技術的PHP檔案,這個檔案採用了PHP與HTML混合的方式,在下一次訪
問模板時將WEB請求直接轉換到這個檔案中,而不再進行模板重新編譯(在源程式沒有改動的情況下)

3. 快取技術:smarty選用的一種快取技術,它可以將使用者最終看到的HTML檔案快取成一個靜態的HTML頁,當設定smarty的cache屬性為
true時,在smarty設定的cachetime期內將使用者的WEB請求直接轉換到這個靜態的HTML檔案中來,這相當於叫用一個靜態的HTML檔案。

4. 外掛技術:smarty可以自訂外掛。外掛實際就是一些自訂的函數。

5. 模板中可以使用if/elseif/else/endif。在模板檔案使用判斷語法可以非常方便的對模板進行格式重排。
三、不適合使用smarty的地方:

1. 需要實時更新的內容。例如像股票顯示,它需要經常對資料進行更新,這類型的程式使用smarty會使模板處理速度變慢。

2. 小項目。小項目因為項目簡單而美工與程式員兼於一人的項目,使用smarty會喪失php開發迅速的優點。

四、安裝smarty類:

安裝smarty的環境:php版本4.06以上版本。

安裝smarty方法非常簡單,從中下載smarty.t…將LIB中所有檔案
拷入comm目錄,完成基本安裝.

其它進階安裝使用方法請看手冊.

五、smarty在模板中的使用:

本節通過幾個實例來講一講smarty的使用。smarty模板通常使用.tpl來標識,有些人為了美工方便,將附檔名直接寫成.html,也是可以
的。本文中採用smarty標準寫法:以.tpl來表示為一個smarty模板。

PHP程式碼:——————————————————————————–

實例1:

先來看一個簡單的範例。
=====================================================
index.tpl
=====================================================

{* 顯示是smarty變數識符裡的用*包含的文字為註釋內容 *}
{include file=”header.tpl”}{*頁面頭*}
大家好,我叫{$name}, 歡迎大家閱讀我的smarty學習材料。
{include file=”foot.tpl”}{*頁面尾*}

上邊的這個範例是一個tpl模板,其中:
1. {**}是模板頁的註釋,它在smarty對模板進行解析時不進行任何輸出,僅供模板設計師對模板進行註釋。
2. {include file=”xxx.tpl”}使用此句將一個模板檔案包含到目前頁面中,範例中將在網站中公用事的head.tpl與foot.tpl進行了包含,你可以
這樣想,使用這一句將xxx.tpl中的內容全部複製在目前語法處。當然,你不使用這一句也可以,將XXX.tpl中的內容複製到目前語法處
也是完全可以了。

3.{$name}: 模板變數,smarty中的核心組成,採用smarty定義的左邊界符{與右邊界符}包含著、以PHP變數形式給出,在smarty程式中將使用
$smarty->assign(“name”, “李曉軍”);將模板中的$name替換成「李曉軍」三個字。

整個實例源程式如下:
=============================
header.tpl
=============================
<html>
<head>
<title>大師兄smarty教學</title>
</head>
<body>
===============================
foot.tpl
===============================
<hr>
<center> CopyRight(C) by 大師兄 2004年8月</center>
<hr>
</body>
</html>

=====================================================
index.tpl
=====================================================

{* 顯示是smarty變數識符裡的用*包含的文字為註釋內容 *}
{include file=”header.tpl”}{*頁面頭*}
大家好,我叫{$name}, 歡迎大家閱讀我的smarty學習材料。
{include file=”foot.tpl”}{*頁面尾*}

================================================
index.php
================================================
<?php

include_once(“./comm/Smarty.class.php”); //包含smarty類檔案

$smarty = new Smarty(); //建立smarty實例對像$smarty
$smarty->templates(“./templates”); //設定模板目錄
$smarty->templates_c(“./templates_c”); //設定編譯目錄

//—————————————————-
//左右邊界符,預設為{},但實際應用當中容易與JavaScript
//相衝突,所以建議設成<{}>或其它。
//—————————————————-
$smarty->left_delimiter = “{“;
$smarty->right_delimiter = “}”;

$smarty->assign(“name”, “李曉軍”); //進行模板變數替換

//編譯並顯示位於./templates下的index.tpl模板
$smarty->display(“index.tpl”);
?>

最終執行這個程式時將顯示為:
================================
執行index.php
================================
<html>
<head>
<title>大師兄smarty教學</title>
</head>
<body>
大家好,我叫李曉軍, 歡迎大家閱讀我的smarty學習材料。
<hr>
<center> CopyRight(C) by 大師兄 2004年8月</center>
<hr>
</body>
</html>

smarty實例教學(2)
這個範例是綜合使用smarty模板參數的一個範例,這些參數用來控制模板的輸出,我只選其中幾個,其它的參數你去看參考吧。
================================================
exmple2.tpl
================================================
<html>
<head><title>大師兄smarty範例2</title></head>
<body>
1. 第一句首字母要大寫:{$str1|capitalize}<br>
2. 第二句模板變數 + 李曉軍:{$str2|cat:”李曉軍”}<br>
3. 第三句輸出目前日期:{$str3|date_format:”%Y年%m月%d日”}
4. 第四句.php程式中不處理,它顯示預設值:{$str4|default:”沒有值!”}
5。第五句要讓它縮進8個空白字母位,並使用”*”取替這8個空白字元:<br>
{$str5|indent:8:”*”}}<br>
6. 第六句把TEACHerLI@163.com全部變為小寫:{$str6|lower}<br>
7. 第七句把變數中的teacherli替換成:李曉軍:{$str7|replace:”teacherli”:”李曉軍”}<br>
8. 第八句為組合使用變數修改器:{$str8|capitalize|cat:”這裡是新加的時間:”|date_format:”%Y年%m月%d日”|lower}
</body>
</html>

===============================================
example2 .php
===============================================
<?php

include_once(“./Smarty.class.php”); //包含smarty類檔案

$smarty = new Smarty(); //建立smarty實例對像$smarty
$smarty->templates(“./templates”); //設定模板目錄
$smarty->templates_c(“./templates_c”); //設定編譯目錄

//—————————————————-
//左右邊界符,預設為{},但實際應用當中容易與JavaScript
//相衝突,所以建議設成<{}>或其它。
//—————————————————-
$smarty->left_delimiter = “{“;
$smarty->right_delimiter = “}”;

$smarty->assign(“str1”, “my name is xiao jun, li.”); //將str1替換成My Name Is Xiao Jun, Li.
$smarty->assign(“str2”, “我的名字叫:”); //輸出: 我的名字叫:李曉軍
$smarty->assign(“str3”, “公元”); //輸出公元2004年8月21日(我的目前時間)
//$smarty->assign(“str4”, “”); //第四句不處理時會顯示預設值,如果使用前面這一句則替換為””
$smarty->assign(“str5”, “前邊8個*”); //第五句輸出:********前邊8個*
$smarty->assign(“str6”, “TEACHerLI@163.com“); //這裡將輸出teacherli@163.com
$smarty->assign(“str7”, “this is teacherli”); //在模板中顯示為:this is 李曉軍
$smarty->assign(“str8”, “HERE IS COMBINING:”);

//編譯並顯示位於./templates下的index.tpl模板
$smarty->display(“example2.tpl”);
?>

最終輸出效果:
======================================================
example2.php輸出效果:
======================================================
<html>
<head><title>大師兄smarty範例2</title></head>
<body>
1. 第一句首字母要大寫:My Name Is Xiao Jun, Li.<br>
2. 第二句模板變數 + 李曉軍:我的名字叫:李曉軍<br>
3. 第三句輸出目前日期:公元2004年8月21日<br>
4. 第四句.php程式中不處理,它顯示預設值:沒有值!<br>
5。第五句要讓它縮進8個空白字母位,並使用”*”取替這8個空白字元:<br>
********前邊8個*<br>
6. 第六句把TEACHerLI@163.com全部變為小寫:teacherli@163.com<br>
7. 第七句把變數中的teacherli替換成:李曉軍:this is 李曉軍<br>
8. 第八句為組合使用變數修改器:Here is Combining:這裡是新加的時間:2004年8月21日
</body>
</html>

在模板中的這些參數被稱為變數修改器(variable modifiers),使用這些參數可對模板進行一系列的修改控制。變數修改器
使用”|”和調節器名稱應用修改器, 使用”:”分開修改器參數。變數修改器可以組合使用,像第八句一樣,實際使用中可以靈活應用。

實例3.
==================================================
example3.tpl
==================================================
<html>
<head><title>模板中內定的一些函數</title></head>
<body>

{*下面的這一段相當於在模板內部定義一個變數UserName*}
{assign var=”UserName” value=”大師兄”}
這裡將顯示模板內部定義的一個變數:UserName = {$UserName}

下面的這一行將顯示3個checkBox:<br>
{html_checkboxes name=”CheckBox” values=$CheckName checked=$IsChecked output=$value separator=”<br />”}
下面在這一行將顯示3個radio:<br>
{html_radioes name=”RadioBox” values=$RadioName checked=$IsChecked output=$value separator=”<br />”}
下面顯示一個月,日, 年選擇框:<br>
{html_select_date}

<hr><b>CopyRight(C) By XiaoJun, Li 2004<b>{mailto address=”teacherli@163.ccom” text=”聯繫作者”}

</body>
</html>

======================================================
example3.php
======================================================
<?php

require_once (“./comm/Smarty.class.php”);

$smarty = new F117_Smarty;
$smarty->template_dir = ”./templates/”;
$smarty->compile_dir = ”./templates_c/”;
$smarty->config_dir = ”./configs/”;
$smarty->cache_dir = ”./cache/”;
$smarty->caching = false;

//————————————————————————————–
//處理{html_checkboxes name=”CheckBox” values=$CheckName checked=$IsChecked output=$value separator=”<br />”}
//————————————————————————————–
$smarty->assign(”CheckName”, array(
1001 => ”語文”,
1002 => ”數學”,
1003 => ”外語”));
$smarty->assign(”IsChecked”, 1001);
//————————————————————————————–
//處理{html_radioes name=”RadioBox” values=$RadioName checked=$IsChecked output=$value separator=”<br />”}
//————————————————————————————–
$smarty->assign(”RadioName”, array(
1001 => ”語文”,
1002 => ”數學”,
1003 => ”外語”));
$smarty->assign(”IsChecked”, 1001);

//————————————————————————————–
//{html_select_date}不用處理會自動輸出
//————————————————————————————–

$smarty->display(“example3.tpl”);
?>
smarty實例教學(3)

======================================================
example3.php輸出效果:
======================================================
<html>
<head><title>模板中內定的一些函數</title></head>
<body>

{assign var=”UserName” value=”大師兄”}
這裡將顯示模板內部定義的一個變數:UserName = 大師兄

下面的這一行將顯示3個checkBox:<br>
<input type=”checkbox” name=”CheckBox[]” value=”1000″>語文<br />
<input type=”checkbox” name=”CheckBox[]” value=”1001″ checked=”checked”>數學<br />
<input type=”checkbox” name=”CheckBox[]” value=”1002″>外語<br />
下面在這一行將顯示3個radio:<br>
<input type=”radio” name=”RadioBox[]” value=”1000″>語文<br />
<input type=”radio” name=”RadioBox[]” value=”1001″ checked=”checked”>數學<br />
<input type=”radio” name=”RadioBox[]” value=”1002″>外語<br />
下面顯示一個月,日, 年選擇框:<br>
<select name=”Date_Month”>
<option label=”January” value=”01″>January</option>
<option label=”February” value=”02″>February</option>
<option label=”March” value=”03″>March</option>
<option label=”April” value=”04″>April</option>
<option label=”May” value=”05″>May</option>
<option label=”June” value=”06″>June</option>
<option label=”July” value=”07″>July</option>
<option label=”August” value=”08″ selected=”selected”>August</option>
<option label=”September” value=”09″>September</option>
<option label=”October” value=”10″>October</option>
<option label=”November” value=”11″>November</option>
<option label=”December” value=”12″>December</option>
</select>
<select name=”Date_Day”>
<option label=”01″ value=”1″>01</option>
<option label=”02″ value=”2″>02</option>
<option label=”03″ value=”3″>03</option>
<option label=”04″ value=”4″>04</option>
<option label=”05″ value=”5″>05</option>
<option label=”06″ value=”6″>06</option>
<option label=”07″ value=”7″>07</option>
<option label=”08″ value=”8″>08</option>
<option label=”09″ value=”9″>09</option>
<option label=”10″ value=”10″>10</option>
<option label=”11″ value=”11″>11</option>
<option label=”12″ value=”12″>12</option>
<option label=”13″ value=”13″>13</option>
<option label=”14″ value=”14″>14</option>
<option label=”15″ value=”15″>15</option>
<option label=”16″ value=”16″>16</option>
<option label=”17″ value=”17″>17</option>
<option label=”18″ value=”18″>18</option>
<option label=”19″ value=”19″>19</option>
<option label=”20″ value=”20″>20</option>
<option label=”21″ value=”21″ selected=”selected”>21</option>
<option label=”22″ value=”22″>22</option>
<option label=”23″ value=”23″>23</option>
<option label=”24″ value=”24″>24</option>
<option label=”25″ value=”25″>25</option>
<option label=”26″ value=”26″>26</option>
<option label=”27″ value=”27″>27</option>
<option label=”28″ value=”28″>28</option>
<option label=”29″ value=”29″>29</option>
<option label=”30″ value=”30″>30</option>
<option label=”31″ value=”31″>31</option>
</select>
<select name=”Date_Year”>
<option label=”2004″ value=”2004″ selected=”selected”>2004</option>
</select>
<hr><b>CopyRight(C) By XiaoJun, Li 2004<b><a href=”mailto:teacherli@163.com”>ÁªÏµ×÷Õß</a>
</body>
</html>

例3使用了一些smarty模板中內置的一些函數,相似的函數大家可以在手冊中查到,使用方法很簡單,大家可以自己去搜尋.
例4.模板控制(if / elseif / else/ endif )
=======================================================
example4.tpl
=======================================================
<html>
<head><title>模板中的流程控制</title><head>
<body>
<table border=”1″>
{assign var=”tbColor” value=”#D4D0C8″}
色彩:{$tbColor}<br>

{section name=loop loop=$News}
{if $tbColor == “#D4D0C8″}
<tr bgcolor=”{$tbColor}”>
{assign var=”tbColor” value=”#EEEEEE”}
{else $tbColor == “#EEEEEE”}
<tr bgcolor = “{$tbColor}”>
{assign var=”tbColor” value=”#D4D0C8″}
{/if}
<td>{$News[loop].newsID}</td>
<td>{$News[loop].newsTitle}</td>
<tr>
{/section}
</table>
</body>
</html>
=======================================================
example4.php
=======================================================
<?php

require_once (“./public/inc/F117_Smarty.php”);

$smarty = new F117_Smarty;
$smarty->template_dir = ”./templates/”;
$smarty->compile_dir = ”./templates_c/”;
$smarty->config_dir = ”./configs/”;
$smarty->cache_dir = ”./cache/”;
$smarty->caching = false;

$array[]= array(“newsID”=>”001”, “newsTitle”=>”第1條新聞”);
$array[]= array(“newsID”=>”002”, “newsTitle”=>”第2條新聞”);
$array[]= array(“newsID”=>”003”, “newsTitle”=>”第3條新聞”);
$array[]= array(“newsID”=>”004”, “newsTitle”=>”第4條新聞”);
$array[]= array(“newsID”=>”005”, “newsTitle”=>”第5條新聞”);
$array[]= array(“newsID”=>”006”, “newsTitle”=>”第6條新聞”);
$array[]= array(“newsID”=>”007”, “newsTitle”=>”第7條新聞”);
$array[]= array(“newsID”=>”008”, “newsTitle”=>”第8條新聞”);
$smarty->assign(“News”, $array);

$smarty->display(“example4.tpl”);
?>
smarty實例教學(4)

==================================================
example4.php輸出:
==================================================
<html>
<head><title>模板中的流程控制</title><head>
<body>
<table border=”1″>

<tr bgcolor=”#D4D0C8″>

<td>001</td>
<td>第1條新聞</td>
</tr>
<tr bgcolor = “#EEEEEE”>

<td>002</td>
<td>第2條新聞</td>
</tr>
<tr bgcolor=”#D4D0C8″>

<td>003</td>
<td>第3條新聞</td>
</tr>
<tr bgcolor = “#EEEEEE”>

<td>004</td>
<td>第4條新聞</td>
</tr>
<tr bgcolor=”#D4D0C8″>

<td>005</td>
<td>第5條新聞</td>
</tr>
<tr bgcolor = “#EEEEEE”>

<td>006</td>
<td>第6條新聞</td>
</tr>
<tr bgcolor=”#D4D0C8″>

<td>007</td>
<td>第7條新聞</td>
</tr>
<tr bgcolor = “#EEEEEE”>

<td>008</td>
<td>第8條新聞</td>
</tr>
</table>
</body>
</html>

模板檔案中使用:
{if $tbColor == “#D4D0C8″}
<tr bgcolor=”{$tbColor}”>
{assign var=”tbColor” value=”#EEEEEE”}
{else $tbColor == “#EEEEEE”}
<tr bgcolor = “{$tbColor}”>
{assign var=”tbColor” value=”#D4D0C8″}
{/if}
這一語法塊進行設定每一行的背景顏色, {assign var=”tbColor” value=”#D4D0C8″}還記的吧,是例3中設定模板內部變數的定義方法,
使用模板內置 的流程控制語法有時可以極大程度上提高程式的控制能力,下面一個範例是phpx.com中曾經有位朋友問過的,我將它作為
實例放在這裡供大家學習.

例5: 使用模板內置流程控制語法進行一行多單元格內容輸出, 也就是在視覺上smarty每記輸出幾條記錄:
================================================
example5.tpl
================================================
<html>
<head><title>一行輸出多筆記錄</title></head>
<body>
<table>
<tr>
{section name=loop loop=$News step=1}
{if $smarty.section.loop.index % 4 == 0}
</tr>
<tr>
{/if}
<td>{$News[loop].newsID}</td>
<td>{$News[loop].newsTitle}</td>
{/section}
</tr>
</table>
</body>
</html>
====================================================
example5.php
====================================================
<?php

require_once (“./public/inc/F117_Smarty.php”);

$smarty = new F117_Smarty;
$smarty->template_dir = ”./templates/”;
$smarty->compile_dir = ”./templates_c/”;
$smarty->config_dir = ”./configs/”;
$smarty->cache_dir = ”./cache/”;
$smarty->caching = false;

$array[]= array(“newsID”=>”001”, “newsTitle”=>”第1條新聞”);
$array[]= array(“newsID”=>”002”, “newsTitle”=>”第2條新聞”);
$array[]= array(“newsID”=>”003”, “newsTitle”=>”第3條新聞”);
$array[]= array(“newsID”=>”004”, “newsTitle”=>”第4條新聞”);
$array[]= array(“newsID”=>”005”, “newsTitle”=>”第5條新聞”);
$array[]= array(“newsID”=>”006”, “newsTitle”=>”第6條新聞”);
$array[]= array(“newsID”=>”007”, “newsTitle”=>”第7條新聞”);
$array[]= array(“newsID”=>”008”, “newsTitle”=>”第8條新聞”);
$smarty->assign(“News”, $array);

$smarty->display(“example5.tpl”);
?>

==================================================
example5.php輸出內容:
==================================================
<html>
<head><title>一行輸出多筆記錄</title></head>
<body>
<table>
<tr>

</tr>
<tr>
<td>001</td>
<td>第1條新聞</td>

<td>002</td>
<td>第2條新聞</td>

<td>003</td>
<td>第3條新聞</td>

<td>004</td>
<td>第4條新聞</td>

</tr>
<tr>
<td>005</td>
<td>第5條新聞</td>

<td>006</td>
<td>第6條新聞</td>

<td>007</td>
<td>第7條新聞</td>

<td>008</td>
<td>第8條新聞</td>
</tr>
</table>
</body>
</html>

說明:本來還可以優化,使得第一行不輸出一個空行的<tr> </tr>,但是學習程式,簡單為好,先就這麼用了. 在這裡說明一下:
{section name=loop loop=$News step=1}
{if $smarty.section.loop.index % 4 == 0}
</tr>
<tr>
{/if}
<td>{$News[loop].newsID}</td>
<td>{$News[loop].newsTitle}</td>
{/section}

{section}{/section}指的是一個循環部分,在下一節會有詳細的介紹,我們主要來看看這一句:
{if $smarty.section.loop.index % 4 == 0}
$smarty.section.loop指出$smarty的實例中的section段有一個叫loop的部分, 它有一個屬性叫index, 它的表示目前循環的索引值,
從0開始遞增, 我們把它%4後與0相比較,也就是說,如果目前的索引值是4的倍數,它就輸出一個</tr><tr>,否則執行下面的部分,
很簡單的就解決了一個在程式上實現起來很麻煩的事情.

網頁設計~mysql教學

 網頁設計~mysql教學

各位親愛的朋友

這次網頁設計技術來分享mysql教學,如果您網頁設計常用php+mysql

就會遇到下面問題…

一、帳號與權限

設定 root 和其他 user 的密碼

  • mysqladmin -u root password ‘新密碼’
  • mysqladmin -u root -p
  • Enter password:    此時再輸入密碼(建議採用)
  • use mysql;mysql> UPDATE user SET password=password(‘新密碼’) where user=’root’; 只改 root 的密碼,如果沒有用 where ,則表示改全部 user 的密碼
  • mysql> FLUSH PRIVILEGES; 在 mysql 資料庫內,一定要用 flush 更新記憶體上的資料

刪除空帳號

  • mysql> DELETE FROM user WHERE User = ”;
  • mysql> FLUSH PRIVILEGES;

建立新帳號

  • mysql> GRANT 權限 ON 資料庫或資料表 TO 使用者 IDENTIFIED BY ‘密碼’;權限資料庫或資料表*.* 所有資料庫裡的所有資料表

    * 預設資料庫裡的所有資料表

    資料庫.* 某一資料庫裡的所有資料表   

    資料庫.資料表 某一資料庫裡的特定資料表

    資料表  預設資料庫裡的某一資料表

設定/修改權限  

  • 用 root 登入 MySQLmysqladmin -u root -pEnter password:   
  • mysql> GRANT all ON db35.* TO s35@’localhost’ IDENTIFIED BY ‘s35’;把 db35 這個資料庫(含其下的所有資料表),授權給 s35,從 localhost 上來,密碼為s35
  • mysql> GRANT all ON *.* 把所有資料庫及資料表授權給別人,太危險了!
  • mysql> GRANT all??? ON www.* TO ‘*’@’*’ IDENTIFIED BY ”;把 www 這個資料庫(含其下的所有資料表),授權給 任何機器任何人,無密碼(通常給不特定人士使用)
  • mysql> FLUSH PRIVILEGES;   (最後一定要強迫更新權限)

二、資料庫/資料表/欄位的操作

建立資料庫 CREATE DATABASE 資料庫名;

語法:CREATE DATABASE db_name

使用資料庫 USE 資料庫名;

語法:USE db_name

刪除資料庫 DROP DATABASE 資料庫名;

語法:DROP DATABASE [IF EXISTS] db_name

建立資料表

CREATE TABLE 資料表名 (欄位1 資料型態, 欄位2 資料型態, ……);

語法:

CREATE TABLE [IF NOT EXISTS] tbl_name (create_definition,…) [table_options] [select_statement]

例:

craete database basic;

use basic;

create table basic(

no char(4)

name char(10)

id char(10));

create_definition:

col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]

[PRIMARY KEY] [reference_definition]

or    PRIMARY KEY (index_col_name,…)

or    KEY [index_name] KEY(index_col_name,…)

or    INDEX [index_name] (index_col_name,…)

or    UNIQUE [INDEX] [index_name] (index_col_name,…)

or    [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,…)

[reference_definition]

or    CHECK (expr)

資料結構(type):

資料型態 說明
TINYINT 有符號的範圍是-128到127,無符號的範圍是0到255。
SMALLINT 有符號的範圍是-32768到32767,無符號的範圍是0到65535。
MEDIUMINT 有符號的範圍是-8388608到8388607,無符號的範圍是0到16777215。
INT 有符號的範圍是-2147483648到2147483647,無符號的範圍是0到4294967295。
INTEGER INT的同義詞。
BIGINT 有符號的範圍是-9223372036854775808到 9223372036854775807,無符號的範圍是0到18446744073709551615。
FLOAT 單精密浮點數字。不能無符號。允許的值是-3.402823466E+38到- 1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。
DOUBLE 雙精密)浮點數字。不能無符號。允許的值是- 1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308。
DOUBLE PRECISION DOUBLE的同義詞。
REAL DOUBLE的同義詞。
DECIMAL DECIMAL值的最大範圍與DOUBLE相同。
NUMERIC DECIMAL的同義詞。
DATE 日期。支援的範圍是’1000-01-01’到’9999-12-31’。
DATETIME 日期和時間組合。支援的範圍是’1000-01-01 00:00:00’到’9999-12-31 23:59:59′
TIMESTAMP 時間戳記。範圍是’1970-01-01 00:00:00’到2037年的某時。
TIME 一個時間。範圍是’-838:59:59’到’838:59:59’。
YEAR 2或4位數字格式的年(內定是4位)。允許的值是1901到2155。
CHAR 固定長度,1 ~ 255個字元。
VARCHAR 可變長度,1 ~ 255個字元。
TINYBLOB
 
TINYTEXT 最大長度為255(2^8-1)個字符。
MEDIUMBLOB
 
MEDIUMTEXT 最大長度為16777215(2^24-1)個字符。
LONGBLOB
 
LONGTEXT 最大長度為4294967295(2^32-1)個字符。
ENUM 一個ENUM最多能有65535不同的值。  
SET 一個SET最多能有64個成員。

index_col_name:

col_name [(length)]

reference_definition:

REFERENCES tbl_name [(index_col_name,…)]

[MATCH FULL | MATCH PARTIAL]

[ON DELETE reference_option]

[ON UPDATE reference_option]

reference_option:

RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT

table_options:

type = [ISAM | MYISAM | HEAP]

or      max_rows = #

or      min_rows = #

or      avg_row_length = #

or      comment = “string”

or      auto_increment = #

select_statement:

[ | IGNORE | REPLACE] SELECT …  (Some legal select statement)

刪除資料表 DROP TABLE 資料表名;

語法:DROP TABLE [IF EXISTS] tbl_name [, tbl_name,…]

改變資料表結構(新增/刪除欄位、建立/取消索引、改變欄位資料型態、欄位重新命名)

語法:

ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec …]

alter_specification:

ADD [COLUMN] create_definition [FIRST | AFTER column_name ]

or    ADD INDEX [index_name] (index_col_name,…)

or    ADD PRIMARY KEY (index_col_name,…)

or    ADD UNIQUE [index_name] (index_col_name,…)

or    ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

or    CHANGE [COLUMN] old_col_name create_definition

or    MODIFY [COLUMN] create_definition

or    DROP [COLUMN] col_name

or    DROP PRIMARY KEY

or    DROP INDEX key_name

or    RENAME [AS] new_tbl_name

or    table_option

範例:

欄位重新命名

mysql > ALTER TABLE t1 CHANGE a b INTEGER;

將資料表 t1 欄位 a 改名為 b (其資料型態是 integer)

改變欄位資料型態

mysql > ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;

mysql > ALTER TABLE t1 MODIFY b BIGINT NOT NULL;

將資料表 t1 欄位 b 的資料型態改為 bigint not null 

 mysql> CREATE TABLE t1 (a INTEGER,b CHAR(10)); 

mysql > ALTER TABLE t1 RENAME t2;

將資料表 t1 改名為 t2

mysql > ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);

將資料表 t2 欄位 a 資料型態由 integer 改為 tinyint not null ,欄位 b 改名為 c 資料型態改為 char(20)

mysql > ALTER TABLE t2 ADD d TIMESTAMP;

在資料表 t2 增加新欄位 d 資料型態是 timestamp

mysql > ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);

在資料表 t2 ,對 d 欄位做索引,並以欄位 a 作為主索引鍵

mysql > ALTER TABLE t2 DROP COLUMN c;

刪除欄位 c

mysql > ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD INDEX (c);

新增欄位 c,並做索引(做索引的欄位必須為 not null )

資料表最佳化 OPTIMIZE TABLE 資料表名

語法:OPTIMIZE TABLE tbl_name

欄位長度有變動、刪除大量資料,都應進行資料表最佳化

三、紀錄的操作

插入一筆或多筆紀錄 INSERT INTO 資料表(欄位1,欄位2,……) VALUES(值1,值2,……), (值1,值2,……), ……..

(MySQL 3.22.5 以後可插入多筆記錄)

語法:

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

[INTO] tbl_name [(col_name,…)]

VALUES (expression,…),(…),…

or  INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

[INTO] tbl_name [(col_name,…)]

SELECT …

or  INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

[INTO] tbl_name

SET col_name=expression, col_name=expression, …

範例:

mysql > INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);

不可寫成

mysql > INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);

因為:欄位 col1 的值先填入後,才可以計算欄位 col2

從檔案讀入資料

語法:

LOAD DATA [LOCAL] INFILE ‘file_name.txt’ [REPLACE | IGNORE]

INTO TABLE tbl_name

[FIELDS

[TERMINATED BY ‘\t’]    每一欄位以某字元分開(內定是 tab)

[OPTIONALLY] ENCLOSED BY “]   每一欄位以某字元括住(內定是不使用括號)

[ESCAPED BY ‘\\’ ]]     

[LINES TERMINATED BY ‘\n’]  設定換行的字元(內定是 \n)

[IGNORE number LINES]    忽略最前面幾行(最前面幾筆記錄不抄進來)

[(col_name,…)]

範例:

mysql > USE db1;

mysql > LOAD DATA INFILE “./data.txt” INTO TABLE db2.my_table;

從目前 MySQL 目錄讀入 data.txt

mysql > LOAD DATA INFILE “./88.txt” INTO TABLE TEACHER FIELDS TERMINATED BY ‘ ‘ ;

從目前 MySQL 目錄(我的在 /var/lib/mysql )讀入 data.txt ,每一欄位以 空白 分開

mysql > LOAD DATA INFILE ‘persondata.txt’ INTO TABLE persondata (col1,col2,…);

只將 persondata.txt 裡某些欄位的資料抓過來 

刪除紀錄 DELETE [LOW-PRIORITY] FROM 資料表名 WHERE 條件 [LIMIT rows]

語法:

DELETE [LOW_PRIORITY] FROM tbl_name

[WHERE where_definition] [LIMIT rows]

LOW-PRIORITY 是等到沒有用戶端使用時再刪

LIMIT rows 限制刪除紀錄的筆數

範例:

mysql > DELETE FROM 資料表名;

刪除所有紀錄

mysql > DELETE FROM 資料表名 WHERE 1>0;

刪除所有紀錄,但速度較慢,方便在螢幕上看

更新一筆紀錄 (語法與 INSERT 相同)

REPLACE INTO 資料表(欄位1,欄位2,……) VALUES(值1,值2,……)

語法:

REPLACE [LOW_PRIORITY | DELAYED]

[INTO] tbl_name [(col_name,…)]

VALUES (expression,…)

or  REPLACE [LOW_PRIORITY | DELAYED]

[INTO] tbl_name [(col_name,…)]

SELECT …

or  REPLACE [LOW_PRIORITY | DELAYED]

[INTO] tbl_name

SET col_name=expression, col_name=expression,…

更新多筆紀錄

語法:

UPDATE [LOW_PRIORITY] tbl_name SET col_name1=expr1,col_name2=expr2,…     [WHERE where_definition]

如果沒有設定 WHERE 條件,則整個資料表相關的欄位都更新

範例:

mysql > UPDATE persondata SET age=age+1;

將資料表 persondata 中,所有 age 欄位都加 1

mysql > UPDATE persondata SET age=age*2, age=age+1;

將資料表 persondata 中,所有 age 欄位都*2,再加 1

四、資料的輸出

SELECT

語法:

SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [DISTINCT | ALL]

select_expression,…

[INTO OUTFILE ‘file_name’ export_options]

[FROM table_references

[WHERE where_definition]

[GROUP BY col_name,…]

[HAVING where_definition]

[ORDER BY {unsigned_integer | col_name} [ASC | DESC] ,…]

[LIMIT [offset,] rows]

[PROCEDURE procedure_name] ]

範例:

排序輸出select * from 資料表名 order by 欄位名1,欄位名2,欄位名3…… 

 

反向排序輸出 select * from 資料表名 order by 欄位名1,欄位名2,欄位名3…… desc

 

mysql> select concat(last_name,’, ‘,first_name) AS full_name 

from mytable ORDER BY full_name;

mysql > select t1.name, t2.salary from employee AS t1, info AS t2

where t1.name = t2.name;

顯示資料庫 employee(別名 t1) 裡,資料表 t1 的欄位 name 和 資料表 t2 的欄位 salary 當…..

mysql > select t1.name, t2.salary from employee t1, info t2           where t1.name = t2.name;

mysql > select college, region, seed from tournament

ORDER BY region, seed;

mysql > select college, region AS r, seed AS s from tournament

ORDER BY r, s;

mysql > select college, region, seed from tournament

ORDER BY 2, 3;

mysql > select col_name from tbl_name HAVING col_name > 0;

mysql > select col_name from tbl_name WHERE col_name > 0;

mysql > select user,max(salary) from users

group by user HAVING max(salary) >10;

mysql > select user,max(salary) AS sum from users

group by user HAVING sum >10;

mysql > select * from table LIMIT 5,10;  # Retrieve rows 6-15

mysql > select * from table LIMIT 5;     # Retrieve first 5 rows

  •  

在命令列下進行批次處理:

shell> mysql -h host -u user -p < batch-file

Enter password: ********

Type Bytes From To
TINYINT 1 -128 127
SMALLINT 2 -32768 32767
MEDIUMINT 3 -8388608 8388607
INT 4 -2147483648 2147483647
BIGINT 8 -9223372036854775808 9223372036854775807

 

Column type “Zero” value
DATETIME ‘0000-00-00 00:00:00’
DATE ‘0000-00-00’
TIMESTAMP 00000000000000 (length depends on display size)
TIME ’00:00:00′
YEAR 0000

 

Column type Display format
TIMESTAMP(14) YYYYMMDDHHMMSS
TIMESTAMP(12) YYMMDDHHMMSS
TIMESTAMP(10) YYMMDDHHMM
TIMESTAMP(8) YYYYMMDD
TIMESTAMP(6) YYMMDD
TIMESTAMP(4) YYMM
TIMESTAMP(2) YY

 

Type Max.size Bytes
TINYTEXT or TINYBLOB 2^8-1 255
TEXT or BLOB 2^16-1 (64K-1) 65535
MEDIUMTEXT or MEDIUMBLOB 2^24-1 (16M-1) 16777215
LONGBLOB 2^32-1 (4G-1) 4294967295

 

Value CHAR(4) Storage required VARCHAR(4) Storage required
‘ ‘ 4 bytes 1 byte
‘ab’ ‘ab ‘ 4 bytes ‘ab’ 3 bytes
‘abcd’ ‘abcd’ 4 bytes ‘abcd’ 5 bytes
‘abcdefgh’ ‘abcd’ 4 bytes ‘abcd’ 5 bytes

 

Value Index
NULL NULL
“” 0
“one” 1
“two” 2
“three” 3

 

Other vendor type MySQL type
BINARY(NUM) CHAR(NUM) BINARY
CHAR VARYING(NUM) VARCHAR(NUM)
FLOAT4 FLOAT
FLOAT8 DOUBLE
INT1 TINYINT
INT2 SMALLINT
INT3 MEDIUMINT
INT4 INT
INT8 BIGINT
LONG VARBINARY MEDIUMBLOB
LONG VARCHAR MEDIUMTEXT
MIDDLEINT MEDIUMINT
VARBINARY(NUM) VARCHAR(NUM) BINARY

 

Column type Storage required
TINYINT 1 byte
SMALLINT 2 bytes
MEDIUMINT 3 bytes
INT 4 bytes
INTEGER 4 bytes
BIGINT 8 bytes
FLOAT(X) 4 if X <= 24 or 8 if 25 <= X <= 53
FLOAT 4 bytes
DOUBLE 8 bytes
DOUBLE PRECISION 8 bytes
REAL 8 bytes
DECIMAL(M,D) M+2 bytes if D > 0, M+1 bytes if D = 0 (D+2, if M < D)
NUMERIC(M,D) M+2 bytes if D > 0, M+1 bytes if D = 0 (D+2, if M < D)

 

Column type Storage required
DATE 3 bytes
DATETIME 8 bytes
TIMESTAMP 4 bytes
TIME 3 bytes
YEAR 1 byte

 

Column type Storage required
CHAR(M) M bytes, 1 <= M <= 255
VARCHAR(M) L+1 bytes, where L <= M and 1 <= M <= 255
TINYBLOB, TINYTEXT L+1 bytes, where L < 2^8
BLOB, TEXT L+2 bytes, where L < 2^16
MEDIUMBLOB, MEDIUMTEXT L+3 bytes, where L < 2^24
LONGBLOB, LONGTEXT L+4 bytes, where L < 2^32
ENUM(‘value1′,’value2’,…) 1 or 2 bytes, depending on the number of enumeration values (65535 values maximum)
SET(‘value1′,’value2’,…) 1, 2, 3, 4 or 8 bytes, depending on the number of set members (64 members maximum)

網頁設計大膽狂塗網頁設計分享

網頁設計小技巧~html編輯器設定

網頁設計小技巧~html編輯器設定

pLog 升級到 1.x 後,最大的改變之一應該就是編輯器,
由於目前的設定是 Oscar 決定的,誰叫他是 pLog project lead 呢,
呵呵,所以只好動手來改一下設定:
原本的 1.0.x 版 HtmlArea Toolbat 實在陽春的可以:
不過如果是現在我這個部落格的取向,我覺得還滿好用了,
但是還是會有需要用不同顏色標示重點的時候,
或是需要 Blockquote 來標示重點或程式碼。 

最近先找到了 FireFox 的外掛,可以右鍵叫出 bbcode 選單,
可是不知道為什麼在內文的部分卻沒辦法顯示那個選單,
應該還有東西要改吧?

 

今天在網路上發現了這篇討論,
研究了裡面的說明,將我的改成了現在的樣子:
多了幾個還不錯用的功能,可惜還是沒我想要的 Blockquote,希望之後改版會有。
 

來紀錄一下修改的方法吧:

首先,到 pLog_Dir/js/htmlarea 下,編輯 htmlarea-plog.js 檔案:

大約 3x 和 5x 行處,會發現以下兩段:

postTextEditor.config.toolbar = [
[ “fontsize”, “space”,”space”,
“bold”, “italic”, “underline”, “strikethrough”, “separator”,
“justifyleft”, “justifycenter”, “justifyright”, “justifyfull”, “separator”,
“orderedlist”, “unorderedlist”, “separator”,
“createlink”, “insertimage”, “insertresource”, “htmlmode” ]
];

postExtendedTextEditor.config.toolbar = [
[ “fontsize”, “space”,”space”,
“bold”, “italic”, “underline”, “strikethrough”, “separator”,
“justifyleft”, “justifycenter”, “justifyright”, “justifyfull”, “separator”,
“orderedlist”, “unorderedlist”, “separator”,
“createlink”, “insertimage”, “insertresource”, “htmlmode” ]
];
這兩段決定了你的 Toolbar 的東西。

 

如果想要新增,首先要參考一下 pLog_Dir/js/htmlarea/htmlarea.js 這個文件,
裡面範例了一個完全開啟的版本,該文件如下:

this.toolbar = [
[ “fontname”, “space”,
“fontsize”, “space”,
“formatblock”, “space”,
“bold”, “italic”, “underline”, “strikethrough”, “separator”,
“subscript”, “superscript”, “separator”,
“copy”, “cut”, “paste”, “space”, “undo”, “redo”, “space”, “removeformat”, “killword” ],

[ “justifyleft”, “justifycenter”, “justifyright”, “justifyfull”, “separator”,
“lefttoright”, “righttoleft”, “separator”,
“orderedlist”, “unorderedlist”, “outdent”, “indent”, “separator”,
“forecolor”, “hilitecolor”, “separator”,
“inserthorizontalrule”, “createlink”, “insertimage”, “inserttable”, “htmlmode”, “separator”,
“popupeditor”, “separator”, “showhelp”, “about” ]
];
可以看一下內容,自行決定要加入哪些功能。

 

接著是阿駕自己對上面這段的簡易解釋、備忘:

this.toolbar = [
[ “fontname”, “space”, // 字型選擇 // 空格
“fontsize”, “space”, // 字體大小 // 空格
“formatblock”, “space”, // 字型格式 ( 標題.普通..等等)
“bold”, “italic”, “underline”, “strikethrough”, “separator”, // 粗體..斜體..底線..刪除線.. // 分格線
“subscript”, “superscript”, “separator”, // 上標..下標 // 分格線
“copy”, “cut”, “paste”, // 複製..剪下..貼上
“undo”, “redo”, // 上一步..下一步
“removeformat”, “killword” ], // 移除格式..移除word格式 // 最後的 ], 是用來讓 toobar 分行的

[ “separator”, // 因為前面分行了..記得要再加上一個 [
“justifyleft”, “justifycenter”, “justifyright”, “justifyfull”, // 向左對齊..置中對齊..向右對齊..分散對齊
“lefttoright”, “righttoleft”, “outdent”, “indent”, // 這個好像都是對齊的東西..不知道怎麼解釋
“orderedlist”, “unorderedlist”, “separator”, // 數字..和符號的項目符號
“forecolor”, “hilitecolor”, “separator”, // 字體顏色..背景顏色
“inserthorizontalrule”, “createlink”, “insertimage”, // 加入分格線..建立連結..插入網路上的圖片
“insertresource”, “inserttable”, “htmlmode”, // 插入檔案庫圖片..插入表格..純html編輯器
“popupeditor”, “showhelp”, “about” ] // 全螢幕的大編輯器..不能顯示出來的編輯器help..關於這個編輯器
];

 

如此即可完成。

網頁設計大膽狂塗網頁設計分享

關鍵字排名~提高pr值

關鍵字排名~提高pr值PR值

演算法原理總體上基於下面2個前提

PR值演算法原理總體上基於下面2個前提:

1、一個網頁被多次引用,則它可能是很重要的;
一個網頁雖然沒有被多次引用,但是被重要的網頁引用,則它也可能是很重要的;一個網頁的重要性被平均的傳遞到它所引用的網頁。這種重要的網頁稱為權威(Authoritive)網頁。

2、假定用戶一開始隨機的訪問網頁集合中的一個網頁,然後跟隨網頁的鏈結向前流覽網頁,不回退流覽,那麼流覽下一個網頁的概率就是被流覽網頁的PageRank值
影響PR值的因素
PR值體現為從0到10的11個數值,在Google的工具欄上以一條橫向綠色柱狀圖顯示,0級情況下呈白色。它是針對網頁而不是網站,因此一個網站的首 頁和內頁往往有著迥然不同的PR值。由於Google市場拓展進程的原因,中文網頁的PR值整體上低於英文網頁。對中文網站來說,擁有3級PR是基礎, 4級PR算達標,5級PR可謂良好,而6、7級PR就算相當優秀的網站。當然,由於PR最直接的影響因素是來自鏈結,因此這種評級並不代表內容的級別水 准,網站內容質量對PR的影響是間接的、長期的。根據PR值的演算法原理,可知影響一個網站(首頁)PR值的因素主要包括:

1、網站的導入鏈結質量:
根據前文對高質量導入鏈結的分析,則獲得高PR值需要獲得來自以下網站的鏈結:

◆ 加入搜索引擎分類目錄與已經加入目錄的網站交換鏈結
◆ 獲得來自PR值不低於4並與你的主題相關或互補的網站的鏈結
◆ 你的鏈結出現在流量大、知名度高、頻繁更新的重要網站上(如新聞源)
◆ 與你交換鏈結的網站具有很少導出鏈結
◆ 與內容質量高的網站鏈結(PR值上升潛力大)

2、 導出鏈結數量:
根據PR計算原理,由於”一個網頁的重要性被平均的傳遞到它所引用的網頁”,因此反過來看,一個頁面內過多的導出鏈結將潛在引起該頁PR值的流失。但從內 容的角度看,適當數量的與主題有關聯的導出鏈結給搜索引擎帶來良好的印象。因此,一個頁面,尤其是首頁的導出鏈結數量的把握,應該兼顧到PR值和關鍵字內 容二者之間的平衡,即控制導出鏈結數量,以不超過10個為宜。

3、搜索引擎收錄一個網站的頁面數量
在探討SEO的時候,人們過多關注核心關鍵字排名以及首頁的表現情況,卻往往忽略了一個極其重要的問題:即搜索引擎對一個網站收錄的頁面數量。後者在 SEO中也有著極其重要的意義。一個用核心關鍵字查詢排名不佳的網站,可能由於被抓取大量網頁而在用戶使用其他關鍵字查詢時,內頁獲得前三甲排名。由於用 戶搜索時使用的關鍵字具有分散性,使得這種情況往往給網站帶來極大訪問量。

正因為收錄頁面的數量直接影響訪問量,因此對PR值的影響也是很大的。被收錄頁面越多,主頁PR越高。不過需要強調的是,此處所指的數量是指被收錄數與網 站頁面總數的比值,而不是收錄頁面的絕對數值。比如一個擁有50個頁面的網站被收錄了10個頁面,網站的被收錄比值是1/5,一個擁有5000個頁面的網 站被收錄了500個頁面,比值是1/10,結果是收錄10個頁面比收錄500個頁面的網站還更具排名優勢。但對各個搜索引擎來說,究竟達到多大的比值算是 良好,目前還沒有相關的資料。

附:查詢網站收錄頁面數量:在搜索引擎中輸入:site:www.admin5.com(如果輸入:site:admin5.com,則獲得的是在admin5.com功能變數名稱下所有二級功能變數名稱的網頁數量)。

第一部分:功能變數名稱和主機對SEO的影響
功能變數名稱與主機是網站的基礎,商業網站選擇功能變數名稱與主機尤其應注重形象和質量,為網路營銷開展打好堅實基礎。同時,選擇好功能變數名稱與主機也是搜索引擎優化開始的第一步。

功能變數名稱選擇與SEO
功能變數名稱與IP:每一個網站的功能變數名稱對應一個IP位址,IP 位址是在網路上分配給每台電腦或網路設備的數位標識。功能變數名稱必須經過功能變數名稱伺服器(DNS)進行解析,轉換成數位

網頁設計大膽狂塗網頁設計分享