站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        @PHP變量詳解(5)

        PHP 中一個美元符號后面跟上一個變量名稱,即表示一個變量。變量的名稱是對大小寫敏感的。變量名與 PHP 中其它的標(biāo)簽一樣遵循相同的規(guī)則。一個有效的變量名由字母或者下劃線開頭,后面跟上任意數(shù)量的字母,數(shù)字,或者下劃線。按照正常的正則表達(dá)式,它將被表述 為:'[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*’

        AD:

        PHP 的外部變量

        HTML 表單(GET 和 POST)

        當(dāng)一個表單體交給 PHP 腳本時,表單中的信息會自動在腳本中可用。有很多方法訪問此信息,例如:

        一個簡單的 HTML 表單

                                         
        <form action="foo.php" method="POST">     Name:  <input type="text" name="username"><br>     Email: <input type="text" name="email"><br>     <input type="submit" name="submit" value="Submit me!"> </form>
         

        根據(jù)特定的設(shè)置和個人的喜好,有很多種方法訪問 HTML 表單中的數(shù)據(jù)。例如:

        從一個簡單的 POST HTML 表單訪問數(shù)據(jù)

         
        <?php // 自 PHP 4.1.0 起可用     print $_POST['username'];    print $_REQUEST['username'];     import_request_variables('p', 'p_');    print $p_username;  // 自 PHP 3 起可用。自 PHP 5.0.0 起,這些較長的預(yù)定義變量 // 可用 register_long_arrays 指令關(guān)閉。     print $HTTP_POST_VARS['username'];  // 如果 PHP 指令 register_globals = on 時可用。不過自 // PHP 4.2.0 起默認(rèn)值為 register_globals = off。 // 不提倡使用/依賴此種方法。     print $username; ?>
         

        使用 GET 表單也類似,只不過要用適當(dāng)?shù)?GET 預(yù)定義變量。GET 也適用于 QUERY_STRING(URL 中在“?”之后的信息)。因此,舉例說,http://www.example.com/test.php?id=3 包含有可用 $_GET[‘id’] 訪問的 GET 數(shù)據(jù)。參見 $_REQUEST 和 import_request_variables()。

        注: 超全局變量數(shù)組,和 $_POST 以及 $_GET 一樣,自 PHP 4.1.0 起可用。

        如同所示,在 PHP 4.2.0 之前 register_globals 的默認(rèn)值是 on。在 PHP 3 中其值總是 on。PHP 社區(qū)鼓勵大家不要依賴此指令,建議在編碼時假定其為 off。

        注: magic_quotes_gpc 配置指令影響到 Get,Post 和 Cookie 的值。如果打開,值 (It’s “PHP!”) 會自動轉(zhuǎn)換成 (It’s “PHP!”)。數(shù)據(jù)庫的插入就需要轉(zhuǎn)義。參見 addslashes(),stripslashes() 和 magic_quotes_sybase。

        PHP 也懂得表單變量上下文中的數(shù)組(參見相關(guān)常見問題)。例如可以將相關(guān)的變量編成組,或者用此特性從多選輸入框中取得值。例如,將一個表單 POST 給自己并在提交時顯示數(shù)據(jù):

        更復(fù)雜的表單變量

                                         
        <?php if (isset($_POST['action']) && $_POST['action'] == 'submitted') { print '<pre>'; print_r($_POST); print '<a href="'. $_SERVER['PHP_SELF'] .'">Please try again</a>'; print '</pre>'; } else { ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> Name:  <input type="text" name="personal[name]"><br> Email: <input type="text" name="personal[email]"><br> Beer: <br> <select multiple name="beer[]">     <option value="warthog">Warthog</option>     <option value="guinness">Guinness</option>     <option value="stuttgarter">Stuttgarter Schwabenbr漉</option> </select><br> <input type="hidden" name="action" value="submitted"> <input type="submit" name="submit" value="submit me!"> </form> <?php } ?>

         

        在 PHP 3 中,變量使用中的數(shù)組僅限于一維數(shù)組。在 PHP 4 中,沒有此種限制。

        IMAGE SUBMIT 變量名

        當(dāng)提交表單時,可以用一幅圖像代替標(biāo)準(zhǔn)的提交按鈕,用類似這樣的標(biāo)記:

         
        <input type="image" src="image.gif" name="sub">
         

        當(dāng)用戶點擊到圖像中的某處時,相應(yīng)的表單會被傳送到服務(wù)器,并加上兩個變量 sub_x 和 sub_y。它們包含了用戶點擊圖像的坐標(biāo)。有經(jīng)驗的用戶可能會注意到被瀏覽器發(fā)送的實際變量名包含的是一個點而不是下劃線,但 PHP 自動將點轉(zhuǎn)換成了下劃線。

        HTTP Cookies

        PHP 透明地支持 Netscape 規(guī)范定義中的 HTTP cookies。Cookies 是一種在遠(yuǎn)端瀏覽器端存儲數(shù)據(jù)并能追蹤或識別再次訪問的用戶的機制??梢杂?setcookie() 函數(shù)設(shè)定 cookies。Cookies 是 HTTP 信息頭中的一部分,因此 SetCookie 函數(shù)必須在向瀏覽器發(fā)送任何輸出之前調(diào)用。對于 header() 函數(shù)也有同樣的限制。Cookie 數(shù)據(jù)會在相應(yīng)的 cookie 數(shù)據(jù)數(shù)組中可用,例如 $_COOKIE,$HTTP_COOKIE_VARS 和 $_REQUEST。更多細(xì)節(jié)和例子見 setcookie() 手冊頁面。

        如果要將多個值賦給一個 cookie 變量,必須將其賦成數(shù)組。例如:

        <?php   setcookie("MyCookie[foo]", "Testing 1", time()+3600);   setcookie("MyCookie[bar]", "Testing 2", time()+3600); ?> 

        這將會建立兩個單獨的 cookie,盡管 MyCookie 在腳本中是一個單一的數(shù)組。如果想在僅僅一個 cookie 中設(shè)定多個值,考慮先在值上使用 serialize() 或 explode()。

        注意在瀏覽器中一個 cookie 會替換掉上一個同名的 cookie,除非路徑或者域不同。因此對于購物框程序可以保留一個計數(shù)器并一起傳遞。

        一個 setcookie() 的示例

        <?php if (isset($_COOKIE['count'])) {    $count = $_COOKIE['count'] + 1; } else {    $count = 1; } setcookie("count", $count, time()+3600); setcookie("Cart[$count]", $item, time()+3600); ?> 

        變量名中的點

        通常,PHP 不會改變傳遞給腳本中的變量名。然而應(yīng)該注意到點(dot,period,full stop)不是 PHP 變量名中的合法字符。至于原因,看看: 

        <?php $varname.ext;  /* 非法變量名 */ ?>  

        這時,解析器看到是一個名為 $varname 的變量,后面跟著一個字符串連接運算符,后面跟著一個裸字符串(例如沒有加引號的字符串,且不匹配任何已知的健名或保留字)’ext’。很明顯這不是想要的結(jié)果。

        出于此原因,要注意 PHP 將會自動將變量名中的點替換成下劃線。

        確定變量類型

        因為 PHP 會判斷變量類型并在需要時進(jìn)行轉(zhuǎn)換(通常情況下),因此在某一時刻給定的變量是何種類型并不明顯。PHP 包括幾個函數(shù)可以判斷變量的類型,例如:gettype(),is_array(),is_float(),is_int(),is_object() 和 is_string()。參見類型一章。

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 久久精品国产亚洲av麻豆小说| 99精品国产自在现线观看| 亚洲AV无码成人精品区在线观看| 99久久国产主播综合精品| 精品9E精品视频在线观看| 无码精品人妻一区| 国产精品成人h片在线| 久久精品男人影院| 500av大全导航精品| 精品人妻码一区二区三区| 亚洲av无码国产精品色午夜字幕 | 99国产精品永久免费视频| 亚洲国产成人精品91久久久 | 亚洲一区无码精品色| 精品欧美一区二区三区久久久| 2024国产精品极品色在线| 国内精品久久久久| 国产精品网站在线观看免费传媒| 亚洲第一极品精品无码久久| 午夜精品一区二区三区在线视| 久久乐国产精品亚洲综合| 精品国产91久久久久久久a | 久久精品九九亚洲精品天堂| 久久国产乱子精品免费女| 久久国产精品成人免费| 日韩精品国产自在久久现线拍| 九九热精品在线| 久久99国产精品99久久| 国产亚洲美女精品久久久久狼| 国产精品一久久香蕉产线看| 精品免费tv久久久久久久| 国产精品爽黄69天堂a| 国产精品一国产精品| 久久91精品国产91久久麻豆| 国产一精品一av一免费爽爽| 久久精品国产一区| 国产精品va久久久久久久| 国产在线精品一区二区夜色| 久久久无码精品亚洲日韩软件| 亚欧洲精品在线视频免费观看 | 无码国产乱人伦偷精品视频|