這個是簡單的實例,這樣的例子很常見,也非常有用。
- g. H! G1 I* C2 w8 f
7 I7 f% N+ y" L比如你有幾個網頁,不同的語言,你完全可以根據客戶端的瀏覽器的語言讓網站自己來切換的相應的語言頁面。; n- f1 A; _1 V' s
# G! w/ V4 l- V6 i- W比如你有一些流量,而你只想在使用英文語言瀏覽器的人才顯示你的廣告。3 r; c5 [3 D% A' T7 y5 e
- l5 F: _9 ~9 {1 [2 l1 }0 ?
比如你只想在特定的語言網頁下面幹一些事,無論好事還是壞事。
# H, J$ p" a+ a* l* X
% |# ?* H3 l4 L. C) D這樣的實例很有用,只要你想得到,就能充分利用。/ ]; Q: [# J9 o3 L9 _. x- V! B& ^! {
% Y; i% R8 T" n% T3 O, Q現在咱們就 Getting Start
; v2 F5 g& {0 t, m
( @8 a" {5 }" c6 S* G分析:我們寫程序,不是一鼓作氣,一步到位的,比如我們要寫這樣的一個程序,我們一定要動腦筋先想這個程序怎麼實現,需要哪些功能。
! d! H. L" P* y4 q& g0 l$ F6 q- U8 D; E3 f! ?' d/ W7 I5 N& d
我們要做的是:通過 '瀏覽器語言' 自動轉換到不同網頁
( e" I% x" o4 x
. b* W) g6 x3 Y1 |5 v! v1. 我們要添加對各種瀏覽器語言的判斷
$ t6 O% ]& \. p/ D2. 自動跳轉到一個網頁的方法/ h; s- {, _ u
+ Y1 y- {) X+ o, n9 y9 g很多人都知道什麼zh-cn,en-us這些,其實這些就是瀏覽器語言的顯著標識符號
9 S3 @$ O3 T' v如果你的瀏覽器語言為簡體中文,你訪問的網站會檢測到你的瀏覽器語言標識符為zh-cn
. \2 M2 d- \* k- U: W如果你的瀏覽器語言為美國英語,你訪問的網站會檢測到你的瀏覽器語言標識符為en-us3 O( g: q) u( M9 m# }$ d+ d7 `8 h
....5 Z: ~/ v! ]% i8 L0 Q: V/ _$ N
* m8 @. W7 u" ^3 B& K
如果你對瀏覽器的語言知識不懂,你自己該去搜索引擎補習一下0 n c0 a0 P, }! _3 }: q
: U8 g0 d- |2 T' G: }8 S7 J6 c
我們來寫對各種瀏覽器語言的判斷的功能
G* A$ P1 y. P A/ ^
; W1 D& ~. _' D% Q1 m$ h$ A2 Y) v# @寫法:; Z# R) w7 A/ v. Y* F, G
% \* R5 ?: x* r' H" c
<?; o) R) `/ Y, d' v
switch ($_SERVER['HTTP_ACCEPT_LANGUAGE']) {
$ F# o9 d) T3 W5 W( s case 'zh-cn':0 Y1 Z6 V- F; Y) `) M9 W( \* j
break;
' s2 _/ B4 s3 M6 D m: o3 c2 K1 | case 'zh-tw':& ~9 ~ J8 P! K x: L+ \
break;) ?0 J$ j6 X% g
case 'en-us':& B/ K7 l3 K5 U% E' d9 v2 h" [! ~
break;3 s9 J' t9 v6 x- x, f' h3 t
default:; V3 Z& L) O) @
}
' t% _$ Q1 g9 @ T @?>
$ I) ^" P* j" y% ]1 x" {
% p$ [+ B# U3 Q9 ~7 Dswitch我們前面的課講了,就是根據一個值來判斷,switch裡面的default的意思是,如果其他的case都不成立,就會執行default下面的語句,$_SERVER['HTTP_ACCEPT_LANGUAGE']是一個系統自帶的變量,詳見PHP手冊->變量->預定義變量,既然PHP可以自己帶自己的函數比如echo,switch,那麼為什麼PHP不能帶自己的變量呢。不要把$_SERVER這樣的變量想的太複雜的,總之你記住,這個變量可以得到瀏覽器的語言標識符。% u* K. X% ]9 ?# n1 K. b
& c$ U' t( k8 P' S; u! wswitch通過$_SERVER['HTTP_ACCEPT_LANGUAGE']得到當前瀏覽器的語言,是一個字符串,然後: ]9 e4 }, @, k3 B% ?# J7 ^4 _
如果是簡體中文,會執行case 'zh-cn':
5 F$ H" b0 y' ?, g" v7 m. \如果是繁體中文,會執行case 'zh-tw':. ?# e- D- \+ U/ N# u( f
如果是美國英語,會執行case 'en-us':
+ b( f; H0 F% d/ ?
- J' j U, b g* M這樣,我們通過瀏覽器本身的語言,來執行指定的語句,這樣的功能不就完成了嗎。9 G8 Q5 L7 X+ r8 p$ v; z5 q- [
( a* [9 `$ }+ t- b( i下面我們來寫跳轉語句6 Z, @/ |& d. {' Y
' k# d# ~/ s& T( I. `, i
PHP的跳轉到一個網頁的語句很簡單,可以用一個函數header2 a5 W/ }+ N* G# t" [# F) W
4 n% _5 ?; V3 ^! z" K/ C, M$ iheader的具體用法,自己查PHP手冊,我前面說了,PHP有上千的系統自帶函數,在我們的實例教程中,會不斷的出來新的函數,熟悉就對了,我是不可能把上千的函數都拿出來講的,那樣不如你去書店買本書來看更實用,學PHP就等於是學怎麼用它自己帶的函數來組合成各種各樣的功能。
! ^# i5 ]' d% W
1 h% |/ O) ~+ n# M9 N<?
- D0 c! L/ ^$ U- gswitch ($_SERVER['HTTP_ACCEPT_LANGUAGE']) {4 L1 G- d ~- |0 D7 b( X! E; z W( ^
case 'zh-cn':0 t( U8 _% |5 [, d( `
header("Location: http://www.advertcn.com/");
# h2 [( g E" O/ B break;: J& E6 }% R) ?
case 'zh-tw':* W5 P5 l& B; W5 T- m; R) Y7 ^" a
header("Location: http://www.luosuo.net/old/");
1 J5 s! V4 C' w6 a break;1 ?6 Q) ]: G' k) J. K# h& @* M* J0 H2 e
case 'en-us':0 n" s1 g- }& @, M) }4 j7 w: r* \) F3 }
header("Location: http://www.microsoftes.com/");
( v- Z5 @- G0 ^8 V4 N1 e5 F break;( k2 j/ P6 q- g) k
default:
q( J3 q, P% T: W! @( J) ? header("Location: http://www.baidu.com/");3 U! \; X/ z# f* L0 ^8 N* @
}. f# }' O* x% i1 U w- v
?>" v( ?# `+ m. w/ w' k& v& _# d
) V5 h- e7 X1 C5 J8 `3 |6 l這樣,
) q* E5 \+ Y$ _" |2 L7 o( Z當瀏覽器為簡體中文,打開php網頁的時候,網頁會被自動定向到advertcn.com" _" ]0 I/ c2 b1 v3 \
當瀏覽器為繁體中文,打開php網頁的時候,網頁會被自動定向到luosuo.net/old2 c( [0 p/ ^" V* D0 [, f" l( V
當瀏覽器為美國英語,打開php網頁的時候,網頁會被自動定向到microsofts.com! V- x( I# A3 c+ `. n3 R4 m
當瀏覽器的語言以上3種都不是的時候,就會轉向到baidu.com2 y' Q. ?+ u8 |2 _! m) v2 g/ ^1 J9 s
. l6 x$ D7 ]/ n; j5 A3 Fheader有很多用途,其中最重要的就是重定向,要記住了。4 X& W+ n6 i0 ]$ C; |0 {8 o
- e2 X, H" ~ Y# V/ ?注意:很多瀏覽器,表面上可以切換很多語言,但是你通過附件的2.php測試,就知道,其實這些瀏覽器換了不同的語言,但是始終發送給服務器的是zh-cn,表面語言換了,但是發送的核心沒有變,這就是為什麼有人作弊要失敗的原因之一,如果你要測試本課程序,請使用一個簡體中文瀏覽器,在使用一個真正的繁體中文瀏覽器,最後在使用一個真正的英文瀏覽器,而不要使用切換語言的這種,漢化過來的瀏覽器也不行,因為表面漢化了,但是瀏覽器發送給服務器的語言還是原始瀏覽器語言
4 d# Q/ w0 t' T* n1 Z& r0 F5 b0 s# b
本課完 |
|