Board logo

標題: 5-2-3 表單與網址資訊 [打印本頁]

作者: 小誌    時間: 2011-4-19 09:24     標題: 5-2-3 表單與網址資訊

5-2-3   表單與網址資訊
表單所傳送的資料可以透過「$_REQUEST[“參數名稱”」環境變數來讀取,至於資料的傳遞方式則可使用「$_SERVER["REQUEST_METHOD"]」環境變數來讀取:(範例go3.php配合message3.htm)
go3.php
  1. <?
  2. $name=$_REQUEST["name"];
  3. $email=$_REQUEST["email"];
  4. $memo=$_REQUEST["memo"];
  5. if ($name=="" || $email=="" || $memo=="")
  6. {
  7.   echo "姓名或email或留言,任何一欄位不可為空白,請重新輸入";
  8. }
  9. else
  10. {
  11.   $memo=nl2br($memo);
  12. ?>
  13. <html>
  14. <body>
  15. <table border=1>
  16. <tr>
  17. <td>留言者:<?echo $name?></td><td>Email:<?echo  $email?></td>
  18. </tr>
  19. <tr bgcolor=#ffffcc><td colspan=2><?echo $memo?></td>
  20. </tr>
  21. <tr>
  22. <td colspan=2>傳送方式:<?echo $_SERVER["REQUEST_METHOD"]?></td>
  23. </tr>
  24. <tr>
  25. <td colspan=2>傳送資料:<?echo $_SERVER["QUERY_STRING"]?></td>
  26. </tr>
  27. </table>
  28. </body>
  29. </html>
  30. <?
  31. }
  32. ?>
複製代碼
請注意:只有在表單傳送方式為「Get」時,「QUERY_STRING」環境變數才有資料值!
[attach]5516[/attach]
圖5-11  範例go3.php配合message3.htm。



提示!!在圖5-11中您是否發現「QUERY_STRING」環境變數的資料值並非我們所輸入的文字?而是:
「name=%B7%A4p%BBx&email=Charles....」,參數名稱沒錯,但是參數值的部分只要是中文的內容卻都不一樣了,這是因為中文的部分在資料傳送過程中經過轉譯之故,不過這並不影響程式的正確性。
作者: 小誌    時間: 2011-4-19 09:25

而表單傳送的資料量大小則可以透過「CONTENT_LENGTH」環境變數來取得,「CONTENT_LENGTH」環境變數只有在表單資料傳送方式為「Post」時,「CONTENT_LENGTH」環境變數才能顯示正確的傳送資料量大小:(範例go4.php配合message4.htm)
[attach]5517[/attach]
圖5-12  範例go4.php配合message4.htm。
go4.php
  1. <?
  2. $name=$_REQUEST["name"];
  3. $email=$_REQUEST["email"];
  4. $memo=$_REQUEST["memo"];
  5. if ($name=="" || $email=="" || $memo=="")
  6. {
  7.   echo "姓名或email或留言,任何一欄位不可為空白,請重新輸入";
  8. }
  9. else
  10. {
  11.   $memo=nl2br($memo);
  12. ?>
  13. <html>
  14. <body>
  15. <table border=1>
  16. <tr>
  17. <td>留言者:<?echo $name?></td><td>Email:<?echo  $email?></td>
  18. </tr>
  19. <tr bgcolor=#ffffcc><td colspan=2><?echo $memo?></td>
  20. </tr>
  21. <tr>
  22. <td colspan=2>傳送方式:<?echo $_SERVER["REQUEST_METHOD"]?></td>
  23. </tr>
  24. <tr>
  25. <td colspan=2>傳送資料量:
  26. <?echo $_SERVER["CONTENT_LENGTH"]?></td>
  27. </tr>
  28. </table>
  29. </body>
  30. </html>
  31. <?
  32. }
  33. ?>
複製代碼

作者: 小誌    時間: 2011-4-19 09:27

若表單資料傳送方式為「Get」則「CONTENT_LENGTH」環境變數值為0:
[attach]5518[/attach]
圖5-13  表單資料傳送方式為「Get」。


表單資料傳送方式為「Get」時,「QUERY_STRING」環境變數可以讀取網址後方的參數資料(「?」問號之後的傳遞參數),若我要的是「?」問號之前的網頁基底呢?這個時候就可以使用「SERVER_NAME」與「PHP_SELF」環境變數。
要得知被啟動的PHP程式網頁的實際檔案路徑則可使用「PATH_TRANSLATED」環境變數;要得知PHP程式網頁是由哪一個網頁所鏈結啟動的,則可使用「HTTP_REFERER」環境變數:(範例go5.php配合message5.htm)
go5.php
  1. 「SERVER_NAME」環境變數:
  2. <?echo $_SERVER["SERVER_NAME"];?><BR>
  3. 「PHP_SELF」環境變數:
  4. <?echo $_SERVER["PHP_SELF"];?><BR>
  5. 「PATH_TRANSLATED」環境變數:
  6. <?echo $_SERVER["PATH_TRANSLATED"];?><BR>
  7. 「HTTP_REFERER」環境變數:
  8. <?echo $_SERVER["HTTP_REFERER"];?><BR>
複製代碼
[attach]5519[/attach]
圖5-14  範例go5.php配合message5.htm。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)