歡迎光臨
每天分享高質量文章

如何使用 CGI 指令碼生成網頁 | Linux 中國

通用閘道器介面(CGI)提供了使用任何語言生成動態網站的簡易方法。
— David Both


致謝
編譯自 | https://opensource.com/article/17/12/cgi-scripts 
 作者 | David Both
 譯者 | Lv Feng (ucasFL) ? ? ? ? ? 共計翻譯:64 篇 貢獻時間:537 天

通用閘道器介面(CGI)提供了使用任何語言生成動態網站的簡易方法。

回到網際網路的開端,當我第一次建立了我的第一個商業網站,生活是如此的美好。

我安裝 Apache 並寫了一些簡單的 HTML 網頁,網頁上列出了一些關於我的業務的重要資訊,比如產品概覽以及如何聯絡我。這是一個靜態網站,因為內容很少改變。由於網站的內容很少發生改變這一性質,因此維護起來也很簡單。

靜態內容

靜態內容很簡單,同時也很常見。讓我們快速的瀏覽一些靜態網頁的例子。你不需要一個可執行網站來執行這些小實驗,只需要把這些檔案放到家目錄,然後使用瀏覽器開啟。你所看到的內容將和透過 Web 伺服器提供這一檔案看到的內容一樣。

對於一個靜態網站,你需要的第一件東西就是 index.html 檔案,該檔案通常放置在 /var/www/html 目錄下。這個檔案的內容可以非常簡單,比如可以是像 “Hello, world” 這樣一句短文字,沒有任何 HTML 標記。它將簡單的展示文字串內容。在你的家目錄建立 index.html 檔案,並新增 “hello, world” 作為內容(不需要引號)。在瀏覽器中透過下麵的連結來開啟這一檔案:

  1. file:///home//index.html

所以 HTML 不是必須的,但是,如果你有大量需要格式化的文字,那麼,不用 HTML 編碼的網頁的結果將會令人難以理解。

所以,下一步就是透過使用一些 HTML 編碼來提供格式化,從而使內容更加可讀。下麵這一命令建立了一個具有 HTML 靜態網頁所需要的絕對最小標記的頁面。你也可以使用你最喜歡的編輯器來建立這一內容。

  1. echo "

    Hello World

    " > test1.html

現在,再次檢視 index.html 檔案,將會看到和剛才有些不同。

