|
PHP入门必读(32) <?php function display_cheese() { global $PHP_SELF; global $name; ?> <FORM TARGET="<?php echo $PHP_SELF; ?>" METHOD=GET> Favorite Cheese: <INPUT TYPE=RADIO NAME="cheese" VALUE="brie">Very soft French Brie <INPUT TYPE=RADIO NAME="cheese" VALUE="cheddar">Farmhouse English Cheddar <INPUT TYPE=RADIO NAME="cheese" VALUE="mozzarella">Italian Buffalo MozzarellaFavorite Times to Eat Cheese: <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="m">Morning <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="n">Noon <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="d">Dinner <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="l">Late night <INPUT TYPE=HIDDEN NAME="name" VALUE="<?php echo htmlspecialchars($name); ?>"> <INPUT TYPE=HIDDEN NAME="stage" VALUE="results"> <INPUT TYPE=SUBMIT VALUE="Thanks!"> </FORM> <?php } ?> 以上的程式碼看起來應該非常熟悉。除了我們在印出隱藏的 stage 以前,先印出上一頁 $name 變數的名稱跟內含的值之外,我們並沒有做任何你預期不到的修改。我們並沒有直接把值印出來,而是透過一個叫做 htmlspecialchars() 的 PHP 函數。在 HTML 程式碼中,有四個字元除了當作標記(markup)用之外,在其他地方是不應該被使用的:<, >,", 以及 &。因此,為了確保我們不會使得網頁瀏覽器昏頭轉向,我們透過 htmlspecialchars() 使用 $name 變數。如此一來,某個人的名字誤為 "Bret & Jeff" 就會是 "Brett & Jeff" 了。 現在,當這個新表單傳送出去時,我們不會漏失任何資訊。 透過以上技巧,我們不必更改原來 process_form() 函數的一字一句。事實上,我們還會保持函數名稱不變。我們只須加上一行邏輯敘述。
|