<output id="r87xx"></output>
    1. 
      
      <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
        •   

               當(dāng)前位置:首頁(yè)>軟件介紹>PHP入門篇 查詢:
               
          PHP入門篇

          PHP簡(jiǎn)介

          正如我們?cè)谇懊嫣岬降?,PHP是一個(gè)服務(wù)器端的腳本語言。這個(gè)概念可能很難理解,特別是如果你以前只用過HTML和JavaScript來設(shè)計(jì)過網(wǎng)頁(yè)時(shí)更是如此。一個(gè)服務(wù)器端的腳本程序與JavaScript在許多地方有點(diǎn)相像,兩者都允許你在Web頁(yè)面的HTML中插入一些程序(腳本)。其結(jié)果就是,這些腳本使你可以控制在瀏覽器窗口內(nèi)會(huì)顯示什么,這顯然要比直接使用HTML要來得靈活得多。

          JavaScript和PHP的關(guān)鍵的不同點(diǎn)是:當(dāng)Web瀏覽器解釋JavaScript時(shí),包含這個(gè)腳本的Web頁(yè)面已經(jīng)被下載了,而對(duì)于象PHP這樣的服務(wù)器端腳本程序來說,解釋的工作是由服務(wù)器在將頁(yè)面發(fā)出到瀏覽器之前完全的。解釋工作完成后,Web頁(yè)面中的PHP的代碼將由腳本運(yùn)行的結(jié)果所代替,瀏覽者看到的完全是標(biāo)準(zhǔn)的HTML文件。腳本是完全由服務(wù)器來處理的。這也就是它的命名的由來:服務(wù)器端腳本程序。

          讓我們?cè)倩仡^看看我們?cè)诘谝徽吕锝⒌氖纠齮oday.php:

          <HTML>
            <HEAD>
            <TITLE>Today's Date</TITLE>
            </HEAD>
            <BODY>
            <P>Today's Date (according to this Web server) is
            <?php
            echo( date("l, F dS Y.") );
            ?>
            </BODY>
            </HTML>

          這個(gè)程序中的絕大多數(shù)是采用HTML格式的。只有在<?php和 ?>中間的行是用PHP寫的。<?php表示“開始PHP代碼”,?> 表示“結(jié)束PHP代碼”。Web服務(wù)器在將這個(gè)Web頁(yè)面發(fā)送到請(qǐng)求它的瀏覽器之前會(huì)對(duì)這個(gè)兩個(gè)標(biāo)識(shí)符之前的所有內(nèi)容進(jìn)行處理,并將其轉(zhuǎn)換成標(biāo)準(zhǔn)的HTML代碼。瀏覽器接受到的頁(yè)面將是這樣的:

          <HTML>
            <HEAD>
            <TITLE>Today's Date</TITLE>
            </HEAD>
            <BODY>
            <P>Today's Date (according to this Web server) is
            Wednesday, June 7th 2000.
            </BODY>
            </HTML>

          請(qǐng)注意,現(xiàn)在所有的PHP代碼都沒有被顯示。它們被相應(yīng)的標(biāo)準(zhǔn)的HTML所取代,能過這個(gè)例子,我們可以看到服務(wù)器端腳本的幾個(gè)優(yōu)勢(shì):

          不存在瀏覽器兼容的問題。PHP腳本僅僅是由Web服務(wù)器來解釋的,所以我們不必?fù)?dān)心你使用的語言是否能被你的訪問者的瀏覽器所支持。

          可以訪問服務(wù)器端的資源。在上面的例子中,我們?cè)赪eb頁(yè)面中放置了Web服務(wù)器的日期。而當(dāng)我們使用的是JavaScript,要實(shí)現(xiàn)同樣的功能,我們只能顯示W(wǎng)eb瀏覽器在上面運(yùn)行的計(jì)算機(jī)的日期。這個(gè)例子還對(duì)于使用服務(wù)器端的資源還不是十分典型的,事實(shí)上我們可以很方便地插入一些其他的信息,而這些信息只能通過運(yùn)行在服務(wù)器上的腳本來調(diào)用,例如,運(yùn)行在Web服務(wù)器上的MySQL數(shù)據(jù)庫(kù)中存儲(chǔ)的信息。

          簡(jiǎn)化了客戶端的裝載。JavaScript會(huì)明顯降低Web頁(yè)面的顯示速度,因?yàn)樵陲@示這個(gè)Web頁(yè)面之前,瀏覽器首先得運(yùn)行JavaScript腳本。而對(duì)于服務(wù)器端腳本來說,這種負(fù)擔(dān)將由Web服務(wù)器獨(dú)自承擔(dān)。

          基本的語法和命令

          對(duì)于任何一個(gè)用過C、C++、Java、JavaScript、Perl或其他源自C的語言的人,PHP的語法都會(huì)讓你覺得非常熟悉。一個(gè)PHP腳本包含一系列的命令(語句),Web服務(wù)器必須依次處理這些指令。與上面提到的其他語言一樣,PHP語句也總是以分號(hào)(;)結(jié)束。

          這是一個(gè)典型的PHP語句:

          echo( "This is a <B>test</B>!" );

          這個(gè)語句調(diào)用了一個(gè)叫echo的內(nèi)置函數(shù),并傳遞給它這么一個(gè)字符串:“This is a <B>test</B>! ”。內(nèi)置函數(shù)你可以理解為“不需要另外的說明PHP就能知道該怎么做”的事情。PHP有很多的內(nèi)置函數(shù),我們可以利用它們來做許多事,從發(fā)送e-mail到處理存儲(chǔ)在數(shù)據(jù)庫(kù)中的不同類型的數(shù)據(jù)都是它們的管轄范圍。echo函數(shù)只是簡(jiǎn)單地將傳遞給它的文本插入到HTML頁(yè)面的當(dāng)前位置。你可以看看下面這個(gè)例子:

          <HTML>
            <HEAD>
            <TITLE> Simple PHP Example </TITLE>
            </HEAD>
            <BODY>
            <P><?php echo("This is a <B>test</B>!");   ?></P>
            </BODY>
            </HTML>

          如果你給這段代碼起名為test.php(或者test.php3,如果你的Web主機(jī)還沒有將.php文件配置為PHP腳本),并將它放置到你的Web服務(wù)器上,瀏覽器看到的將是這樣的一頁(yè):

          <HTML>
            <HEAD>
            <TITLE> Simple PHP Example </TITLE>
            </HEAD>
            <BODY>
            <P>This is a <B>test</B>!</P>
            </BODY>
            </HTML>

          請(qǐng)注意,包含HTML標(biāo)識(shí)符(<B>和</B>)在內(nèi)的所有文本都被正確地顯示了出來。

          你也許會(huì)感到疑惑,我們?yōu)槭裁匆谶@里使用括號(hào)和引號(hào)。引號(hào)在PHP中是用來標(biāo)志字符串的開始和結(jié)束。括號(hào)有雙重作用,首先,它指出echo是一個(gè)你想要調(diào)用的函數(shù),其次,它標(biāo)志了這個(gè)函數(shù)的參數(shù)的開始和結(jié)束。通過參數(shù),你可以指揮你的函數(shù)去干什么。對(duì)于echo函數(shù),我們只需要給它一個(gè)字符串,用來在頁(yè)面上顯示,但是我們將會(huì)看到有些函數(shù)有幾個(gè)參數(shù)(在這種情況下,我們用逗號(hào)分開各個(gè)參數(shù))。即使對(duì)于沒有參數(shù)的函數(shù),我們?nèi)孕枰欣ㄌ?hào),只不過在括號(hào)中間我們不必輸入任何內(nèi)容。

          變量和運(yùn)算符

          PHP中的變量與許多其它程序中的變量一樣。當(dāng)還未被初始化時(shí),變量?jī)H僅是一個(gè)假想的容器的名字,其中可以存放任何數(shù)值。下面的語句建立了一個(gè)叫$testvariable(在PHP中所有的變量都以一個(gè)美元符開始)并將其賦值為3:

          $testvariable = 3;

          PHP是一個(gè)“寬松類型”的語言,這就是說,一個(gè)變量可以包含任何類型的數(shù)據(jù)(數(shù)字、字符串或者其他類型),在它的存活期內(nèi)其類型可以自由地轉(zhuǎn)換。所以如果在上面的語句后再出現(xiàn)這樣的語句,這就意味著給我們的已經(jīng)存在的$testvariable變量重新賦了一個(gè)值。這個(gè)變量從一個(gè)數(shù)值變量變成了一個(gè)字符串變量:

          $testvariable = "Three";

          在上面的兩個(gè)語句中我們用到的等于號(hào)被稱之“賦值運(yùn)算符”,它是用來給一個(gè)變量賦值的。另外,我們還有一些執(zhí)行數(shù)學(xué)運(yùn)算的運(yùn)算符:

          $testvariable = 1 + 1; //變量賦值為2。
            $testvariable = 1 - 1; //變量賦值為0。
            $testvariable = 2 * 2; //變量賦值為4。
            $testvariable = 2 / 2; //變量賦值為1。

          上面的各行的最后都有一個(gè)注釋。注釋是通過插入解釋性的文字來說明我們的代碼的用途,同時(shí)它也會(huì)通知PHP解釋程序忽略對(duì)這部分語句的解釋。注釋以//開始并在同一行內(nèi)結(jié)束。如果你熟悉在其他語言中的/* */風(fēng)格的注釋,在PHP中你也可以這樣用。在我們這個(gè)教程中,我們會(huì)經(jīng)常使用注釋來對(duì)程序作出解釋。
          現(xiàn)在回到我們上面的四個(gè)語句,四個(gè)運(yùn)算符分別被用來完成加、減、乘、除的運(yùn)算。另外,還有一個(gè)運(yùn)行符是用來連接字符串的:

          //給變量賦值為"Hi there!".
            $testvariable = "Hi " . "there!";
            變量可以被應(yīng)用在很多使用實(shí)際數(shù)值的地方。你可以看看下面的例子:
            $var1 = "PHP"; //將$var1賦值為"PHP"
            $var2 = 5; //將$var2賦值為5
            $var3 = $var2 + 1; //將$var3賦值為6
            $var2 = $var1; //將$var2賦值為"PHP"
            echo($var1); //輸出"PHP"
            echo($var2); //輸出"PHP"
            echo($var3); //輸出6
            echo($var1 . " rules!"); //輸出"PHP rules!"
            echo("$var1 rules!"); //輸出"PHP rules!"
            echo('$var1 rules!'); //輸出'$var1 rules!'

          請(qǐng)?zhí)貏e注意最后的兩行,你可以直接在一個(gè)字符串中包含一個(gè)變量名,如果你用雙引號(hào)將其括起來,將會(huì)用該變量的值代替變量名。而最后一行證明,如果你使用的是單引號(hào),是不會(huì)作這種轉(zhuǎn)換的。

          用戶交互和表單

          對(duì)于許多我們感興趣的PHP應(yīng)用來說,最基本的功能是實(shí)現(xiàn)與瀏覽這個(gè)頁(yè)面的用戶的交互。如果你熟悉JavaScript,你可能會(huì)習(xí)慣于這么一種事務(wù)處理的模式,那就是對(duì)用戶的許多行動(dòng)直接作出反應(yīng)(例如將鼠標(biāo)移動(dòng)到頁(yè)面上的一個(gè)連接)。而對(duì)于PHP這樣的服務(wù)器端腳本程序而言,它用來實(shí)現(xiàn)與用戶交互的活動(dòng)范圍要小得多,與用戶的交互僅僅發(fā)生在用戶向服務(wù)器發(fā)出請(qǐng)求以及服務(wù)器用一個(gè)動(dòng)態(tài)頁(yè)面作出回應(yīng)之間。

          用戶與PHP實(shí)現(xiàn)交互的關(guān)鍵是理解用戶對(duì)一個(gè)新Web頁(yè)面發(fā)出的請(qǐng)求中可能包含的發(fā)出信息。我們將會(huì)看到,PHP使得這個(gè)工作極為簡(jiǎn)單。

          最簡(jiǎn)單的方法是使用“URL查詢字符串”在頁(yè)面請(qǐng)求中發(fā)出信息。如果你曾經(jīng)看到過一個(gè)在文件名后包含問號(hào)的URL,那就是采用的這種技術(shù)。讓我們來看一個(gè)簡(jiǎn)單的例子。建立一個(gè)標(biāo)準(zhǔn)的HTML文件(不一定使用.php擴(kuò)展名,在這個(gè)文件中將不包含任何PHP代碼),并在其中加入以下連接:

          <A HREF="welcome.php?name=Kevin"> Hi, I'm Kevin!   </A>

          這是指向一個(gè)叫welcome.php的文件的連接,但是在連接這個(gè)文件的同時(shí),我們還在頁(yè)面請(qǐng)求中傳遞了一個(gè)變量。這個(gè)變量是被作為“查詢字符串”的一部分傳遞的,它位于URL的問號(hào)后面。這個(gè)變量的名字是name,它的值是Kevin。也就是說,我們建立了一個(gè)連接,這個(gè)連接裝載welcome.php并告知這個(gè)文件中包含的PHP代碼:name等于Kevin。

          要清楚這么做對(duì)我們有什么好處,我們需要看看welcome.php。 同樣地將其作為一個(gè)新的HTML文件來建立,但是這一次要記得使用.php 擴(kuò)展名,這會(huì)告訴Web服務(wù)器在這個(gè)文件中有一些PHP代碼需要解釋。如果你的Web服務(wù)器還不接受.php作為PHP文件的擴(kuò)展名,你可能需要將其改名為welcome.php3(在這種情況下,你也需要相應(yīng)調(diào)整上面的代碼中的連接)。在這個(gè)新文件中,輸入以下內(nèi)容:

          <?php
            echo( "Welcome to our Web site, $name!" );
            ?>

          現(xiàn)在,如果你用第一個(gè)文件中連接去裝載第二個(gè)文件,你會(huì)看到這一頁(yè)顯示“Welcome to our Web site, Kevin!”,這個(gè)通過URL的查詢字符串傳遞過來的變量的值被自動(dòng)地賦予了一個(gè)叫$name的變量,我們?cè)谝欢挝谋局酗@示了這個(gè)傳遞過來的變量。

          如果你需要的話,你也可以通過查詢字符串傳遞幾個(gè)變量。讓我們看看這個(gè)例子的稍微復(fù)雜一點(diǎn)的版本。將HTML文件中的連接改變?yōu)椋?/p>

          <A HREF="welcome.php?firstname=Kevin&lastname=Yank">
            Hi, I'm Kevin Yank! </A>

          這一次,我們傳遞了兩個(gè)變量:firstname和lastname。這些變量在查詢字符串中被&符號(hào)分開。你可以傳遞更多的變量,只要你將每一個(gè)name=value對(duì)以&符號(hào)分開。

          如前所述,我們可以在我們的welcome.php文件中使用這兩個(gè)變量的值:

          <?php
            echo( "Welcome to our Web site,
            $firstname $lastname!" );
            ?>

          雖然看上去一切都好了,但是我們?nèi)詻]有達(dá)到我們真正地與用戶交互的目的,我們的用戶應(yīng)該能夠輸入任意的信息,并將它交給PHP來處理。接著我們的個(gè)性化歡迎頁(yè)面的例子,我們想要讓我們的用戶任意地輸入他(或她)的名字并將其顯示到信息中,要讓用戶輸入數(shù)據(jù),我們需要用到HTML的表單。
          這兒是表單的代碼:

          <FORM ACTION="welcome.php" METHOD=GET>
            First Name: <INPUT TYPE=TEXT NAME="firstname"><BR>
            Last Name: <INPUT TYPE=TEXT NAME="lastname">
            <INPUT TYPE=SUBMIT VALUE="GO">
            </FORM>

          除了在這里你可以任意輸入你的名字以外,這個(gè)表單所起的效果和我們上面的第二個(gè)連接(在查詢字符串中使用firstname=Kevin&lastname=Yank)完全一樣。當(dāng)你按提交按鈕(標(biāo)志為“GO”)時(shí),瀏覽器會(huì)裝載welcome.php并自動(dòng)為你在查詢字符串中添加變量和它們的值。變量名就是在INPUT TYPE=TEXT標(biāo)識(shí)中的NAME屬性,變量值就是用戶輸入的相應(yīng)的內(nèi)容。

          INPUT TYPE=TEXT標(biāo)識(shí)中的METHOD屬性是用來告訴瀏覽器如何在請(qǐng)求中發(fā)送變量名及變量值的。GET(就是我們?cè)谏厦媸褂玫模┍硎驹诓樵冏址袀鬟f變量,但是還有另外一種選擇。將變量顯示在查詢字符串中并不總是令我們滿意的--甚至有的時(shí)候在技術(shù)上就是不可行的。如果在你的表單中包含了一個(gè)TEXTAREA標(biāo)識(shí)用來讓用戶輸入大量的文本,這部分文本也顯示在查詢字符串中實(shí)在是太長(zhǎng)了,而且會(huì)超過瀏覽器所能支持的URL的最大長(zhǎng)度。另外一種方法可以允許瀏覽器隱藏地傳遞信息。這種方法的代碼和我們上面看到的表單的代碼幾乎一樣,只是我們將表單的方法從GET變成了POST:

          <FORM ACTION="welcome.php" METHOD=POST>
            First Name: <INPUT TYPE=TEXT NAME="firstname"><BR>
            Last Name: <INPUT TYPE=TEXT NAME="lastname">
            <INPUT TYPE=SUBMIT VALUE="GO">
            </FORM>

          這個(gè)表單和我們之前的那個(gè)在功能上完全一樣。唯一的不同是當(dāng)用戶在按“GO”按鈕時(shí)所裝載頁(yè)面的URL將沒有一個(gè)查詢字符串。一方面,這可以讓你通過表單提交大量的數(shù)據(jù)或者是敏感的數(shù)據(jù)(例如密碼),而不在一個(gè)查詢字符串中顯示出來。另一方面,如果用戶將提交表單生成的結(jié)果頁(yè)添加到收藏夾,這個(gè)收藏夾是沒有用的,因?yàn)樗话峤坏臄?shù)據(jù)。另外,附帶說一下,象AltaVista這樣的搜索引擎總是利用查詢字符串來提交查詢條件,其主要原因就是為了便于用戶將查詢結(jié)果頁(yè)添加到收藏夾中,以便在將來進(jìn)行同樣的搜索,因?yàn)樗阉鳁l件是包含在URL之中的。

          這兒講了利用表單來實(shí)現(xiàn)用戶與PHP的交互的基本的原理。在以后的例子中,我們將討論一些更高級(jí)的問題和技術(shù)。

          控制語句

          在我們之前看到的PHP的代碼的例子中,要么是只有一個(gè)單獨(dú)的向Web頁(yè)面輸出文本語句;要么是一系列的依次執(zhí)行的語句。如果你用其他語言編寫過程序,你應(yīng)該知道,實(shí)際上很少有這么簡(jiǎn)單的程序。
          和任何其他的編程語言一樣,PHP也提供了很方便地處理腳本中的“控制流”的方法。就是說,PHP中包含了一些特殊的語句,通過這些語句你可是不受依次執(zhí)行的順序的束縛。這種語句被稱之為“控制語句”。不理解?不要擔(dān)心!有一些例子會(huì)很好地幫助你。

          最基本最常用到的控制語句是if-else語句。它的結(jié)構(gòu)是這樣的:

          if ( <condition> ) {
            //如果<condition>是真,將執(zhí)行的語句。
            } else {
            //(可選)如果<condition>是假,將執(zhí)行的語句。
            }

          這個(gè)控制語可以讓我們告訴PHP根據(jù)一些條件的真假來決定相應(yīng)地執(zhí)行哪一組語句。如果你不覺得我這么做有點(diǎn)空虛,我們可以將我們剛才建立的welcome.php文件修改為:

          if ( $name == "Kevin" ) {
            echo( "Welcome, oh glorious leader!" );
            } else {
            echo( "Welcome, $name!" );
            }

          現(xiàn)在,如果傳遞給這個(gè)頁(yè)面的name變量的值是Kevin,將顯示一個(gè)特殊的信息。否則,將顯示一個(gè)包含輸入的name的普通的信息。

          需要指出的是,在這個(gè)結(jié)構(gòu)中,“else子句”(它指出了if-else結(jié)構(gòu)中條件為假時(shí)執(zhí)行的內(nèi)容)是可選的。對(duì)于上面的例子,如果我們的目的是當(dāng)適當(dāng)?shù)拿直惠斎霑r(shí),顯示特殊的信息,否則就什么也不顯示。這段代碼應(yīng)該是這樣的:

          if ( $name == "Kevin" ) {
            echo( "Welcome, oh glorious leader!" );
            }

          在上面條件中所使用的==是用比較兩個(gè)值是否相等的運(yùn)算符。要特別記住的是在這兒你需要輸入兩個(gè)等號(hào)。如果你輸入的是一個(gè)等號(hào),你實(shí)際上使用的是前面我們討論過的賦值運(yùn)算符,你將不再是對(duì)兩個(gè)變量的值進(jìn)行比較,而是給變量賦了一個(gè)新值(這個(gè)操作會(huì)附帶地返回一個(gè)true)。這樣做的結(jié)果不僅僅是導(dǎo)致這個(gè)條件永遠(yuǎn)是true,它還可能改變我們所要檢查的變量的值,這可能會(huì)導(dǎo)致很多問題。

          防止發(fā)生這種錯(cuò)誤有一種安全的做法,那就是象下面這樣顛倒用來比較的變量和常量的位置:

          if ( "Kevin" == $name ) {

          這樣做的效果是完全相同的,但是當(dāng)你忘了第二個(gè)等號(hào)時(shí),我們來看看會(huì)發(fā)生什么情況。PHP會(huì)試圖將變量($name)的值插入常量("Kevin")中。因?yàn)槟悴荒芨淖兂A康闹?,PHP會(huì)中斷并提示一個(gè)錯(cuò)誤信息,這將立即提示你忘了第二個(gè)等于號(hào)!

          條件可以比單個(gè)的比較是否相等來得更復(fù)雜。回憶我們修改的welcome.php3,它是可以同時(shí)獲取firstname和lastname的。如果我們想要為某個(gè)特定的人顯示一個(gè)特殊的信息,我們可以同時(shí)比較這兩個(gè)變量:

          if ( "Kevin" == $firstname and "Yank" == $lastname )   {
            echo( "Welcome, oh glorious leader!" );
            }

          只有$firstname的值是Kevin,而且$lastname的值是Yank時(shí)這個(gè)條件才會(huì)返回真。and的意義就是只有兩個(gè)比較都為真時(shí),整個(gè)條件才會(huì)返回真。還有一個(gè)符號(hào)是or,這使得兩個(gè)比較中至少有一個(gè)為真時(shí),整個(gè)條件就返回真。如果你對(duì)JavaScript和C中的運(yùn)算符(&&(and)和||(or))熟悉的話,你也可以在PHP中同樣地使用它們。

          在下面我們將看到一些更復(fù)雜的比較?,F(xiàn)在,我們只需要對(duì)if-else語句有個(gè)基本的理解就可以了。

          另一個(gè)常用的PHP控制語句是while循環(huán)。if-else語句使我們可以根據(jù)條件選擇是否執(zhí)行一組語句,while循環(huán)使我們可以根據(jù)條件來決定重復(fù)執(zhí)行一組語句多少次。while循環(huán)的基本格式應(yīng)該是這樣的:

          while ( <condition> ) {  //只要<condition>是真時(shí)反復(fù)執(zhí)行的語句  }

          這和一個(gè)沒有else子句的if-else 語句非常相象。不同點(diǎn)在于當(dāng)條件為真時(shí)語句執(zhí)行完后,將不再是接著執(zhí)行結(jié)束符(})后面的語句,而是再次檢查條件。如果這個(gè)條件仍為真。將會(huì)重復(fù)執(zhí)行語句,直到條件不再為真時(shí)為止。當(dāng)這個(gè)條件首次返回假時(shí)(不管是第幾次檢查它),將會(huì)跳轉(zhuǎn)執(zhí)行循環(huán)后面的語句(在結(jié)束符后面)。

          這樣的循環(huán)可以用來處理一個(gè)事物的較長(zhǎng)的列表(例如存儲(chǔ)在數(shù)據(jù)庫(kù)中的笑話),下面我們舉了一個(gè)簡(jiǎn)單的例子:計(jì)數(shù)到10。

          $count = 1;
            while ($count <= 10) {
            echo( "$count " );
            $count++;
            }

          我知道這段語句可能看上去挺恐怖,但是我們可以一行行地來看它。第一行定義了一個(gè)叫$count的變量并將其賦值為1。第二行是while循環(huán)的開始,條件是$count小于或等于(<=)10。第三行和第四行是while循環(huán)的循環(huán)體,當(dāng)條件為真時(shí),我們將重復(fù)執(zhí)行它。第三行簡(jiǎn)單地輸出了一$count的值,并在其后加了一個(gè)空格。第四行將$count的值加一($count++是$count = $count + 1的縮寫--兩者的意義是完全一樣的)。

          現(xiàn)在我們可以看看這段程序是如何執(zhí)行的了。當(dāng)?shù)谝淮螜z查條件時(shí),$count的值是1,所以條件為真。$count的值(1)被輸出,接著$count被賦予了一個(gè)新值2。當(dāng)?shù)诙螜z查條件時(shí)條件仍為真,所以2 被輸出,并賦了一個(gè)新值3 。這個(gè)過程被繼續(xù)下去,輸出了3 ,4 ,5 ,6 ,7 ,8 ,9 直到10 。最后,$count被賦予值11,條件為假,循環(huán)結(jié)束。最終的結(jié)果是輸出了這樣一個(gè)字符串“1 2 3 4 5 6 7 8 9 10”。

          在這個(gè)例子的條件中我們使用了一個(gè)新的運(yùn)算符:<= (小于或等于)。其他用于數(shù)值比較的運(yùn)算符還有>=(大于或等于),<(小于),>(大于)和!=(不等于)。最后一個(gè)也可以使用于字符串比較中。

          多用途的頁(yè)面

          如果你想在你建立的網(wǎng)站的每一個(gè)網(wǎng)頁(yè)的頂端都顯示訪問者的姓名。使用我們前面的自動(dòng)顯示歡迎信息的例子,我們已經(jīng)基本上成功了一半?,F(xiàn)在我們只要對(duì)我們示例解決這幾個(gè)問題就行了:

          我們需要在站點(diǎn)的每一個(gè)頁(yè)面都顯示,而不是僅僅在一個(gè)頁(yè)面上。

          我們無法控制在我們的站點(diǎn)上那一個(gè)頁(yè)面會(huì)首先顯示。

          第一個(gè)問題的解決不是太困難的。當(dāng)我們?cè)谝粋€(gè)頁(yè)面上獲得了用戶名這個(gè)變量后,我們可以在任何請(qǐng)求中通過將其添加到一個(gè)查詢字符串來傳遞這個(gè)變量:

          <A HREF="newpage.php?name=<?php echo(urlencode($name));   ?>"> A link </A>

          請(qǐng)注意我們?cè)贖TML標(biāo)識(shí)符的中間嵌入了PHP的代碼。實(shí)際上這是非常常用的。我們已經(jīng)對(duì)echo這個(gè)函數(shù)很熟悉,但是我們還不熟悉urlencode函數(shù)。這個(gè)函數(shù)的功能是將字符串中一些特殊的字符(例如空格)轉(zhuǎn)換成特定的編碼,以使它們能夠在查詢字符串中顯示。例如,如果$name變量的值是"Kevin Yank",其中的空格在查詢字符串中不允許存在,urlencode的輸出將是Kevin+Yank,在newpage.php中建立$name時(shí),值將會(huì)被自動(dòng)轉(zhuǎn)換回來。

          Ok,現(xiàn)在已經(jīng)可以將用戶名傳遞給我們站點(diǎn)的第一個(gè)連接了?,F(xiàn)在我們所需要的就是在其第一次出現(xiàn)時(shí),要能獲得它的值。在我們上面的例子中,我們已經(jīng)做了一個(gè)HTML頁(yè)面用來處理獲得用戶名的表單。而問題是我們不能強(qiáng)迫用戶在每一次訪問我們的站點(diǎn)時(shí)都從這個(gè)頁(yè)面開始。

          解決方案是在我們站點(diǎn)的每一個(gè)頁(yè)面都檢查是否指定了一個(gè)用戶名,如果需要,應(yīng)該提求用戶輸入用戶名。這意味著我們站點(diǎn)上的每一個(gè)頁(yè)面都必須能顯示用戶名,在未指定用戶名時(shí),應(yīng)提示用戶輸入。如果你現(xiàn)在就想到了使用if-else語句,那證明你的學(xué)習(xí)能力真的不錯(cuò)!

          我們的“多功能頁(yè)面”應(yīng)該根據(jù)不同的條件顯示完全不同的內(nèi)容,這個(gè)頁(yè)面的源程序?qū)?huì)是這樣的:

          <HTML>
            <HEAD>
            <TITLE> Multi-Purpose Page Outline </TITLE>
            </HEAD>
            <BODY>
            <?php if (<condition>) { ?>
            <!-- HTML content to display if <condition> is true -->
            <?php } else { ?>
            <!-- HTML content to display if <condition> is false -->
            <?php } ?>
            </BODY>
            </HTML>

          這段程序初看上去很混亂,但是事實(shí)上這仍然是普通的if-else語句,只不過在其中插入了HTML代碼,而不是我們之前使用的PHP語句。這個(gè)例子說明了PHP的一個(gè)很大的優(yōu)點(diǎn):你可以自由地選擇在什么時(shí)候進(jìn)行或退出“PHP模式”。你可以將<?php看成是進(jìn)入“PHP模式”的命令,將?>看成是返回到“普通的HTML模式”的命令。這樣上面的例子就變得很容易理解了。

          if-else語句還有另外的一種格式,使用這種格式將使你的程序更易讀懂。如果使用這種格式,我們的“多功能頁(yè)面”的源程序?qū)⑹沁@樣的:

          <HTML>
            <HEAD>
            <TITLE> Multi-Purpose Page Outline </TITLE>
            </HEAD>
            <BODY>
            <?php if (<condition>): ?>
            <!-- HTML content to display if <condition> is true -->
            <?php else: ?>
            <!-- HTML content to display if <condition> is false -->
            <?php endif; ?>
            </BODY>
            </HTML>
            Ok,現(xiàn)在我們已經(jīng)有了所有我們需要的工具,讓我們看看我們的站點(diǎn)中的一個(gè)樣頁(yè):
            <HTML>
            <HEAD>
            <TITLE> Sample Page </TITLE>
            </HEAD>
            <BODY>
            <?php if ( isset($name) ): ?>
            <P>Your name: <?php echo($name); ?></P>
            <P>This paragraph contains a
            <A HREF="newpage.php?name=<?php echo(urlencode
            ($name)); ?>">link</A> that passes the
            name variable on to the next document.</P>
            <?php else: ?>
            <!-- No name has been provided, so we
            prompt the user for one. -->
            <FORM ACTION=<?php echo($PHP_SELF); ?> METHOD=GET>
            Please enter your name: <INPUT TYPE=TEXT NAME="name">
            <INPUT TYPE=SUBMIT VALUE="GO">
            </FORM>
            <?php endif; ?>
            </BODY>
            </HTML>

          在上面的程序中出現(xiàn)了兩個(gè)新的東西,但是理解它們應(yīng)該不是太困難的。首先,我們?cè)跅l件中使用了一個(gè)新的函數(shù):isset。當(dāng)變量已經(jīng)被賦值(在我們這里也就是指提供了用戶名),該函數(shù)將返回(輸出)一個(gè)邏輯真;當(dāng)變量沒有被賦值(在我們這里也就是指沒有提供用戶名),該函數(shù)將返回(輸出)一個(gè)邏輯假。第二個(gè)新東西是在指定FORM標(biāo)志中的ACTION屬性中使用了$PHP_SELF變量。這個(gè)變量是自動(dòng)產(chǎn)生的系統(tǒng)變量之一。具體地說,$PHP_SELF總是被設(shè)置成當(dāng)前頁(yè)面的URL。當(dāng)一個(gè)表單在提交時(shí)指向同一個(gè)頁(yè)面時(shí),這給我們提供一個(gè)簡(jiǎn)單的做法。只不過這時(shí)的$name變量已經(jīng)被賦值了。

          將這一段加到你的網(wǎng)站上的所有網(wǎng)頁(yè)上后,不管訪問者第一次訪問的是什么網(wǎng)頁(yè),都會(huì)被提示輸入用戶名。只有在輸入了用戶名并按了“GO”,才能到達(dá)他們真正想要訪問的網(wǎng)頁(yè)。輸入的用戶名會(huì)被通過每個(gè)連接中的查詢字符串傳遞到之后的各個(gè)頁(yè)面,這樣就可以確保只要求訪問者輸入一次用戶名。

          結(jié)語

          在這一章內(nèi),我們介紹了PHP的所有的基本語法:語句、變量、運(yùn)算符以及控制語句。我們的例子是非常的簡(jiǎn)單。但是事實(shí)上PHP的強(qiáng)大功能在于它內(nèi)置的數(shù)百個(gè)函數(shù),利用這些函數(shù)你可以訪問MySQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)來發(fā)送郵件,可以通過動(dòng)態(tài)產(chǎn)生的圖象來建立PDF文件,你還可以做其他的很多事情。



          php里session的用法php在百度的發(fā)展歷程
          php中關(guān)于引用(&)詳解 PHP正則表達(dá)式的幾則使用技巧
          細(xì)說PHP模板引擎windows下PHP運(yùn)行環(huán)境安裝詳解
          js與php調(diào)用PHP與ASP.NET的比較
          PHP基本語法補(bǔ)充案例PHP簡(jiǎn)明教程
          php開源框架分析PHP文件刪除程序
          php陰歷程序寶典php驗(yàn)證碼制作
          PHP的頁(yè)面緩沖處理機(jī)制PHP之防御sql注入攻擊的方式
          信息發(fā)布:廣州名易軟件有限公司 http://www.jetlc.com
          • 勁爆價(jià):
            不限功能
            不限用戶
            1998元/年

          • 微信客服

            <output id="r87xx"></output>
          1. 
            
            <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
              • 可以看美女操逼视频的网站 | 成人午夜福利日韩高清亚洲 | 91在线无码 | 三级片电影麻豆 | 韩国久久网 | 台湾中文无码娱乐网 | 午夜日韩 | 人妻超碰在线 | 豆花AV网| 日日操B 日日色色 |