首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

1.4  PHP纵览

A Walk Through PHP

PHP页面是嵌入了PHP代码的HTML页面,这是相对于许多用脚本来生成HTML(脚本不嵌入HTML)的解决方案来说的。Web服务器处理PHP命令并发送输出(以及来自文件的HTML)到浏览器。示例1-1展示了一个完整的PHP页面。

示例1-1:Hello_world.php

<html>

  <head>

    <title>Look Out World</title>

  </head>

    <body>

    <?php echo 'Hello, world!' ?>

  </body>

</html>

将示例1-1的内容保存到一个文件,hello_world.php,然后用浏览器查看,结果如图1-2所示。

图1-2:hello_world.php输出的内容

PHP命令echo产生的输出(在这里是"Hello, world!" 字符串)被插入到HTML文件中。在这个示例子里,PHP代码被放在<?php和?>标签中。我们还有其他的方法用来标记PHP代码,请查阅第2章的完整描述。

1.4.1  配置信息页面

Configuration Page

PHP的phpinfo()函数生成一个展示PHP安装情况的完整信息的HTML页。可以使用该函数查看是否安装了特定的扩展,或php.ini文件是否被定制。示例1-2是一个演示phpinfo()的完整页面。

示例1-2:使用phpinifo() 

<?php phpinfo(  ); ?>

图1-3显示了示例1-2的第一部分输出。

1.4.2  表单

Forms

示例1-3创建并处理了一个表单。当用户提交表单时,在这个name文本框中输入的信息就会被送回到该页面。下面的PHP代码会检测name字段,如果找到就显示问候语。

图1-3:phpinfo()的部分输出

示例1-3:处理一个表单

<html>

  <head>

    <title>Personalized Hello World</title>

  </head>

    

  <body>

    <?php if(!empty($_POST['name'])) {

      echo "Greetings, {$_POST['name']}, and welcome.";

    } ?>    

    <form action="<?php $PHP_SELF; ?>" method="post">

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

      <input type="submit" />

    </form>

  </body>

</html>

表单和信息都显示在图1-4中。

图1-4:表单和问候语

PHP程序通过$_POST和$_GET数组变量访问表单的值。在第七章我们会更详细讨论表单和表单的处理。现在是在php.ini文件中设置REGISTER_GLOBALS值为Off(默认值)的情况下进行页面处理的。

1.4.3  数据库

Databases

PHP支持所有的主流数据库系统,包括MySQL、PostgreSQL、Oracle、Sybase、SQLite和ODBC兼容数据库。图1-5中的示例通过PHP程序进行MySQL数据库查询,展示了在一个书籍评论站点上搜索一本书的部分结果,包括书的标题、类别、出版者和ISBN号。

示例1-4中的代码连接数据库,发布一个查询来检索所有匹配的书(使用WHERE字句),并且通过一个for循环产生一个表格作为输出结果。

图1-5:通过一个PHP脚本运行MySQL书籍清单查询

示例1-4:查询书籍数据库

<? 

$connection = mysql_connect("localhost");

$db = "library";

mysql_select_db($db, $connection) or die( "Could not open $db");

$sql = "SELECT * FROM books WHERE available = 1 ORDER BY title";

$result = mysql_query($sql, $connection) or die( "Could not execut sql: $sql");

$num_result = mysql_num_rows($result);

?>

<table cellSpacing="2" cellPadding="6" align="center" border="1">

  <tr>

    <td colspan="7">

      <h3 align="center">These Books are currently available</h3>

    </td>

  </tr>

  <tr>

    <td align="center">Title</td>

    <td align="center">Publisher</td>

    <td align="center">Category</td>

    <td align="center">ISBN</td>

  </tr>

<?

for ($i=0; $i < $num_result; $i++) {

    $row = mysql_fetch_array($result);

    $id = $row["bookid"];

    echo "<tr>";

      echo "<td>";

      echo stripslashes($row["title"]);

      echo "</td><td>";

      if ( !$row["company"] )

            {

          echo "&nbsp;";

          } else {

          echo $row["company"];

      }

      echo "</td><td>";

      echo $row["typedesc"];

      echo "</td><td>";

      echo $row["isbn"];

      echo "</td>";

    echo "</tr>";

}