當然,你可以在實際的內容行上新增大量的 HTML 標記,以形成更加完整和標準的網頁。下麵展示的是更加完整的版本,儘管在瀏覽器中會看到同樣的內容,但這也為更加標準化的網站奠定了基礎。繼續在 index.html 中寫入這些內容並透過瀏覽器檢視。

  1. </span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);">My Web Page</span><span class="tag" style="word-wrap: break-word;color: rgb(137, 189, 255);"/></code></p></li></ol></pre> </section> <li> <p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="tag" style="word-wrap: break-word;color: rgb(137, 189, 255);"/></code></p> </li> <li> <p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="tag" style="word-wrap: break-word;color: rgb(137, 189, 255);"/></code></p> </li> <li> <p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="tag" style="word-wrap: break-word;color: rgb(137, 189, 255);"></p> <h1/></span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);">Hello World</span><span class="tag" style="word-wrap: break-word;color: rgb(137, 189, 255);"/></code></p> </li> <li> <p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="tag" style="word-wrap: break-word;color: rgb(137, 189, 255);"/></code></p> </li> <li> <p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="tag" style="word-wrap: break-word;color: rgb(137, 189, 255);"/></code></p> </li> <p style="word-wrap: break-word;margin-top: 1.5em;margin-bottom: 1.5em;line-height: 2em;">我使用這些技術搭建了一些靜態網站,但我的生活正在改變。</p> <p class="h3" style="word-wrap: break-word;margin-top: 10px;margin-right: 10px;margin-bottom: 10px;padding: 8px 15px;line-height: 1.8em;background-image: linear-gradient(to right bottom, rgb(0, 188, 212), rgb(63, 81, 181));background-color: rgb(63, 81, 181);color: rgb(255, 255, 255);font-size: 1.4em;letter-spacing: 3px;border-left: 10px solid rgb(51, 51, 51);text-shadow: rgb(102, 102, 102) 1px 1px 1px;box-shadow: rgb(102, 102, 102) 1px 1px 2px;">動態網頁</p> <p style="word-wrap: break-word;margin-top: 1.5em;margin-bottom: 1.5em;line-height: 2em;">我找了一份新工作,這份工作的主要任務就是建立並維護用於一個動態網站的 CGI(<ruby style="word-wrap: break-word;background-color: rgba(213, 241, 211, 0.4);margin: 4px;padding-right: 2px;padding-left: 2px;"><span style="word-wrap: break-word;color: rgb(77, 138, 216);">公共閘道器介面</span><rt style="word-wrap: break-word;font-style: italic;color: rgb(100, 208, 106);">Common Gateway InterfaceM</rt></ruby><span class="sup" style="word-wrap: break-word;font-size: 9px;vertical-align: super;background-color: rgb(102, 102, 102);color: rgb(255, 255, 255);transform: scale(0.75);display: inline-block;padding: 1px;line-height: 1em;">[1]</span>)程式碼。字面意思來看,動態意味著在瀏覽器中生成的網頁所需要的 HTML 是由每次訪問頁面時不同的資料所生成的。這些資料包括網頁表單中的使用者輸入,以用來在資料庫中進行資料查詢,結果資料被一些恰當的 HTML 包圍著並展示在所請求的瀏覽器中。但是這不需要非常複雜。</p> <p style="word-wrap: break-word;margin-top: 1.5em;margin-bottom: 1.5em;line-height: 2em;">透過使用 CGI 指令碼,你可以建立一些簡單或複雜的互動式程式,透過執行這些程式能夠生成基於輸入、計算、伺服器的當前條件等改變的動態頁面。有許多種語言可以用來寫 CGI 指令碼,在這篇文章中,我將談到的是 Perl 和 Bash ,其他非常受歡迎的 CGI 語言包括 PHP 和 Python 。</p> <p style="word-wrap: break-word;margin-top: 1.5em;margin-bottom: 1.5em;line-height: 2em;">這篇文章不會介紹 Apache 或其他任何 web 伺服器的安裝和配置。如果你能夠訪問一個你可以進行實驗的 Web 伺服器,那麼你可以直接檢視它們在瀏覽器中出現的結果。否則,你可以在命令列中執行程式來檢視它們所建立的 HTML 文字。你也可以重定向 HTML 輸出到一個檔案中,然後透過瀏覽器檢視結果檔案。</p> <p class="h3" style="word-wrap: break-word;margin-top: 10px;margin-right: 10px;margin-bottom: 10px;padding: 8px 15px;line-height: 1.8em;background-image: linear-gradient(to right bottom, rgb(0, 188, 212), rgb(63, 81, 181));background-color: rgb(63, 81, 181);color: rgb(255, 255, 255);font-size: 1.4em;letter-spacing: 3px;border-left: 10px solid rgb(51, 51, 51);text-shadow: rgb(102, 102, 102) 1px 1px 1px;box-shadow: rgb(102, 102, 102) 1px 1px 2px;">使用 Perl</p> <p style="word-wrap: break-word;margin-top: 1.5em;margin-bottom: 1.5em;line-height: 2em;">Perl 是一門非常受歡迎的 CGI 指令碼語言,它的優勢是強大的文字操作能力。</p> <p style="word-wrap: break-word;margin-top: 1.5em;margin-bottom: 1.5em;line-height: 2em;">為了使 CGI 指令碼可執行,你需要在你的網站的 <code style="word-wrap: break-word;background: none rgb(238, 238, 238);padding: 2px 4px;border-radius: 4px;margin-right: 4px;margin-left: 4px;color: rgb(33, 150, 243);line-height: 1.2em;">httpd.conf</code> 中新增下麵這行內容。這會告訴伺服器可執行 CGI 檔案的位置。在這次實驗中,不必擔心這個問題。</p> <pre class="prettyprint linenums prettyprinted" style="word-wrap: break-word;background-color: rgb(22, 27, 32);background-image: none;box-shadow: rgba(0, 0, 0, 0.5) 0px 0px 5px;text-shadow: rgb(0, 0, 0) 0px 1px 1px;border-radius: 6px;color: rgb(184, 255, 184);margin: 10px;padding: 1em 1em 1em 0px;white-space: pre-wrap;border-width: 1px;border-style: solid;border-color: rgb(0, 0, 0);line-height: 1.2em;letter-spacing: 0px !important;"><ol class="linenums list-paddingleft-2" style="margin-left: 2em;margin-right: 2em;"><li><p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="typ" style="word-wrap: break-word;color: rgb(137, 189, 255);">ScriptAlias</span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);"> </span><span class="pun" style="word-wrap: break-word;color: rgb(184, 255, 184);">/</span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);">cgi</span><span class="pun" style="word-wrap: break-word;color: rgb(184, 255, 184);">-</span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);">bin</span><span class="pun" style="word-wrap: break-word;color: rgb(184, 255, 184);">/</span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);"> </span><span class="str" style="word-wrap: break-word;color: rgb(101, 176, 66);">"/var/www/cgi-bin/"</span></code></p></li></ol></pre> <p style="word-wrap: break-word;margin-top: 1.5em;margin-bottom: 1.5em;line-height: 2em;">把下麵的 Perl 程式碼新增到檔案 <code style="word-wrap: break-word;background: none rgb(238, 238, 238);padding: 2px 4px;border-radius: 4px;margin-right: 4px;margin-left: 4px;color: rgb(33, 150, 243);line-height: 1.2em;">index.cgi</code>,在這次實驗中,這個檔案應該放在你的家目錄下。如果你使用 Web 伺服器,那麼應把檔案的所有者更改為 <code style="word-wrap: break-word;background: none rgb(238, 238, 238);padding: 2px 4px;border-radius: 4px;margin-right: 4px;margin-left: 4px;color: rgb(33, 150, 243);line-height: 1.2em;">apache.apache</code>,同時將檔案許可權設定為 755,因為無論位於哪,它必須是可執行的。</p> <pre class="prettyprint linenums prettyprinted" style="word-wrap: break-word;background-color: rgb(22, 27, 32);background-image: none;box-shadow: rgba(0, 0, 0, 0.5) 0px 0px 5px;text-shadow: rgb(0, 0, 0) 0px 1px 1px;border-radius: 6px;color: rgb(184, 255, 184);margin: 10px;padding: 1em 1em 1em 0px;white-space: pre-wrap;border-width: 1px;border-style: solid;border-color: rgb(0, 0, 0);line-height: 1.2em;letter-spacing: 0px !important;"><ol class="linenums list-paddingleft-2" style="margin-left: 2em;margin-right: 2em;"><li><p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="com" style="word-wrap: break-word;color: rgb(174, 174, 174);font-style: italic;">#</span><span class="pun" style="word-wrap: break-word;color: rgb(184, 255, 184);">!</span><span class="str" style="word-wrap: break-word;color: rgb(101, 176, 66);">/usr/</span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);">bin</span><span class="pun" style="word-wrap: break-word;color: rgb(184, 255, 184);">/</span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);">perl</span></code></p></li><li><p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="kwd" style="word-wrap: break-word;color: rgb(226, 137, 100);">print</span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);"> </span><span class="str" style="word-wrap: break-word;color: rgb(101, 176, 66);">"Content-type: text/html\n\n"</span><span class="pun" style="word-wrap: break-word;color: rgb(184, 255, 184);">;</span></code></p></li><li><p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="kwd" style="word-wrap: break-word;color: rgb(226, 137, 100);">print</span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);"> </span><span class="str" style="word-wrap: break-word;color: rgb(101, 176, 66);">"\n"</span><span class="pun" style="word-wrap: break-word;color: rgb(184, 255, 184);">;</span></code></p></li><li><p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="kwd" style="word-wrap: break-word;color: rgb(226, 137, 100);">print</span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);"> </span><span class="str" style="word-wrap: break-word;color: rgb(101, 176, 66);">"<h1>Hello World</h1>\n"</span><span class="pun" style="word-wrap: break-word;color: rgb(184, 255, 184);">;</span></code></p></li><li><p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="kwd" style="word-wrap: break-word;color: rgb(226, 137, 100);">print</span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);"> </span><span class="str" style="word-wrap: break-word;color: rgb(101, 176, 66);">"Using Perl<p>\n"</p></span><span class="pun" style="word-wrap: break-word;color: rgb(184, 255, 184);">;</span></code></p></li><li><p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="kwd" style="word-wrap: break-word;color: rgb(226, 137, 100);">print</span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);"> </span><span class="str" style="word-wrap: break-word;color: rgb(101, 176, 66);">"</span></code></p></li></ol></pre> <p>\n”<span class="pun" style="word-wrap: break-word;color: rgb(184, 255, 184);">;</span></p> <p style="word-wrap: break-word;margin-top: 1.5em;margin-bottom: 1.5em;line-height: 2em;">在命令列中執行這個程式並檢視結果,它將會展示出它所生成的 HTML 內容</p> <p style="word-wrap: break-word;margin-top: 1.5em;margin-bottom: 1.5em;line-height: 2em;">現在,在瀏覽器中檢視 <code style="word-wrap: break-word;background: none rgb(238, 238, 238);padding: 2px 4px;border-radius: 4px;margin-right: 4px;margin-left: 4px;color: rgb(33, 150, 243);line-height: 1.2em;">index.cgi</code> 檔案,你所看到的只是檔案的內容。瀏覽器需要將它看做 CGI 內容,但是,Apache 不知道需要將這個檔案作為 CGI 程式執行,除非 Apache 的配置中包括上面所展示的 <code style="word-wrap: break-word;background: none rgb(238, 238, 238);padding: 2px 4px;border-radius: 4px;margin-right: 4px;margin-left: 4px;color: rgb(33, 150, 243);line-height: 1.2em;">ScriptAlias</code> 定義。沒有這一配置,Apache 只會簡單地將檔案中的資料傳送給瀏覽器。如果你能夠訪問 Web 伺服器,那麼你可以將可執行檔案放到 <code style="word-wrap: break-word;background: none rgb(238, 238, 238);padding: 2px 4px;border-radius: 4px;margin-right: 4px;margin-left: 4px;color: rgb(33, 150, 243);line-height: 1.2em;">/var/www/cgi-bin</code> 目錄下。</p> <p style="word-wrap: break-word;margin-top: 1.5em;margin-bottom: 1.5em;line-height: 2em;">如果想知道這個指令碼的執行結果在瀏覽器中長什麼樣,那麼,重新執行程式並把輸出重定向到一個新檔案,名字可以是任何你想要的。然後使用瀏覽器來檢視這一檔案,它包含了指令碼所生成的內容。</p> <p style="word-wrap: break-word;margin-top: 1.5em;margin-bottom: 1.5em;line-height: 2em;">上面這個 CGI 程式依舊生成靜態內容,因為它總是生成相同的輸出。把下麵這行內容新增到 CGI 程式中 “Hello, world” 這一行後面。Perl 的 <code style="word-wrap: break-word;background: none rgb(238, 238, 238);padding: 2px 4px;border-radius: 4px;margin-right: 4px;margin-left: 4px;color: rgb(33, 150, 243);line-height: 1.2em;">system</code> 命令將會執行跟在它後面的 shell 命令,並把結果傳回給程式。此時,我們將會透過 <code style="word-wrap: break-word;background: none rgb(238, 238, 238);padding: 2px 4px;border-radius: 4px;margin-right: 4px;margin-left: 4px;color: rgb(33, 150, 243);line-height: 1.2em;">free</code> 命令獲得當前的記憶體使用量。</p> <pre class="prettyprint linenums prettyprinted" style="word-wrap: break-word;background-color: rgb(22, 27, 32);background-image: none;box-shadow: rgba(0, 0, 0, 0.5) 0px 0px 5px;text-shadow: rgb(0, 0, 0) 0px 1px 1px;border-radius: 6px;color: rgb(184, 255, 184);margin: 10px;padding: 1em 1em 1em 0px;white-space: pre-wrap;border-width: 1px;border-style: solid;border-color: rgb(0, 0, 0);line-height: 1.2em;letter-spacing: 0px !important;"><ol class="linenums list-paddingleft-2" style="margin-left: 2em;margin-right: 2em;"><li><p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);">system </span><span class="str" style="word-wrap: break-word;color: rgb(101, 176, 66);">"free | grep Mem\n"</span><span class="pun" style="word-wrap: break-word;color: rgb(184, 255, 184);">;</span></code></p></li></ol></pre> <p style="word-wrap: break-word;margin-top: 1.5em;margin-bottom: 1.5em;line-height: 2em;">現在,重新執行這個程式,並把結果重定向到一個檔案,在瀏覽器中重新載入這個檔案。你將會看到額外的一行,它展示了系統的記憶體統計資料。多次執行程式並掃清瀏覽器,你將會發現,記憶體使用量應該是不斷變化的。</p> <p class="h3" style="word-wrap: break-word;margin-top: 10px;margin-right: 10px;margin-bottom: 10px;padding: 8px 15px;line-height: 1.8em;background-image: linear-gradient(to right bottom, rgb(0, 188, 212), rgb(63, 81, 181));background-color: rgb(63, 81, 181);color: rgb(255, 255, 255);font-size: 1.4em;letter-spacing: 3px;border-left: 10px solid rgb(51, 51, 51);text-shadow: rgb(102, 102, 102) 1px 1px 1px;box-shadow: rgb(102, 102, 102) 1px 1px 2px;">使用 Bash</p> <p style="word-wrap: break-word;margin-top: 1.5em;margin-bottom: 1.5em;line-height: 2em;">Bash 可能是用於 CGI 指令碼中最簡單的語言。用 Bash 來進行 CGI 程式設計的最大優勢是它能夠直接訪問所有的標準 GNU 工具和系統程式。</p> <p style="word-wrap: break-word;margin-top: 1.5em;margin-bottom: 1.5em;line-height: 2em;">把已經存在的 <code style="word-wrap: break-word;background: none rgb(238, 238, 238);padding: 2px 4px;border-radius: 4px;margin-right: 4px;margin-left: 4px;color: rgb(33, 150, 243);line-height: 1.2em;">index.cgi</code> 檔案重新命名為 <code style="word-wrap: break-word;background: none rgb(238, 238, 238);padding: 2px 4px;border-radius: 4px;margin-right: 4px;margin-left: 4px;color: rgb(33, 150, 243);line-height: 1.2em;">Perl.index.cgi</code>,然後建立一個新的 `index.cgi 檔案並新增下麵這些內容。記得設定許可權使它可執行。</p> <pre class="prettyprint linenums prettyprinted" style="word-wrap: break-word;background-color: rgb(22, 27, 32);background-image: none;box-shadow: rgba(0, 0, 0, 0.5) 0px 0px 5px;text-shadow: rgb(0, 0, 0) 0px 1px 1px;border-radius: 6px;color: rgb(184, 255, 184);margin: 10px;padding: 1em 1em 1em 0px;white-space: pre-wrap;border-width: 1px;border-style: solid;border-color: rgb(0, 0, 0);line-height: 1.2em;letter-spacing: 0px !important;"><ol class="linenums list-paddingleft-2" style="margin-left: 2em;margin-right: 2em;"><li><p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="com" style="word-wrap: break-word;color: rgb(174, 174, 174);font-style: italic;">#</span><span class="pun" style="word-wrap: break-word;color: rgb(184, 255, 184);">!</span><span class="str" style="word-wrap: break-word;color: rgb(101, 176, 66);">/bin/</span><span class="kwd" style="word-wrap: break-word;color: rgb(226, 137, 100);">bash</span></code></p></li><li><p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="kwd" style="word-wrap: break-word;color: rgb(226, 137, 100);">echo</span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);"> </span><span class="str" style="word-wrap: break-word;color: rgb(101, 176, 66);">"Content-type: text/html"</span></code></p></li><li><p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="kwd" style="word-wrap: break-word;color: rgb(226, 137, 100);">echo</span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);"> </span><span class="str" style="word-wrap: break-word;color: rgb(101, 176, 66);">""</span></code></p></li><li><p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="kwd" style="word-wrap: break-word;color: rgb(226, 137, 100);">echo</span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);"> </span><span class="str" style="word-wrap: break-word;color: rgb(101, 176, 66);">''</span></code></p></li><li><p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="kwd" style="word-wrap: break-word;color: rgb(226, 137, 100);">echo</span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);"> </span><span class="str" style="word-wrap: break-word;color: rgb(101, 176, 66);">''</span></code></p></li><li><p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="kwd" style="word-wrap: break-word;color: rgb(226, 137, 100);">echo</span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);"> </span><span class="str" style="word-wrap: break-word;color: rgb(101, 176, 66);">'<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>'</span></code></p></li><li><p><code style="word-wrap: break-word;background: none;color: rgb(33, 150, 243);line-height: 1.2em;padding-left: 10px !important;border-radius: 0px !important;margin-top: 1em !important;margin-bottom: 1em !important;border-width: initial !important;border-style: none !important;border-color: initial !important;"><span class="kwd" style="word-wrap: break-word;color: rgb(226, 137, 100);">echo</span><span class="pln" style="word-wrap: break-word;color: rgb(184, 255, 184);"> </span><span class="str" style="word-wrap: break-word;color: rgb(101, 176, 66);">'<title>Hello World'

  2. echo '

  • echo ''

  • echo '

    Hello World

    '

  • echo 'Using Bash

    '

  • free | grep Mem

  • echo '

  • echo '

  • exit 0

  • 在命令列中執行這個檔案並檢視輸出,然後再次執行並把結果重定向到一個臨時結果檔案中。然後,掃清瀏覽器檢視它所展示的網頁是什麼樣子。

    結論

    建立能夠生成許多種動態網頁的 CGI 程式實際上非常簡單。儘管這是一個很簡單的例子,但是現在你應該看到一些可能性了。


    via: https://opensource.com/article/17/12/cgi-scripts

    作者:David Both[3] 譯者:ucasFL 校對:wxy

    本文由 LCTT 原創編譯,Linux中國 榮譽推出

    贊(0)

    分享創造快樂