当前位置:首页>软件介绍>PHP基本语法 查询:
     
PHP基本语法

        基本的 PHP 语法

        PHP 的脚本语以 <?php 语始~以 ?> 语束。可以把 您PHP 的脚本语放置在文中的任何位置。档当写您然~在支持语的服语器上~可以使用 <? 和 ?> 来语始和语束脚本语。不语~语了到最好的兼容性~我语推使用语准形式 达荐您(<?php)~而不是语形式。写<?php

        ?>

        PHP 文件通常包含 会HTML 语语~就像一 个HTML 文件~以及一些 PHP 脚本代语。在下面~我语提供了一段语语的 PHP 脚本~可以向语语器语出文本 它"Hello World",<html>

        <body>

        <?php

        echo "Hello World";

        ?>

        </body>

        </html>

        PHP 中的每代语行都必语以分语束。分是一语分隔符~用于把指令集分语。个号号区来

        有语通语 两PHP 来语出文本的基语指令,echo 和 print。在上面的例子中~我语使用了 echo 语句语出文来

        本 "Hello World"。

        PHP 中的注语

        在 PHP 中~我语使用 // 来写语语语行注语~或者使用 /* 和 */ 来写语语大的注语语。<html>

        <body>

        <?php

        //This is a comment

        /*

        This is

        a comment

        block

        */

        ?>

        </body>

        </html>

        PHP 中的语量

        语量用于存语语~比如字、文本字符串或语。数数

        一旦语置了某语量~我语就可以在脚本中重语地使用。个它

        PHP 中的所有语量都是以 $ 符语始的。号

        在 PHP 中语置语量的正方法是,确

        $var_name = value;

        PHP 的入语者往往忘语在语量的前面的 会$ 符。如果那语做的语~语量是无效的。号将

        语我语语着语建一存有字符串的语量~和一存有语的语量,个个数

        <?php

        $txt = "Hello World!";

        $number = 16;

        ?>

        PHP 是一语松散语型的语言;Loosely Typed Language,在 PHP 中~不需要在语置语量之前明语语量。声

        在上面的例子中~看到了~不必向 您PHP 声数明语语量的据语型。根据语量被语置的方式~PHP 会确数自语地把语量语语语正的据语型。在强语型的语程语言中~必语在使用前明语量的语型和名。您声称

        在 PHP 中~语量在使用语被自语明。会声

        语量的命名语语

        •语量名必语以字母或下语 划"_" 语语。

        •语量名只能包含字母字字符以及下语。数划

        •语量名不能包含空格。如果语量名由多语语语成~那语语语使用下语语行分隔;比如个划

        $my_string,~或者以大字母语语;比如 写$myString,。PHP 中的字符串

        字符串量用于包含字符串的。

        在本教程中,我打算介几个在 PHP 中用于操作字符串的最常用的函数和运算符。

        在建字符串之后,我就可以它行操作了。您可以直接在函数中使用字符串,或者把它存在量中。

        在下面,PHP 脚本把字符串 "Hello World"  名$txt 的字符串量:

        <?php

        $txt="Hello World";

        echo $txt;

        ?>

        以上代的出:

        Hello World

        在,我着使用不同的函数和运算符来操作我的字符串。

        并运置算符;Concatenation Operator,

        在 PHP 中,只有一个字符串运算符。

        并置运算符 (.) 用于把两个字符串接起来。

        要把两个量接在一起,使用个点运算符 (.) :<?php

        $txt1="Hello World";

        $txt2="1234";

        echo $txt1 . " " . $txt2;

        ?>

        以上代的出:

        Hello World 1234

        您可以看到,我在上面的例子中使用了两次并置运算符。是由于我需要插入第三个字符串。

         了分隔两个量,我在$txt1 与 $txt2 之插入了一个空格。使用 strlen() 函数

        strlen() 函数用于算字符串的度。

         我算出字符串"Hello world!" 的度:

        <?php

        echo strlen("Hello world!");?>

        以上代的出:

        12

        字符串的度信息常常用在循或其他函数中,因那确定字符串何束是很重要的,例如,在循中,我需要在字符串中的最后一个字符之后束循,。

        使用 strpos() 函数

        strpos() 函数用于在字符串内索一段字符串或一个字符。如果在字符串中找到匹配,函数会返回第一个匹配的位置。如果未找到匹配,返回 FALSE。

         我一下,是不是能在字符串中找到子字符串"world":

        <?php

        echo strpos("Hello world!","world");?>

        以上代的出是:

        6

        正如您看到的,在我的字符串中,字符串 "world" 的位置是 6。返回 6 而不是 7,是由于字符串中的首个位置的 0,而不是 1。

        运运算符用于语语语行算.

        PHP 运算符

        本部分列出了在 PHP 中使用的各语算符,运

        算算符数运

        运算符语明例子语果

        +Additionx=24

        x+2

        -Subtractionx=23

        5-x

        *Multiplicationx=420

        x*5

        /Division15/53

        5/22.5%Modulus (division remainder)5%21

        10%82

        10%20++Incrementx=5x=6

        x++

        --Decrementx=5x=4

        x--

        语语算符运

        运算符语明例子

        =x=yx=y

        +=x+=yx=x+y

        -=x-=yx=x-y

        *=x*=yx=x*y

        /=x/=yx=x/y

        .=x.=yx=x.y

        %=x%=yx=x%y

        比语算符运

        运算符语明例子

        ==is equal to5==8 returns false!=is not equal5!=8 returns true>is greater than5>8 returns false<is less than5<8 returns true>=is greater than or equal to5>=8 returns false

        <=is less than or equal to5<=8 returns true

        语语算符运

        运算符语明例子

        &&andx=6

        y=3

        (x < 10 && y > 1) returns true

        ||orx=6

        y=3

        (x==5 || y==5) returns false

        !notx=6

        y=3

        !(x==y) returns true

        if、elseif 以及 else 句用于行基于不同条件的不同作。

        条件语句

        当您写代,您常常需要不同的判断行不同的作。

        您可以在代中使用条件句来完成此任。

        if...else 语句

        在条件成立行一代,条件不成立行另一代

        elseif 语句

        与 if...else 配合使用,在若干条件之一成立行一个代

        If...Else 语句

        如果您希望在某个条件成立行一些代,在条件不成立行另一些代, 使用if....else 句。

        语法

        if (condition)

        code to be executed if condition is true;

        else

        code to be executed if condition is false;

        语例

        如果当前日期是周五,下面的代将出 "Have a nice weekend!",否会出 "Have a nice

        day!":

        <html>

        <body>

        <?php

        $d=date("D");

        if ($d=="Fri")

        echo "Have a nice weekend!"; else

        echo "Have a nice day!"; ?>

        </body>

        </html>

        如果需要在条件成立或不成立行多行代,把些代行包括在花括号中:

        <html>

        <body>

        <?php

        $d=date("D");

        if ($d=="Fri")

        {

        echo "Hello!<br />";

        echo "Have a nice weekend!";

        echo "See you on Monday!";

        }

        ?>

        </body>

        </html>

        ElseIf 语句

        如果希望在多个条件之一成立行代,使用 elseif 句:

        语法

        if (condition)

        code to be executed if condition is true;

        elseif (condition)

        code to be executed if condition is true;

        else

        code to be executed if condition is false;

        语例

        如果当前日期是周五,下面的例子会出 "Have a nice weekend!",如果是周日,出 "Have a

        nice Sunday!",否出 "Have a nice day!":

        <html>

        <body>

        <?php

        $d=date("D");

        if ($d=="Fri")

        echo "Have a nice weekend!"; elseif ($d=="Sun")

        echo "Have a nice Sunday!"; else

        echo "Have a nice day!";

        ?>

        </body>

        </html>

        Switch 语句

        如果您希望有地行若干代之一,使用 Switch 句。使用 Switch  句可以避免冗的if..elseif..else 代。

        语法

        switch (expression)

        {

        case label1:

        code to be executed if expression = label1;

        break;

        case label2:

        code to be executed if expression = label2;

        break;

        default:

        code to be executed

        if expression is different

        from both label1 and label2;}

        语例

        工作原理:

        1.表达式,通常是量,行一次算

        2.把表达式的与构中 case 的行比3.如果存在匹配,行与 case 的代4.代行后,break 语句阻止代跳入下一个 case 中行

        5.如果没有 case  真,使用default 句<?php

        switch ($x)

        {

        case 1:

        echo "Number 1";

        break;

        case 2:

        echo "Number 2";

        break;

        case 3:

        echo "Number 3";

        break;

        default:

        echo "No number between 1 and 3";

        }

        ?>

        </body>

        </html>

        什语是语,数

        在使用 PHP 行的程中,或早或,您会需要建多相似的量。无需很多相似的量,你可以把数据作元素存在数中。数中的元素都有自己的 ID,因此可以方便地它。

        有三数型:语语语语语语

        数数语语语

         有数字ID 的数

        语语语数

        数中的 个每ID 一个

        多数语语语

        包含一个或多个数的数

        数数语语语

        数数存的 个元素都有一个数字每ID 。可以使用不同的方法来建数数:

        例子 1

        在个例子中,会自分配 ID :$names = array("Peter","Quagmire","Joe");

        例子 2

        在个例子中,我人工分配的 ID :$names[0] = "Peter";$names[1] = "Quagmire";$names[2] = "Joe";

        可以在脚本中使用些 ID :

        <?php

        $names[0] = "Peter";$names[1] = "Quagmire";$names[2] = "Joe";

        echo $names[1] . " and " . $names[2] . " are ". $names[0] . "'s

        neighbors";

        ?>

        以上代的出:

        Quagmire and Joe are Peter's neighbors

        语语语数

         数,它的个每ID 都一个。

        在存有具体命名的的数据,使用数数不是最好的做法。通数,我可以把作,并向它。

        例子 1

        在本例中,我使用一个数把年分配不同的人:$ages = array("Peter"=>32, "Quagmire"=>30, "Joe"=>34);

        例子 2

        本例与例子 1 相同,不展示了另一建数的方法:$ages['Peter'] = "32";$ages['Quagmire'] = "30";$ages['Joe'] = "34";可以在脚本中使用 ID :

        <?php

        $ages['Peter'] = "32";$ages['Quagmire'] = "30";$ages['Joe'] = "34";echo "Peter is " . $ages['Peter'] . " years old.";

        ?>

        以上脚本的出:

        Peter is 32 years old.多语语数

        在多数中,主数中的个元素也是一个数。在子数中的个元素也可以是数,以此推。每每

        例子 1

        在本例中,我建了一个有自分配的 ID 的多数:

        $families = array

        (

        "Griffin"=>array

        (

        "Peter",

        "Lois",

        "Megan"

        ),

        "Quagmire"=>array

        (

        "Glenn"

        ),

        "Brown"=>array

        (

        "Cleveland",

        "Loretta",

        "Junior"

        )

        );

        如果出个数的,似:Array

        (

        [Griffin] => Array

        (

        [0] => Peter

        [1] => Lois

        [2] => Megan

        )

        [Quagmire] => Array

        (

        [0] => Glenn

        )

        [Brown] => Array

        (

        [0] => Cleveland

        [1] => Loretta

        [2] => Junior

        )

        )

        例子 2

        我着示上面的数中的一个一的:echo "Is " . $families['Griffin'][2] .

        " a part of the Griffin family?";

        以上代的出:

        Is Megan a part of the Griffin family?

        PHP 中的循句用于行相同的代指定的次数。循语

        在您写代,您常需要相同的代运行很多次。您可以在代

        中使用循句来完成个任。

        在 PHP 中,我可以使用下列循句:

        while

        只要指定的条件成立,循行代do...while

        首先行一次代,然后在指定的条件成立重个循

        for

        循行代指定的次数

        foreach

        根据数中个元素来循代每

        while 语句

        只要指定的条件成立,while 句将重行代。语法

        while (condition)

        code to be executed;例子

        下面的例子示范了一个循,只要量 i 小于或等于 5,代就会一直循行下去。循

        每循一次,量就会增 1:

        <html>

        <body>

        <?php

        $i=1;

        while($i<=5)

        {

        echo "The number is " . $i . "<br />";

        $i++;

        }

        ?>

        </body>

        </html>

        do...while 语句

        do...while 句会至少行一次代语语语语语语 - 然后,只要条件成立,就会重行循。

        语法

        do

        {

        code to be executed;}

        while (condition); 例子

        下面的例子将 i 的行一次累加,然后,只要 i 小于 5 的条件成立,就会累

        加下去:

        <html>

        <body>

        <?php

        $i=0;

        do

        {

        $i++;

        echo "The number is " . $i . "<br />";

        }

        while ($i<5);

        ?>

        </body>

        </html>

        for 语句

        如果您已确定了代的重行次数,可以使用 for 句。

        语法

        for (initialization; condition; increment)

        {

        code to be executed;

        }

        注:语语for 句有三个参数。第一个参数初始化量,第二个参数保存条件,第三个参数包含行循所需的增量。如果 initialization 或 increment 参数中包括了多个

        量,需要用逗号行分隔。而条件必算 true 或者 false。例子

        下面的例子会把文本 "Hello World!"  示5 次:

        <html>

        <body>

        <?php

        for ($i=1; $i<=5; $i++)

        {

        echo "Hello World!<br />";}

        ?>

        </body>

        </html>

        foreach 语句

        foreach 句用于循遍数。

        每 行一次循,当前数元素的就会被value 量,数指会逐一地

        移, - 以此推。

        语法

        foreach (array as value){

        code to be executed;

        }

        例子

        下面的例子示范了一个循,个循可以出定数的:<html>

        <body>

        <?php

        $arr=array("one", "two", "three");

        foreach ($arr as $value){

        echo "Value: " . $value . "<br />";

        }

        ?>

        </body>

        </html>

        PHP 的真正威力源自于它的函数。

        在 PHP 中,提供了超 700 个内建的函数。PHP 函数

        在本教程中,我将您解如何建自己的函数。如需内建函数的参考和例,我的 PHP 参考手册。语建 PHP 函数

        函数是一可以在任何被需要的候行的代。语 建PHP 函数:

        1.所有的函数都使用 "function()" 来始

        2.命名函数 - 函数的名称提示出它的功能。函数名称以字母或下划。

        3.添加 "{" - 口的花括号之后的部分是函数的代。

        4.插入函数代

        5.添加一个 "}" - 函数通花括号来束。例子

        一个的函数,在其被用能出我的名称的:<html>

        <body>

        <?php

        function writeMyName()

        {

        echo "David Yang";

        }

        writeMyName();

        ?>

        </body>

        </html>

        使用 PHP 函数

         在,我要在PHP 脚本中使用个函数了:

        <html>

        <body>

        <?php

        function writeMyName()

        {

        echo "David Yang";

        }

        echo "Hello world!<br />";echo "My name is ";

        writeMyName();

        echo ".<br />That's right, ";writeMyName();

        echo " is my name.";

        ?>

        </body>

        </html>

        以上代的出:

        Hello world!

        My name is David Yang.

        That's right, David Yang is my name.

        PHP 函 数- 添加参数

        我的第一个函数是一个非常的函数。它只能出一个静的字符串。通可以添加参数,我向函数添加更多的功能。参数似一个量。您可能注意到了,函数名称后面有一个括号,比如 writeMyName()。参数就是在括号中定的。

        例子 1

        下面的例子出不同的名字,但姓是相同的:

        <html>

        <body>

        <?php

        function writeMyName($fname)

        {

        echo $fname . " Yang.<br />";

        }

        echo "My name is ";writeMyName("David");echo "My name is ";writeMyName("Mike");echo "My name is ";writeMyName("John");?>

        </body>

        </html>

        上面的代的出:

        My name is David Yang.My name is Mike Yang.My name is John Yang.例子 2

        下面的函数有两个参数:

        <html>

        <body>

        <?php

        function writeMyName($fname,$punctuation)

        {

        echo $fname . " Yang" . $punctuation . "<br />";

        }

        echo "My name is ";writeMyName("David",".");echo "My name is ";writeMyName("Mike","!");

        echo "My name is ";writeMyName("John","...");?>

        </body>

        </html>

        上面的代的出:

        My name is David Yang.My name is Mike Yang!My name is John Yang...PHP 函 数- 返回语

        函数也能用于返回。

        例子

        <html>

        <body>

        <?php

        function add($x,$y)

        {

        $total = $x + $y;

        return $total;

        }

        echo "1 + 16 = " . add(1,16);

        ?>

        </body>

        </html>

        以上代的出:

        1 + 16 = 17

        PHP 的 $_GET 和 $_POST 用于索表中的,比如用入。

        PHP 表语语理

        表例:语语语语

        <html>

        <body>

        <form action="welcome.php" method="post">Name: <input type="text" name="name" />Age: <input type="text" name="age" /><input type="submit" />

        </form>

        </body>

        </html>

        上面的 HTML 面例包含了两个入框和一个提交按。当用填写表并提 交按,表的数据会被送往"welcome.php" 个文件。"welcome.php" 文件似:语语语语语

        <html>

        <body>

        Welcome <?php echo $_POST["name"]; ?>.<br />You are <?php echo $_POST["age"]; ?> years old.</body>

        </html>

        上面个脚本的出本似:

        Welcome John.

        You are 28 years old.

        我将在下一 章解PHP $_GET 和 $_POST。

        表语语语

        在任何可能的候用入行。客端的速度更快,并且可以减服器的。不,任何流量很高以至于不得不担心服器源的站点,也有必要担心站点的安全性。如果表的是数据,就非常有必要采用服器端的。在服器表的一好的方式是,把表它自己,而不是跳到

        不同的面。用就可以在同一表面得到信息。用也就更容易了。$_GET  量用于收集来自method="get" 的表中的。

        $_GET 语量

        $_GET  量是一个数,内容是由HTTP GET 方法送的量名称和。

        $_GET  量用于收集来自method="get" 的表中的。 从有GET 方法的表送的信息,任何人都是可的,会示在器的地址,,并且送的信息量也有限制,最多 100 个字符,。

        例子

        <form action="welcome.php" method="get">

        Name: <input type="text" name="name" />Age: <input type="text" name="age" /><input type="submit" />

        </form>

        当用点提 交按,送的URL 会似:

        ;age=37

        "welcome.php" 文件在可以通 $_GET 量来取表数据了,注意,表域的名称会自成 $_GET 数中的 ID ,:

        Welcome <?php echo $_GET["name"]; ?>.<br />

        You are <?php echo $_GET["age"]; ?> years old!

        语什语使用 $_GET,

        注:语语在使用 $_GET  量,所有的量名和都会示在URL 中。所以在送密 或其他敏感信息,不使用个方法。不,正因量示在URL 中,因此可以在收藏中收藏面。在某些情况下,是很有用的。

        注:语语HTTP GET 方法不适合大型的量 ,是不能超100 个字符的。$_REQUEST 语量

        PHP 的 $_REQUEST  量包含了$_GET, $_POST 以及 $_COOKIE 的内容。

        PHP 的 $_REQUEST  量可用来取得通GET 和 POST 方法送的表数据的果。

        例子

        Welcome <?php echo $_REQUEST["name"]; ?>.<br />You are <?php echo $_REQUEST["age"]; ?> years old!$_POST  量用于收集来自method="post" 的表中的。

        $_POST 语量

        $_POST  量是一个数,内容是由HTTP POST 方法送的量名称和。

        $_POST  量用于收集来自method="post" 的表中的。 从有POST 方法的表送的信息,任何人都是不可的,不会示在器的地址,,并且送信息的量也没有限制。例子

        <form action="welcome.php" method="post">

        Enter your name: <input type="text" name="name" />Enter your age: <input type="text" name="age" />

        <input type="submit" />

        </form>

        当用点提交按,URL 不会含有任何表数据,看上去似:;welcome.php" 文件在可以通 $_POST 量来取表数据了,注意,表 域的名称会自成$_POST 数中的 ID ,:

        $_POST["name"]; ?>.<br />Welcome <?php echo

        You are <?php echo $_POST["age"]; ?> years old!语什语使用 $_POST,

        •通 HTTP POST  送的量不会示在URL 中。

        •量没有度限制。

        不,由于量不示在 URL 中,所有无法把面加入。$_REQUEST 语量

        PHP 的 $_REQUEST  量包含了$_GET, $_POST 以及 $_COOKIE 的内容。PHP 的 $_REQUEST  量可用来取得通GET 和 POST 方法送的表数据的果。例子

        Welcome <?php echo $_REQUEST["name"]; ?>.<br />

        You are <?php echo $_REQUEST["age"]; ?> years old!

        PHP 的 date() 函数用于格式化或日期。

        PHP Date() 函数

        PHP Date() 函数可把戳格式化可性更好的日期和。

        语法

        date(format,timestamp)

        参数描述

        format必需。定戳的格式。

        timestamp可。定戳。默是当前的日期和。PHP 日期 - 什语是语语;戳Timestamp,,

         戳是自1970 年 1 月 1 日,00:00:00 GMT,以来的秒数。它也被称 Unix 戳,Unix

        Timestamp,。

        PHP 日期 - 格式化日期

        date() 函数的第一个参数定了如何格式化日期/。它使用字母来表示日期和的格式。里列出了一些可用的字母:

        •d - 月中的天 (01-31)

        •m - 当前月,以数字 (01-12)

        •Y - 当前的年,四位数,

        您可以在我的 PHP Date 参考手册中,找到格式参数中可以使用的所有字母。

        可以在字母之插入其他字符,比如 "/"、"." 或者 "-",就可以增加附加格式了:<?php

        echo date("Y/m/d");

        echo "<br />";

        echo date("Y.m.d");

        echo "<br />";

        echo date("Y-m-d");

        ?>

        以上代的出似:

        2006/07/11

        2006.07.11

        2006-07-11

        PHP 日期 - 添加语语戳

        date() 函数的第二个参数定了一个戳。此参数是可的。如果您没有提供戳,当前的将被使用。

        在我的例子中,我将使用 mktime() 函数明天建一个戳。mktime() 函数可指定的日期返回 Unix 戳。

        语法

        mktime(hour,minute,second,month,day,year,is_dst)如需 得某一天的戳,我只要置mktime() 函数的 day 参数就可以了:<?php

        $tomorrow = mktime(0,0,0,date("m"),date("d")+1,date("Y"));

        echo "Tomorrow is ".date("Y/m/d", $tomorrow);?>

        以上代的出似:

        明天是 2006/07/12

        服器端引 用(SSI) 用于建可在多个面重使用的函数、眉、脚或元素。服语器端引用;Server Side Includes,

        通 include() 或 require() 函数,您可以在服器 行PHP 文件之前在文件中插入一个文件的内容。除了它理的方式不同之外,两个函数在其他方面都是相同的。include() 函数会生成一个警告,但是脚本会行,,而 require() 函数会生成一个致命,fatal error,,在生后脚本会停止行,。

        两个函数用于建可在多个面重使用的函数、眉、脚或元素。

        会者省大量的。意味着您可以建供所有网引用的准眉或菜文件。当眉需要更新,您只更新一个包含文件就可以了,或者当您向网站添加一新面,需要修改一下菜文件,而不是更新所有网中的接,。

        include() 函数

        include() 函数可得指定文件中的所有文本,并把文本拷到使用 include 函数的文件中。

        例子 1

        假 您有一个准的眉文件,名"header.php"。如需在面中引用个眉文件,使用 include() 函数,就像:

        <html>

        <body>

        <?php include("header.php"); ?>

        <h1>Welcome to my home page</h1>

        <p>Some text</p>

        </body>

        </html>

        例子 2

        在,假我有一个在所有面上使用的准菜文件。看下面个 "menu.php":

        <html>

        <body>

        <a href=";>Home</a> |

        <a href=";>About Us</a> |

        <a href=";>Contact Us</a>

        三个文件,"default.php"、"about.php" 以及 "contact.php" 都引用了 "menu.php" 文件。是 "default.php" 中的代:

        <?php include("menu.php"); ?>

        <h1>Welcome to my home page</h1>

        <p>Some text</p>

        </body>

        </html>

        如果您在 器中看"default.php" 的源代,似:

        <html>

        <body>

        <a href="default.php">Home</a> |

        <a href="about.php">About Us</a> | <a href="contact.php">Contact Us</a><h1>Welcome to my home page</h1>

        <p>Some text</p>

        </body>

        </html>

        同,当然,我也将用相同的方法理 "about.php" 和 "contact.php"。通使用引用文件,在您需要重命名接、更改接序或向站点添加另一网,只要地更 新"menu.php" 文件中的文本即可。

        require() 函数

        require() 函数与 include() 相同,不同的是它的理方式。

        include() 函数会生成一个警告,但是脚本会行,,而 require() 函数会生成一个致命,fatal error,,在生后脚本会停止行,。

        如果在您通 include() 引用文件生了,会得到似下面的消息:PHP 代:语语

        <html>

        <body>

        <?php

        include("wrongFile.php");

        echo "Hello World!";

        ?>

        </body>

        </html>

        语语消息:

        Warning: include(wrongFile.php) [function.include]:

        failed to open stream:

        No such file or directory in C:homewebsite est.php on line 5

        Warning: include() [function.include]:Failed opening 'wrongFile.php' for inclusion(include_path='.;C:php5pear')in C:homewebsite est.php on line 5Hello World!

        注意,echo 句依然被行了:是因警告不会中止脚本的行。

         在,我使用require() 函数运行相同的例子。

        PHP 代:语语

        <html>

        <body>

        <?php

        require("wrongFile.php");

        echo "Hello World!";

        ?>

        </body>

        </html>

        语语消息:

        Warning: require(wrongFile.php) [function.require]:

        failed to open stream:

        No such file or directory in C:homewebsite est.php on line 5

        Fatal error: require() [function.require]:Failed opening required 'wrongFile.php'(include_path='.;C:php5pear')in C:homewebsite est.php on line 5由于在致命 生后止了脚本的行,因此echo 句不会行。正因在文件不存在或被重命名后脚本不会行,因此我推荐

        使用 require() 而不是 include()。

        fopen() 函数用于在 PHP 中打文件。

        打语文件

        fopen() 函数用于在 PHP 中打文件。

        此函数的第一个参数含有要打的文件的名称,第二个参数定了使用哪模式来打文件:

        <html>

        <body>

        <?php

        $file=fopen("welcome.txt","r");?>

        </body>

        </html>

        文件可能通下列模式来打:

        模式描述

        r只。在文件的始。

        r+/写。在文件的始。

        w只写。打并清空文件的内容,如果文件不存在,建新文件。w+/写。打并清空文件的内容,如果文件不存在,建新文件。a追加。打并向文件文件的末端行写操作,如果文件不存在,建新文件。a+/追加。通向文件末端写内容,来保持文件内容。x 只写。建新文件。如果文件已存在,返回FALSE。

        / 写。建新文件。如果文件已存在,返回FALSE 和一个。x+

        注:如果 fopen()  无法打指定文件,返回0 (false)。例子

        如果 fopen() 不能打指定的文件,下面的例子会生成一段消息:

        <html>

        <body>

        <?php

        $file=fopen("welcome.txt","r") or exit("Unable to open file!");

        ?>

        </body>

        </html>

        语语文件

        fclose() 函数用于打的文件。

        <?php

        $file = fopen("test.txt","r");//some code to be executedfclose($file);

        ?>

        语语 End-of-file

        feof() 函数是否已达到文件的 末端(EOF)。在循遍未知度的数据,feof() 函数很有用。

        注:语语在 w 、a 以及 x 模式,您无法取打的文件:if (feof($file)) echo "End of file";

        逐行语取文件

        fgets() 函数用于从文件中逐行取文件。

        注:语语在用函数之后,文件指会移到下一行。例子

        下面的例子逐行取文件,直到文件末端止:

        <?php

        $file = fopen("welcome.txt", "r") or exit("Unable to open file!");

        //Output a line of the file until the end is reached

        while(!feof($file))

        {

        echo fgets($file). "<br />";

        }

        fclose($file);

        ?>

        逐字符语取文件

        fgetc() 函数用于从文件逐字符地取文件。

        注:语语在用函数之后,文件指会移到下一个字符。例子

        下面的例子逐字符地取文件,直到文件末端止:

        <?php

        $file=fopen("welcome.txt","r") or exit("Unable to open file!");

        while (!feof($file))

        {

        echo fgetc($file);

        }

        fclose($file);

        ?>

        通语 PHP~可以把文件上语到服语器。

        语建一文件上语表语个

        允语用语表语上语文件是非常有用的。从

        语看下面语供上语文件的 个HTML 表语,

        <html>

        <body>

        <form action="upload_file.php" method="post"

        enctype="multipart/form-data"><label for="file">Filename:</label><input type="file" name="file" id="file" />

        <br />

        <input type="submit" name="submit" value="Submit" />

        </form>

        </body>

        </html>

        语留意如下有语此表语的信息,

        <form> 语语的 enctype 属哪性语定了在提交表语语要使用语容语型。在表语需要二语制据语~比如文件语内数内

        容~语使用 "multipart/form-data"。

        <input> 语语的 type="file" 属性语定了语语把语入作语文件语理。语例语~在语语器中语语语~看到语入旁语来来当会框

        有一语语按语。个

        注语,允语用语上语文件是一巨大的安全语语。语语语允语可信的用语语行文件上语操作。个

        语建上语脚本

        "upload_file.php" 文件含有供上语文件的代语,

        <?php

        if ($_FILES["file"]["error"] > 0)

        {

        echo "Error: " . $_FILES["file"]["error"] . "<br />";

        }

        else

        {

        echo "Upload: " . $_FILES["file"]["name"] . "<br />";

        echo "Type: " . $_FILES["file"]["type"] . "<br />";

        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";

        echo "Stored in: " . $_FILES["file"]["tmp_name"];

        }

        ?>

        通语使用 PHP 的全局语 数$_FILES~可以客语语算机向语程服语器上语文件。你从

        第一是表语的 个参数input name~第二下语可以是 个"name", "type", "size", "tmp_name" 或 "error"。就像语语,

        •$_FILES["file"]["name"] - 被上语文件的名称

        •$_FILES["file"]["type"] - 被上语文件的语型

        •$_FILES["file"]["size"] - 被上语文件的大小~以字语语

        •$_FILES["file"]["tmp_name"] - 存语在服语器的文件的语语副本的名称

        •$_FILES["file"]["error"] - 由文件上语语致的语语代语

        语是一语非常语语文件上语方式。基于安全方面的考语~语语增加有语什语用语有语上语文件的限制。您当

        上语限制

        在语脚本中~我语增加了语文件上语的限制。用语只能上语 个.gif 或 .jpeg 文件~文件大小必语小于 20 kb,<?php

        if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/pjpeg"))&& ($_FILES["file"]["size"] < 20000))

        {

        if ($_FILES["file"]["error"] > 0)

        {

        echo "Error: " . $_FILES["file"]["error"] . "<br />";

        }

        else

        {

        echo "Upload: " . $_FILES["file"]["name"] . "<br />";

        echo "Type: " . $_FILES["file"]["type"] . "<br />";

        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";

        echo "Stored in: " . $_FILES["file"]["tmp_name"];

        }

        }

        else

        {

        echo "Invalid file";

        }

        ?>

        注语,语于 IE~语语 jpg 文件的语型必语是 pjpeg~语于 FireFox~必语是 jpeg。

        保存被上语的文件

        上面的例子在服语器的 PHP 语语文件语语建了一被上语文件的语语副本。个

        语语语的语制文件在脚本语束语消失。要保存被上语的文件~我语需要把拷语到外的位置,个会它另

        <?php

        if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/pjpeg"))&& ($_FILES["file"]["size"] < 20000))

        {

        if ($_FILES["file"]["error"] > 0)

        {

        echo "Return Code: " . $_FILES["file"]["error"] . "<br />";

        }

        else

        {

        echo "Upload: " . $_FILES["file"]["name"] . "<br />";

        echo "Type: " . $_FILES["file"]["type"] . "<br />";

        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";

        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

        if (file_exists("upload/" . $_FILES["file"]["name"]))

        {

        echo $_FILES["file"]["name"] . " already exists. ";

        }

        else

        {

        move_uploaded_file($_FILES["file"]["tmp_name"],

        "upload/" . $_FILES["file"]["name"]);

        echo "Stored in: " . "upload/" . $_FILES["file"]["name"];

        }

        }

        }

        else

        {

        echo "Invalid file";

        }

        ?>

        上面的脚本语语了是否已存在此文件~如果不存在~语把文件拷语到指定的文件语。注语,语例子把文件保存到了名语 个"upload" 的新文件语。

        cookie 常用于用。

        什语是 Cookie,

        cookie 常用于用。cookie 是服器留当相同的在用算每机中的小文件。 算机通器求面,它同会送cookie。通 PHP,您能建并取回 cookie 的。

        如何语建 cookie,

        setcookie() 函数用于置 cookie。

        注:语语setcookie() 函数必位于 <html> 之前。

        语法

        setcookie(name, value, expire, path, domain);例子

        在下面的例子中,我将建名 "user" 的 cookie,把它 "Alex Porter"。我也定了此 cookie 在一小后期:

        <?php

        setcookie("user", "Alex Porter", time()+3600);?>

        <html>

        <body>

        </body>

        </html>

        注:语语在 送cookie ,cookie 的会自行 URL ,在取回行自解,防止 URL  ,使用setrawcookie() 取而代之,。

        如何取回 Cookie 的语,

        PHP 的 $_COOKIE  量用于取回cookie 的。

        在下面的例子中,我 取回了名"user" 的 cookie 的,并把它示在了面上:<?php

        // Print a cookie

        echo $_COOKIE["user"];

        // A way to view all cookies

        print_r($_COOKIE);

        ?>

        在下面的例子中,我使用 isset() 函数来确是否已置了 cookie:<html>

        <body>

        <?php

        if (isset($_COOKIE["user"]))

        echo "Welcome " . $_COOKIE["user"] . "!<br />";

        else

        echo "Welcome guest!<br />";

        ?>

        </body>

        </html>

        如何语除 cookie,

        当 除cookie ,您当使期日期更去的点。

        除的例子:

        <?php

        // set the expiration date to one hour agosetcookie("user", "", time()-3600);?>

        如果语语器不支持 cookie 语语语,怎

        如果您的用程 及不支持序涉cookie 的器,您就不得不采取其他方法在用程序中从一面向另一面信息。一方式是从表数据,有表和用入的内容,稍早前我已在本教程中介了,。

        下面的表在用提 交按向"welcome.php" 提交了用入:<html>

        <body>

        <form action="welcome.php" method="post">Name: <input type="text" name="name" />Age: <input type="text" name="age" /><input type="submit" />

        </form>

        </body>

        </html>

        取回 "welcome.php" 中的,就像:

        <html>

        <body>

        Welcome <?php echo $_POST["name"]; ?>.<br />You are <?php echo $_POST["age"]; ?> years old.</body>

        </html>

        PHP session 量用于存有用会的信息,或更改用会的置。Session 量保存的信息是一用的,并且可供用程序中的所有面使用。

        PHP Session 语量

        当您运行一个用程序,您会打它,做些更改,然后它。很像一次会。算机清楚你是。它知道你何启用程序,并在何止。但是在因特网上,存在一个:服器不知道你是以及你做什,是由于 HTTP 地址不能持状。

        通在服器上存用信息以便随后使用,PHP session 解决了个,比如用名称、商品等,。不,会信息是的,在用离网站后将被除。如果您需要永久存信息,可以把数据存在数据中。

        Session 的工作机制是:个者建一个 每唯一的id (UID),并基于个 UID 来存量。UID 存在 cookie 中,亦或通 URL 行。

        语始 PHP Session

        在您把用信息存到 PHP session 中之前,首先必启会。

        注:语语session_start() 函数必位于 <html> 之前:

        <?php session_start(); ?>

        <html>

        <body>

        </body>

        </html>

        上面的代会向服器注册用的会,以便您可以始保存用信息,同会用会分配一个 UID。

        存语 Session 语量

        存和 取回session  量的正确方法是使用PHP $_SESSION 量:<?php

        session_start();

        // store session data

        $_SESSION['views']=1;

        ?>

        <html>

        <body>

        <?php

        //retrieve session data

        echo "Pageviews=". $_SESSION['views'];?>

        </body>

        </html>

        出:

        Pageviews=1

        在下面的例子中,我建了一个的 page-view 数器。isset() 函数是否已置

        "views"  量。如果已置"views"  量,我累加数器。如果"views" 不存在,我

         建"views"  量,并把它置1:

        <?php

        session_start();

        if(isset($_SESSION['views']))

        $_SESSION['views']=$_SESSION['views']+1;

        else

        $_SESSION['views']=1;

        echo "Views=". $_SESSION['views'];?>

        语语 Session

        如果您希望 除某些session 数据,可以使用 unset() 或 session_destroy() 函数。unset() 函数用于 放指定的session 量:

        <?php

        unset($_SESSION['views']);

        ?>

        您也可以通 session_destroy() 函数 底session:

        <?php

        session_destroy();

        ?>

        注:语语session_destroy() 将重置 session,您将失去所有已存的 session 数据。PHP 允您从脚本直接送子件。

        PHP mail() 函数

        PHP mail() 函数用于从脚本中送子件。

        语法

        mail(to,subject,message,headers,parameters)参数描述

        to 必需。定email 接收者。

        subject 必需。定email 的主。注:参数不能包含任何新行字符。message 必需。定要送的消息。使用LF ( ) 来分隔各行。

        可。定 附加的,比如From、Cc 以及Bcc。headers

         当使用CRLF ( ) 分隔附加的。

        parameters可。件送程序定外的参数。

        注:语语PHP 需要一个已安装且正在运行的件系,以便使件函数可用。所用的程序通在 php.ini 文件中的配置置行定。在我的 PHP Mail 参考手册更多内容。PHP 语易 E-Mail

        通 PHP  送子件的最的方式是送一封文本email。在下面的例子中,我首先声明量($to, $subject, $message, $from, $headers),然后我在 mail() 函数中使用些量来 送了一封e-mail:

        <?php

        $to = "someone@example.com";

        $subject = "Test mail";

        $message = "Hello! This is a simple email message.";

        $from = "someonelse@example.com";$headers = "From: $from";

        mail($to,$subject,$message,$headers);

        echo "Mail Sent.";

        ?>

        PHP Mail Form

        通 PHP,您能在自己的站点制作一个反表。下面的例子向指定的 e-mail 地址送了一条文本消息:

        <html>

        <body>

        <?php

        if (isset($_REQUEST['email']))

        //if "email" is filled out, send email

        {

        //send email

        $email = $_REQUEST['email'] ;

        $subject = $_REQUEST['subject'] ;

        $message = $_REQUEST['message'] ;

        mail( "someone@example.com", "Subject: $subject",

        $message, "From: $email" );

        echo "Thank you for using our mail form";

        }

        else

        //if "email" is not filled out, display the form

        {

        echo "<form method='post' action='mailform.php'>

        Email: <input name='email' type='text' /><br />

        Subject: <input name='subject' type='text' /><br />

        Message:<br />

        <textarea name='message' rows='15' cols='40'>

        </textarea><br />

        <input type='submit' />

        </form>";

        }

        ?>

        </body>

        </html>

        例子解:语语

        1.首先,是否填写了件入框

        2.如果未填写,比如在面被首次,,出 HTML 表

        3.如果已填写,在表被填写后,,从表送件

        4.当点提交按后,重新入面,示件送成功的消息

        在上一语中的 PHP e-mail 脚本中~存在着一漏洞。个

        PHP E-mail 注入

        首先~语看上一语中的 PHP 代语,

        <html>

        <body>

        <?php

        if (isset($_REQUEST['email']))

        //if "email" is filled out, send email

        {

        //send email

        $email = $_REQUEST['email'] ;

        $subject = $_REQUEST['subject'] ;

        $message = $_REQUEST['message'] ;

        mail("someone@example.com", "Subject: $subject",

        $message, "From: $email" );

        echo "Thank you for using our mail form";

        }

        else

        //if "email" is not filled out, display the form

        {

        echo "<form method='post' action='mailform.php'>

        Email: <input name='email' type='text' /><br />

        Subject: <input name='subject' type='text' /><br />

        Message:<br />

        <textarea name='message' rows='15' cols='40'>

        </textarea><br />

        <input type='submit' />

        </form>";

        }

        ?>

        </body>

        </html>

        以上代语存在的语语是~未语授语的用语可通语语入表语在语件语部入据。插数

        假如用语在表语中的语入加入语些文本~出语什语情,框内会况呢

        someone@example.com%0ACc:person2@example.com%0ABcc:person3@example.com,person3@example.com,

        anotherperson4@example.com,person5@example.com

        %0ABTo:person6@example.com

        与往常一语~mail() 函把上面的文本放入语件语部~那语语在语部有了语外的 数Cc:, Bcc: 以及 To: 字段。当用语点语提交按语语~语封 e-mail 会被语送到上面所有的地址,

        PHP 防止 E-mail 注入

        防止 e-mail 注入的最好方法是语语入语行语语。

        下面的代语上一语语似~不语我语已语增加了语语表语中 与email 字段的语入语语程序,<html>

        <body>

        <?php

        function spamcheck($field)

        {

        //filter_var() sanitizes the e-mail

        //address using FILTER_SANITIZE_EMAIL

        $field=filter_var($field, FILTER_SANITIZE_EMAIL);

        //filter_var() validates the e-mail

        //address using FILTER_VALIDATE_EMAIL

        if(filter_var($field, FILTER_VALIDATE_EMAIL))

        {

        return TRUE;

        }

        else

        {

        return FALSE;

        }

        }

        if (isset($_REQUEST['email']))

        {//if "email" is filled out, proceed

        //check if the email address is invalid

        $mailcheck = spamcheck($_REQUEST['email']);

        if ($mailcheck==FALSE)

        {

        echo "Invalid input";

        }

        else

        {//send email

        $email = $_REQUEST['email'] ;

        $subject = $_REQUEST['subject'] ;

        $message = $_REQUEST['message'] ;

        mail("someone@example.com", "Subject: $subject",

        $message, "From: $email" );

        echo "Thank you for using our mail form";

        }

        }

        else

        {//if "email" is not filled out, display the form

        echo "<form method='post' action='mailform.php'>

        Email: <input name='email' type='text' /><br />

        Subject: <input name='subject' type='text' /><br />

        Message:<br />

        <textarea name='message' rows='15' cols='40'>

        </textarea><br />

        <input type='submit' />

        </form>";

        }

        ?>

        </body>

        </html>

        在上面的代语中~我语使用了 PHP 语语器语语入语行语语,来

        •FILTER_SANITIZE_EMAIL 从字符串中语除语子语件的非法字符

        •FILTER_VALIDATE_EMAIL 语语语子语件地址您可以在我语的 PHP 语语器语一语中语语更多有语语语器的容。内

        在 PHP 中,默的理很。一条消息会被送到器,条消息

        有文件名、行号以及一条描述的消息。

        PHP 语语语理

        在建脚本和 web 用程序,理是一个重要的部分。如果您的代缺少,那程序看上去很不,也安全敞了大。本教程介了 PHP 中一些最重要的方法。

        我将您解不同的理方法:

        • 的"die()" 句

        •自定和触器

        •告

        基本的语语语理,使用 die() 函数

        第一个例子展示了一个打文本文件的脚本:

        <?php

        $file=fopen("welcome.txt","r");?>

        如果文件不存在,您会得似的:

        Warning: fopen(welcome.txt) [function.fopen]: failed to open stream:

        No such file or directory in C:webfolder est.php on line 2了避免用得似上面的消息,我在文件之前文件是否存在:<?php

        if(!file_exists("welcome.txt"))

        {

        die("File not found");

        }

        else

        {

        $file=fopen("welcome.txt","r");

        }

        ?>

        在,假如文件不存在,您会得到似的消息:

        File not found

        比起之前的代,上面的代更有效,是由于它采用了一个的理机制在之后止了脚本。

        不,地止脚本并不是恰当的方式。我研究一下用于理 的的PHP 函数。

        语建自定语语语语理器

        建一个自定的理器非常。我很地建了一个用函数,可

        以在 PHP 中生用函数。

         函数必有能力理至少两个参数(error level 和 error message),但是可以接受最多五个参数,可的:file, line-number 以及 error context,:

        语法

        error_function(error_level,error_message,error_file,error_line,error_context)

        参数描述

        必需。用定的定告。必是一个数。error_level

        参下面的表格:告。

        error_message必需。用定的定消息。

        error_file可。定在其中生的文件名。

        error_line可。定生的行号。

        error_context可。定一个数,包含了当个量以及它的。每生在用的

        语语语语语告

        些告是理程序旨在理的的不同的型:

        语常量描述

        2E_WARNING 非致命的run-time 。不停脚本行。

        Run-time 通知。8E_NOTICE

        脚本可能有生,但也可能在脚

        本正常运行生。

        256E_USER_ERROR致命的用生成的。似于程序使

        用 PHP 函数trigger_error()  置的E_ERROR。512E_USER_WARNING非致命的用生成的警告。似于程序

         使用PHP 函数trigger_error()  置的E_WARNING。1024E_USER_NOTICE用生成的通知。似于程序使用

        PHP 函数trigger_error()  置的E_NOTICE。4096E_RECOVERABLE_ERROR 可捕的致命。似E_ERROR,但可被用

        定的理程序捕。( 参set_error_handler())

        8191E_ALL所有和 警告,除E_STRICT 以外。

        ,在 PHP 6.0,E_STRICT 是E_ALL 的一部分,在,我建一个理的函数:

        function customError($errno, $errstr)

        {

        echo "<b>Error:</b> [$errno] $errstr<br />";

        echo "Ending Script";

        die();

        }

        上面的代是一个的理函数。当它被触,它会取得和消息。然后它会出和消息,并止脚本。

        在,我已建了一个理函数,我需要确定在何触函数。Set Error Handler

        PHP 的默理程序是内建的理程序。我打算把上面的函数改造脚本运行期的默理程序。

        可以修改理程序,使其用到某些,脚本就可以不同的方

        式来理不同的。不,在本例中,我打算所有来使用我的自定理程序:set_error_handler("customError");由于我希望我的自定函数来理所有,set_error_handler() 需要一个参数,可以添加第二个参数来定。

        语例

        通出不存在的量,来个理程序:

        <?php

        //error handler function

        function customError($errno, $errstr)

        {

        echo "<b>Error:</b> [$errno] $errstr";

        }

        //set error handler

        set_error_handler("customError");//trigger error

        echo($test);

        ?>

        以上代的出似:

        Error: [8] Undefined variable: test触语语语

        在脚本中用入数据的位置,当用的入无效触的很有用的。在 PHP 中,个任由 trigger_error() 完成。

        例子

        在本例中,如果 "test"  量大于"1",就会生:

        <?php

        $test=2;

        if ($test>1)

        {

        trigger_error("Value must be 1 or below");}

        ?>

        以上代的出似:

        Notice: Value must be 1 or below

        in C:webfolder est.php on line 6您可以在脚本中任何位置触,通添加的第二个参数,您能定所触的。可能的型:语语语语语

        •E_USER_ERROR - 致命的用 生成的run-time 。无法恢。脚本行被中断。

        •E_USER_WARNING - 非致命的用 生成的run-time 警告。脚本行不被中断。

        •E_USER_NOTICE - 默 。用生成的run-time 通知。脚本了可能的,

        也有可能在脚本运行正常生。

        例子

        在本例中,如果 "test"  量大于"1", 生E_USER_WARNING 。如果生了 E_USER_WARNING,我将使用我的自定理程序并束脚本:

        <?php

        //error handler function

        function customError($errno, $errstr)

        {

        echo "<b>Error:</b> [$errno] $errstr<br />";

        echo "Ending Script";

        die();

        }

        //set error handler

        set_error_handler("customError",E_USER_WARNING);//trigger error

        $test=2;

        if ($test>1)

        {

        trigger_error("Value must be 1 or below",E_USER_WARNING);

        }

        ?>

        以上代的出似:

        Error: [512] Value must be 1 or belowEnding Script

         在,我已学了如何建自己的error,以及如何它,在我研究一下。

        语语语语

        默 地,根据在php.ini 中的 error_log 配置,PHP 向服器的系或文件送 。通使用error_log() 函数,您可以向指定的文件或程目的地送。通子件向您自己送消息,是一得指定的通知的好法。

        通语 E-Mail 语语语语语送消息

        在下面的例子中,如果特定的生,我将送有消息的子件,并束脚本:<?php

        //error handler function

        function customError($errno, $errstr)

        {

        echo "<b>Error:</b> [$errno] $errstr<br />";

        echo "Webmaster has been notified";

        error_log("Error: [$errno] $errstr",1,

        "someone@example.com","From: webmaster@example.com");

        }

        //set error handler

        set_error_handler("customError",E_USER_WARNING);//trigger error

        $test=2;

        if ($test>1)

        {

        trigger_error("Value must be 1 or below",E_USER_WARNING);

        }

        ?>

        以上代的出似:

        Error: [512] Value must be 1 or belowWebmaster has been notified

        接收自以上代的件似:

        Error: [512] Value must be 1 or below 个方法不适合所有的。常当通使用默的PHP 系在服器上行。异常,Exception,用于在指定的生改脚本的正常流程。

        什语是常,异

        PHP 5 提供了一新的面向象的理方法。

        异常理用于在指定的,异常,情况生改脚本的正常流程。情况称异常。当异常被触,通常会生:

        •当前代状被保存

        •代行被切到定的异常理器函数

        •根据情况,理器也会从保存的代状重新始行代,止

        脚本行,或从代中另外的位置行脚本

        我将展示不同的理方法:

        •异常的基本使用

        •建自定的异常理器

        •多个异常

        •重新抛出异常

        •置异常理器

        异常的基本使用

        当异常被抛出,其后的代不会行,PHP 会找匹配的 "catch" 代。如果异常没有被捕 ,而且又没用使用set_exception_handler() 作相的理的,那将 生一个重的,致命,,并且出"Uncaught Exception" ,未捕异常,的消息。

        我抛出一个异常,同不去捕它:

        <?php

        //create function with an exceptionfunction checkNum($number)

        {

        if($number>1)

        {

        throw new Exception("Value must be 1 or below");

        }

        return true;

        }

        //trigger exception

        checkNum(2);

        ?>

        上面的代会得似的一个:

        Fatal error: Uncaught exception 'Exception' with message 'Value must be 1 or below' in C:webfolder est.php:6

        Stack trace: #0 C:webfolder est.php(12): checkNum(28) #1 {main} thrown in C:webfolder est.php on line 6

        Try, throw 和 catch

        要避免上面例子出的,我需要建适当的代来理异常。

        理理程序当包括:

        1.Try - 使用异常的函数位于 "try" 代内。如果没有触异常,代

        将照常行。但是如果异常被触,会抛出一个异常。

        2.Throw -  里一个定如何触异每常。"throw" 必至少一个 "catch"3.Catch - "catch" 代会捕异常,并建一个包含异常信息的象

        我触一个异常:

        <?php

        //建可抛出一个异常的函数

        function checkNum($number)

        {

        if($number>1)

        {

        throw new Exception("Value must be 1 or below");

        }

        return true;

        }

        //在 "try" 代中触异常

        try

        {

        checkNum(2);

        //If the exception is thrown, this text will not be shown

        echo 'If you see this, the number is 1 or below';

        }

        //捕异常

        catch(Exception $e)

        {

        echo 'Message: ' .$e->getMessage();

        }

        ?>

        上面代将得似一个:

        Message: Value must be 1 or below 例子解:语语

        上面的代抛出了一个异常,并捕了它:

        1. 建checkNum() 函数。它数字是否 大于1。如果是,抛出一个异常。

        2.在 "try" 代中用 checkNum() 函数。

        3.checkNum() 函数中的异常被抛出

        4."catch" 代接收到异常,并建一个包含异常信息的象

        ($e)。

        5.通 从个exception  象用$e->getMessage(),出来自异常的消息不,了“ 个每遵循throw 必一个 catch”的原,可以置一个的异常理器来理漏掉的。

        语建一自定语的 个Exception 语

         建自定的异常理程序非常。我地建了一个的,当PHP 中 生异常,可用其函数。必是exception 的一个展。 个自定的exception  承了PHP 的 exception 的所有属性,您可向其添加自定的函数。我始建 exception :

        <?php

        class customException extends Exception

        {

        public function errorMessage()

        {

        //error message

        $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()

        .': <b>'.$this->getMessage().'</b> is not a valid E-Mail address';

        return $errorMsg;

        }

        }

        $email = "someone@example...com";

        try

        {

        //check if

        if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)

        {

        //throw exception if email is not valid

        throw new customException($email);

        }

        }

        catch (customException $e)

        {

        //display custom message

        echo $e->errorMessage();

        }

        ?>

         个新的是旧的exception  的副本,外加errorMessage() 函数。正因它是旧的副本,因此它从旧承 了属性和方法,我可以使用exception 的方法,比如 getLine() 、 getFile() 以及 getMessage()。

        例子解:语语

        上面的代 抛出了一个异常,并通一个自定的exception 来捕它:

        1.customException()  是作旧的exception 的一个展来建的。它就

        承了旧的所有属性和方法。

        2. 建errorMessage() 函数。如果 e-mail 地址不合法,函数返回一条消息

        3.把 $email  量置不合法的e-mail 地址字符串

        4. 行"try" 代,由于 e-mail 地址不合法,因此抛出一个异常

        5."catch" 代捕异常,并示消息

        多常个异

        可以一段脚本使用多个异常,来多情况。

        可以使用多个 if..else 代,或一个 switch 代,或者嵌套多个异常。些异常能使用不同的 exception ,并返回不同的消息:

        <?php

        class customException extends Exception{

        public function errorMessage()

        {

        //error message

        $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()

        .': <b>'.$this->getMessage().'</b> is not a valid E-Mail address';

        return $errorMsg;

        }

        }

        $email = "someone@example.com";

        try

        {

        //check if

        if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)

        {

        //throw exception if email is not valid

        throw new customException($email);

        }

        //check for "example" in mail address

        if(strpos($email, "example") !== FALSE)

        {

        throw new Exception("$email is an example e-mail");

        }

        }

        catch (customException $e)

        {

        echo $e->errorMessage();

        }

        catch(Exception $e)

        {

        echo $e->getMessage();

        }

        ?>

        例子解:语语

        上面的代了两条件,如何任何条件不成立,抛出一个异常:

        1.customException()  是作旧的exception 的一个展来建的。它就

        承了旧的所有属性和方法。

        2. 建errorMessage() 函数。如果 e-mail 地址不合法,函数返回一个消息。

        3. 行"try" 代,在第一个条件下,不会抛出异常。

        4.由于 e-mail 含有字符串 "example",第二个条件会触异常。

        5."catch" 代会捕异常,并示恰当的消息

        如果没有捕 customException, 捕了base exception,在那里理异常。重新抛出常异

        有,当异常被抛出,您也希望以不同于准的方式它行理。可以在一个 "catch" 代中再次抛出异常。

        脚本用藏系。程序来,系也很重要,但是用它并不感趣。了用更容易使用,您可以再次抛出有用比友好的消息的异常:<?php

        class customException extends Exception

        {

        public function errorMessage()

        {

        //error message

        $errorMsg = $this->getMessage().' is not a valid E-Mail address.';

        return $errorMsg;

        }

        }

        $email = "someone@example.com";try

        {

        try

        {

        //check for "example" in mail address

        if(strpos($email, "example") !== FALSE)

        {

        //throw exception if email is not valid

        throw new Exception($email);

        }

        }

        catch(Exception $e)

        {

        //re-throw exception

        throw new customException($email);

        }

        }

        catch (customException $e)

        {

        //display custom message

        echo $e->errorMessage();

        }

        ?>

        例子解:语语

        上面的代在件地 址中是否含有字符串"example"。如果有,再次抛出异常:

        1.customException()  是作旧的exception 的一个展来建的。它就

        承了旧的所有属性和方法。

        2. 建errorMessage() 函数。如果 e-mail 地址不合法,函数返回一个消息。

        3.把 $email 量置一个有效的件地址,但含有字符串

        "example"。

        4."try" 代包含另一个 "try" 代,就可以再次抛出异常。

        5.由于 e-mail 包含字符串 "example",因此触异常。

        6."catch" 捕 到异常,并重新抛出"customException"。

        7.捕 到"customException",并示一条消息。

        如果在其目前的 "try" 代中 异常没有被捕,它将在更高上找catch

        代。

        语置语语常语理器 ;异Top Level Exception Handler,

        set_exception_handler() 函数可置理所有未捕异常的用定函数。

        <?php

        function myException($exception){

        echo "<b>Exception:</b> " , $exception->getMessage();

        }

        set_exception_handler('myException');throw new Exception('Uncaught Exception occurred');

        ?>

        以上代的出似:

        Exception: Uncaught Exception occurred在上面的代中,不存在 "catch" 代,而是触的异常理程序。使用此函数来捕所有未被捕的异常。

        异常的语语

        •需要行 异常理的代放入try 代内,以便捕潜在的异常。

        •每个 try 或 throw 代必至少有一个的 catch 代。

        •使用多个 catch 代可以捕不同的异常。

        •可以在 try 代内的 catch 代中再次抛出,re-thrown,异常。而言之:如果抛出了异常,就必捕它。

        PHP 器用于和来自非安全来源的数据,比如用的入。

        什语是 PHP 语语器,

        PHP 器用于和来自非安全来源的数据。

         和用入或自定数据是任何Web 用程序的重要成部分。 PHP 的器展的目的是使数据更松快捷。

        语什语使用语语器,

        几乎所有 web 用程序都依外部的入。些数据通常来自用或其他用程序,比如 web 服,。通使用器,您能确保有程序得正确的入型。您始外部数据行:

        入是最重要的用程序安全之一。

        什语语语语语语语是外部数据,

        •来自表的入数据

        •Cookies

        •服器量

        •数据果

        函和语语器数

        如需量,使用下面的器函数之一:

        •filter_var() - 通一个指定的器来一的量

        •filter_var_array() - 通相同的或不同的器来多个量

        •filter_input - 取一个入量,并它行

        •filter_input_array - 取多个入量,并通相同的或不同的器它行在下面的例子中,我用 filter_var() 函数了一个整数:<?php

        $int = 123;

        if(!filter_var($int, FILTER_VALIDATE_INT))

        {

        echo("Integer is not valid");

        }

        else

        {

        echo("Integer is valid");

        }

        ?>

        上面的代使用了 "FILTER_VALIDATE_INT" 器来量。由于个整数是合

        法的,因此代的出是:"Integer is valid"。

        假如我使用一个非整数的量,出是:"Integer is not valid"。如需完整的函数和器列表,我的 PHP Filter 参考手册。Validating 和 Sanitizing

        有两器:

        Validating 语语器:

        •用于用入

        • 格的格式,比如URL 或 E-Mail ,

        •返回若成功期的型,否返回 FALSE

        Sanitizing 语语器:

        •用于允或禁止字符串中指定的字符

        •无数据格式

        •始返回字符串

        语语和语志

        和志用于向指定的器添加外的。

        不同的器有不同的和志。

        在下面的例子中,我用 filter_var() 和 "min_range" 以及 "max_range" 了一个整数:

        <?php

        $var=300;

        $int_options = array(

        "options"=>array

        (

        "min_range"=>0,

        "max_range"=>256

        )

        );

        if(!filter_var($var, FILTER_VALIDATE_INT, $int_options))

        {

        echo("Integer is not valid");

        }

        else

        {

        echo("Integer is valid");

        }

        ?>

        就像上面的代一,必 放入一个名"options" 的相数中。如果使用

        志,不需在数内。

        由于整数是 "300",它不在指定的氛 内,以上代的出将是"Integer is not valid"。

        如需完整的函数及 器列表,W3School 提供的 PHP Filter 参考手册。您可以看到个每

        器的可用和志。

        语语语入

        我着来自表的入。

        我需要作的第一件事情是确是否存在我正在找的入数据。然后我用 filter_input() 函数入的数据。

        在下面的例子中,入量 "email" 被到 PHP 面:<?php

        if(!filter_has_var(INPUT_GET, "email"))

        {

        echo("Input type does not exist");

        }

        else

        {

        if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))

        {

        echo "E-Mail is not valid";

        }

        else

        {

        echo "E-Mail is valid";

        }

        }

        ?>

        例子解:语语

        上面的例子有一个通 "GET" 方法 送的入量(email):

        1. 是否存在"GET"  型的"email" 入量

        2.如果存在入量,它是否是有效的件地址

        语化语入

         我着清理一下从表来的URL。

        首先,我要确是否存在我正在找的入数据。

        然后,我用 filter_input() 函数来化入数据。

        在下面的例子中,入量 "url" 被到 PHP 面:

        <?php

        if(!filter_has_var(INPUT_POST, "url"))

        {

        echo("Input type does not exist");

        }

        else

        {

        $url = filter_input(INPUT_POST,

        "url", FILTER_SANITIZE_URL);

        }

        ?>

        例子解:语语

        上面的例子有一个通 "POST" 方法 送的入量(url):

        1. 是否存在"POST"  型的"url" 入量

        2.如果存在此入量,其行化,除非法字符,,并将其存

        在 $url 量中

        假如入量似:"#$%S^%$#ool.com.cn/",化后的 $url 量

        是的:

        语语多语入个

        表通常由多个入字段成。了避免 filter_var 或 filter_input 重用,

        我可以使用 filter_var_array 或 the filter_input_array 函数。在本例中,我使用 filter_input_array() 函数来三个 GET  量。接收到的GET 量是一个

        名称、一个年以及一个件地址:

        <?php

        $filters = array

        (

        "name" => array

        (

        "filter"=>FILTER_SANITIZE_STRING

        ),

        "age" => array

        (

        "filter"=>FILTER_VALIDATE_INT,

        "options"=>array

        (

        "min_range"=>1,

        "max_range"=>120

        )

        ),

        "email"=> FILTER_VALIDATE_EMAIL,

        );

        $result = filter_input_array(INPUT_GET, $filters);

        if (!$result["age"])

        {

        echo("Age must be a number between 1 and 120.<br />");

        }

        elseif(!$result["email"])

        {

        echo("E-Mail is not valid.<br />");

        }

        else

        {

        echo("User input is valid");

        }

        ?>

        例子解:语语

        上面的例子有三个通 "GET" 方法 送的入量(name, age and email)

        1.置一个数,其中包含了入量的名称,以及用于指定的入量的器

        2. 用filter_input_array 函数,参数包括 GET 入量及才置的数

        3. $result  量中的"age" 和 "email" 量是否有非法的入。,如果存在非法入,,filter_input_array() 函数的第二个参数可以是数或一 器的ID。如果参数是一 器的ID,那个指定的器会入数中所有的。如果参数是一个数,那此数必遵循下面的:

        •必是一个数,其中包含的入量是数的,比如 "age"

        入量,

        •此数的必是 器的ID ,或者是定了器、志以及的数使用 Filter Callback

        通使用 FILTER_CALLBACK 器,可以用自定的函数,把它作一个器来使用。,我就有了数据的完全控制。

        您可以建自己的自定函数,也可以使用已有的 PHP 函数。定您准用到器的函数,与定的方法相同。

        在下面的例子中,我使用了一个自定的函数把所有 "_" 空格:<?php

        function convertSpace($string)

        {

        return str_replace("_", " ", $string);}

        $string = "Peter_is_a_great_guy!";echo filter_var($string, FILTER_CALLBACK,array("options"=>"convertSpace"));?>

        以上代的果是的:

        Peter is a great guy!

        例子解:语语

        上面的例子把所有 "_" 成空格:

        1. 建一个把"_" 替空格的函数

        2. 用filter_var() 函数,它的参数是 FILTER_CALLBACK 器以及包含我的函数的数ODBC 指的是,Application Programming Interface,API,,使我有能力接到某个数据源,比如一个 MS Access 数据,。

        语建 ODBC 语接

        通一个 ODBC 接,您可以接到您的网中的任何算机上的任何数据,只要 ODBC 接是可用的。

         是建到达MS Access 数据的 ODBC 接的方法:

        1.在控制面板中打管理工具

        2.双其中的数据源 (ODBC)

        3.系 DSN 语语卡

        4.点 系DSN “卡中的添加”按

        5. Microsoft Access Driver。点完成。

        6.在下一个界面,点“语语”来定位数据。

        7.个数据取一个数据源名 (DSN)。

        8.点确定。

        注意,必在您的网站所在的算机上完成个配置。如果您的算机上正在运行 Internet 信息服器 (IIS),上面的指令会生效,但是假如您的网站位于程服器,您必有服器的物理限,或者您的主机提供商您建立 DSN。

        语接到 ODBC

        odbc_connect() 函数用于接到 ODBC 数据源。函数有四个参数:数据源名、用名、密以及可的指型参数。

        odbc_exec() 函数用于行 SQL 句。

        例子

        下面的例子建了到达名 northwind 的 DSN 的接,

        没有用名和 密。然后建并行一条SQL 句:

        $conn=odbc_connect('northwind','','');$sql="SELECT * FROM customers";

        $rs=odbc_exec($conn,$sql);

        取回语语

        odbc_fetch_row() 函数用于从果集中返回。如果能返回行,返回 true,否返回 false。

        函数有两个参数:ODBC 果符和可的行号:

        odbc_fetch_row($rs)

        从语语中取回字段

        odbc_result() 函数用于从中取字段。函数有两个参数:ODBC 果符和字段号或名称。

        下面的代行从中返回第一个字段的:

        $compname=odbc_result($rs,1);

        The code line below returns the value of a field called "CompanyName":

        $compname=odbc_result($rs,"CompanyName");语语 ODBC 语接

        odbc_close()函数用于 ODBC 接。

        odbc_close($conn);

        ODBC 语例

        下面的例子展示了如何首先建一个数据接,然后是果 集,然后在HTML

        表格中示数据。

        <html>

        <body>

        <?php

        $conn=odbc_connect('northwind','','');if (!$conn)

        {exit("Connection Failed: " . $conn);}$sql="SELECT * FROM customers";$rs=odbc_exec($conn,$sql);

        if (!$rs)

        {exit("Error in SQL");}

        echo "<table><tr>";

        echo "<th>Companyname</th>";

        echo "<th>Contactname</th></tr>";while (odbc_fetch_row($rs))

        {

        $compname=odbc_result($rs,"CompanyName");

        $conname=odbc_result($rs,"ContactName");

        echo "<tr><td>$compname</td>";

        echo "<td>$conname</td></tr>";

        }

        odbc_close($conn);

        echo "</table>";

        ?>

        </body>

        </html>

        


名易MyIMS贷款管理系统名易MyIDP快速开发平台
名易MyIBP保险业务管理系统名易MyHR人力资源管理软件
名易MyHMS酒店综合管理系统名易MyCRM客户关系管理软件
资产管理软件用品管理软件
车辆管理软件会议管理软件
PHP应用中的八种常见文件操作方式PHP入门的学习方法
php语言入门教程对php编程语言的理解
PHP语法总结PHP编程风格
信息发布:广州名易软件有限公司 http://www.myidp.net
  • 名易软件销售服务
  • 名易软件销售服务
  • 名易软件技术服务

  • PHP基本语法