?>

</table>

</body>

</html>

数据库提供的动态内容是驱动新闻和电子商务站点的核心。通过PHP访问和操作数据库的更多细节将在第8章中讨论。

1.4.4  图形

Graphics

有了PHP,你可以使用GD扩展轻松地创建和处理图像。示例1-5提供了一个text-entry文本框来让用户指定按钮的文本内容。该示例获得了一个空的按钮图像文件,并通过GET “message”参数传递按钮中心的文本,然后将结果作为一个PNG图像返回到浏览器。

示例1-5:动态按钮 

<?php

 if (isset($_GET['message'])) {

   // load font and image, calculate width of text

   $font = 'times';

   $size = 12;

   $im = ImageCreateFromPNG('button.png');

   $tsize = imagettfbbox($size,0,$font,$_GET['message']);

    

   // center

   $dx = abs($tsize[2]-$tsize[0]);

   $dy = abs($tsize[5]-$tsize[3]);

   $x = ( imagesx($im) - $dx ) / 2;

   $y = ( imagesy($im) - $dy ) / 2 + $dy;

    

   // draw text

   $black = ImageColorAllocate($im,0,0,0);

   ImageTTFText($im, $size, 0, $x, $y, $black, $font, $_GET['message']);

    

   // return image

   header('Content-type: image/png');

   ImagePNG($im);

   exit;

 }

?>

<html>

  <head><title>Button Form</title></head>

  <body>

    

    <form action="<?= $PHP_SELF ?>" method="GET">

      Enter message to appear on button:

      <input type="text" name="message" /><br />

      <input type="submit" value="Create Button" />

    </form>

  </body>

</html>

由示例1-5生成的表单在图1-6中显示。创建的按钮在图1-7中显示。

你可以使用GD来动态地调整图像大小、生成图表和更多的东西。PHP也有一些扩展可用于生成流行的Adobe PDF格式的文档。

图1-6:按钮创建表单

图1-7:创建的按钮

本书第9章包含动态图像生成的深入介绍,第10章则展示如何创建Adobe PDF文件。

1.4.5  基于Shell

From the Shell

如果编译PHP而不指定特定的Web服务器类型,那么PHP解释器将作为一个独立的程序而不是一个Web服务器的模块。这样你可以利用PHP的各种功能(示例如数据库和图像)来编写PHP脚本,并从命令行调用。

示例1-6也创建了按钮,但这个示例子在命令行上运行,而不是通过Web服务器。PHP的-q选项可禁止生成HTTP头。

示例1-6:基于Shell 的创建按钮的php程序 

#!/usr/local/bin/php -q

<?php

 if ($argc != 3) {

   die("usage: button-cli filename message\n");

 }

    

 list(, $filename, $message) = $argv;

    

 // load font and image, calculate width of text

//加载字体和图像,计算文本宽度

 $font = 'Arial.ttf';

 $size = 12;

 $im = ImageCreateFromPNG('button.png');

 $tsize = imagettfbbox($size,0,$font,$message);

 // 居中

 $dx = abs($tsize[2]-$tsize[0]);

 $dy = abs($tsize[5]-$tsize[3]);

 $x = ( imagesx($im) - $dx ) / 2;

 $y = ( imagesy($im) - $dy ) / 2 + $dy;

    

 // 绘制文本

 $black = ImageColorAllocate($im,0,0,0);

 ImageTTFText($im, $size, 0, $x, $y, $black, $font, $message);

    

 // return image

//返回图像

 ImagePNG($im, $filename);

?>

保存示例1-6的代码到 button-cli中,并运行:

# ./button-cli

usage: button-cli filename message

# ./button-cli php-button.png "PHP Button"

# ls -l php-button.png

-rwxr-xr-x  1 gnat  gnat  1837 Jan 21 22:17 php-button.png

现在你已经初尝PHP的滋味,知道了它能做什么,并准备好了如何学习PHP编程。我们将从语言的基本结构开始,特别关注用户定义函数、字符串处理和面向对象编程。然后转向具体的应用领域,示例如Web、数据库、图形、XML和安全。我们以内置函数和扩展的快速参考作为本书结尾。精通这些章节的内容,你就会成为PHP行家!

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论