从零开始PHP攻略(001)——Bob的汽车零部件商店

1.创建订单表单

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>创建订单表单</title>
    </head>
    <body>
        <form action="processorder.php" method="post">
            <table border="0" cellspacing="" cellpadding="">
                <tr bgcolor="#ccc">
                    <td width="150">Item</td>
                    <td width="15">Quantity</td>
                </tr>
                <tr>
                    <td>Tires</td>
                    <td align="center">
                        <input type="text" name="tireqty" size="3" maxlength="3" />
                    </td>
                </tr>
                <tr>
                    <td>Oil</td>
                    <td align="center">
                        <input type="text" name="oilqty" size="3" maxlength="3" />
                    </td>
                </tr>
                <tr>
                    <td>Spark Plugs</td>
                    <td align="center">
                        <input type="text" name="sparkqty" size="3" maxlength="3" />
                    </td>
                </tr>
                <tr>
                    <td colspan = "2" align="center">
                        <input type="submit" value="Submit Order" />
                    </td>
                </tr>
            </table>
        </form>
    </body>
</html>

  注意,该表单的动作被设置为能够处理客户订单的PHP脚本名称。

2.表单处理

  创建在form标记的action属性中指定的脚本processorder.php。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Bob‘s Auto Parts - Order Results</title>
</head>
<body>
    <h1>Bob‘s Auto Parts</h1>
    <h2>Order Results</h2>
</body>
</html>

3.在HTML中嵌入PHP

  在以上代码的<h2>标记处,添加如下代码:

<?php

    echo ‘<p>Order processed.</p>‘;

?>

  保存后在浏览器中载入1中创建的表单,填写该表单,点击“Submit Order”按钮:

  通过浏览器查看源代码时看不到php语句,这是因为PHP解释器已经运行了该脚本,并且用该脚本的输出代替了脚本本身。

  3.1 PHP标记

  PHP标记有4种风格可供使用。

  XML风格:<?php echo ‘<p>Order processed.</p>‘; ?>

  简短风格:<? echo ‘<p>Order processed.</p>‘; ?>

  SCRIPT风格:<script language=’php’>echo ‘<p>Order processed.</p>‘;</script>

  ASP风格:<% echo ‘<p>Order processed.</p>‘; %>

  推荐使用XML风格。

  3.2 PHP语句

  通过将PHP语句放置在PHP的开始和结束标记之间,可以告诉PHP解释器进行何种操作。

  3.3 空格

  间隔字符,例如换行、空格和Tab,都被认为是空格。浏览器将会会略这些HTML的空格字符。PHP引擎同样。

  3.4 注释

  PHP支持C、C++和Shell脚本风格的注释。

4.添加动态内容

  使用服务器端脚本语言的主要原因就是能够为站点用户提供动态内容。

  使用如下所示的代码替换processorder.php脚本中的PHP代码:

<?php

    echo "<p>Order processed at";

    echo date(‘H:i, jS F Y‘);

    echo "</p>";

?>

  也可以使用连接操作符(.)将其编写在一行代码中。

<?php

    echo "<p>Order processed at".date(‘H:i, jS F Y‘)."</p>";

?>

  上面使用PHP内置的date()函数来告诉客户其订单被处理的日期和时间。

  4.1 调用函数

  将一个封闭在圆括号内的字符串(文本数据)传递给该函数。这个字符串就是函数的自变量或参数。

  4.2 使用date()函数

  H是24小时格式的小时,i是分钟,如果小时数和分钟数是个位数,需要在前面补0,j是该月的日期,不需要前面的补0,而s表示顺序后缀(在这个例子中是“th”),F是月份的全称。

5.访问表单变量

  使用订单的目的是为了收集客户订单。

  5.1 简短、中等以及冗长风格的表单变量

  PHP的变量名称都是以$符号开始的。

$tireqty // short style

$_POST[‘tireqty’] // medium style

$HTTP_POST_VARS[‘tireqty’] // long style

  其中,中等风格($_POST[‘tireqty’])是如今所推荐的。

  下面,让我们看一个创建便于使用的变量副本的例子。

  将如下代码块放置在订单处理脚本的开始处。

<?php

    // create short variable names

    $tireqty = $_POST[‘tireqty‘];

    $oilqty = $_POST[‘oilqty‘];

    $sparkqty = $_POST[‘sparkqty‘];

?>

  这段代码将创建3个新变量:$tireqty、$oilqty和$sparkqty,并且将通过POST方法从表单中传送过来的数据分别赋值给这3个变量。

  在PHP脚本结束处添加如下所示的代码:

echo ‘<p>Your order is as follows: </p>‘;

echo $tireqty. ‘tires<br />‘;

echo $oilqty. ‘bottles of oil<br />‘;

echo $sparkqty. ‘spark plugs<br />‘;

  从用户输入直接获得输入并输出到浏览器是一个有风险的操作,它可能带来安全隐患,应该对数据进行过滤,这个将在后面介绍。

该脚本输出结果如下,具体的数值取决于在表单中输入的数据:

  5.2 字符串的连接

  点号是字符串连接符,它可以将几段文字连接成一个字符串:

echo $tireqty. ‘tires<br/>’;

  对于任何简单类型的变量,都可以将变量写入到一个由双引号引进来的字符串中:

echo “$tireqty tires<br/>”;

  这个语句和上面的等价。用一个字符串的内容来代替一个变量的操作就是插值。

  注意,插值操作只是双引号引用的字符串特性之一。不能将一个变量名称放置在一个由单引号引用的字符串中。那样会被视为文本。

  5.3 变量和文本

  PHP将试着计算双引号字符串,而单引号字符串将被当做是真正的文本。

  此外还有第3种指定字符串的方法:heredoc语法(<<<),通过指定一个用来结束字符串的结束印记。

6.理解标识符

  标识符是变量的名称。

  标识符的一些简单规则:

  1)标识符可以是任何长度,可以由任何字母、数字、下划线组成。

  2)不能以数字开始

  3)标识符区分大小写(函数名称可以任意大小写)

  4)一个变量名称可以与一个函数名称相同。但应尽量避免。此外,不能创建一个具有与已有函数同名的函数。

  PHP的特性之一就是它不要求在使用变量之前声明变量。当第一次给一个变量赋值时,你才创建了这个变量。

7.检查变量类型

  变量类型是指能够保存在该变量中的数据类型。

  7.1 PHP的数据类型

  1)Integer(整数)

  2)Float(浮点数)

  3)String(字符串)

  4)Boolean(布尔值)

  5)Array(数组)

  6)Object(对象)

  此外还有两个特殊的类型:NULL(空)和resource(资源)。

  没有被赋值、已经被重置或者被赋值为特殊值NULL的变量就是NULL类型的变量。

  特定的内置函数(例如数据库函数)将返回resource类型的变量。它们都代表外部资源(例如数据库连接)。

  基本上不能直接操作一个resource变量,但是通常它们都将被函数返回,而且必须作为参数传递给其他函数。

  7.2 类型强度

  PHP是一种弱类型语言。弱类型不代表弱。在PHP中,变量的类型是由赋给变量的值确定的,这很灵活。

  PHP将“自动地”获得输入的数据类型。

  7.3 类型转换

$totalqty = 0;

$totalamount = (float)$totalqty;

  第2行代码的意思是“取出保存在$totalqty中的变量值,将其解释成一个浮点类型,并且将其保存在$totalamount”中。$totalamount变量将变成浮点类型。而被转换的变量并不会改变其类型,因此$totalqty仍然是整数类型。

  7.4 可变变量

  可变变量允许我们动态地改变一个变量的名称。

  这个特性的工作原理是用一个变量的值作为另一个变量的名称。例如:

$varname = ‘tireqty’;

$$varname = 5;

  这个代码等价于:

$tireqty = 5;

8.声明和使用常量

  我们可以改变保存在一个变量中的值。也可以声明常量。一个常量可以保存一个值,常量值一旦被设定后,在脚本的其他地方就不能再更改。

  可以使用define函数定义这些变量:

define(‘TIREPRICE‘,100);

define(‘OILPRICE‘,10);

define(‘SPARKPRICE‘,4);

  注意,常量名称都是由大写字母组成的。非必须,但便于维护。

  常量和变量之间的一个重要不同点在于引用一个常量的时候,他前面并没有$符号。

  PHP还预定义了许多常量。了解这些常量的简单方法就是运行phpinfo()函数。

  变量和常量的领一个差异在于常量值可以保存布尔值、整数、浮点数或字符串等标量数据。

9.理解变量的作用域

  作用域是指在一个脚本中某个变量可以使用或可见的范围。

  6项基本的作用域规则:

  1)内置超级全局变量可以在脚本的任何地方使用和可见。

  2)常量一旦被声明将可以在全局可见。

  3)在一个脚本声明的全局变量在整个脚本中是可见的,但不是在函数内部

  4)函数内部使用的变量声明为全局变量时,其名称要与全局变量名称一致

  5)在函数内部创建并被声明为静态的变量无法在函数外部可见,但是可以在函数的多次执行过程中保持该值

  6)在函数内部创建的变量对函数来说是本地的,而当函数终止时,该变量也就不存在了

  超级全局变量的完整列表:

  1)$GLOBALS,所有全局变量数组

  2)$_SERVER,服务器环境变量数组

  3)$_GET,通过GET方法传递给该脚本的变量数组

  4)$_POST,通过POST方法传递给该脚本的变量数组

  5)$_COOKIE,cookie变量数组

  6)$_FILES,与文件上传相关的变量数组

  7)$_ENV,环境变量数组

  8)$_REQUEST,所有用户输入的变量数组

  9)$_SESSION,会话变量数组

整理自《PHP and MySQL Web Development》

时间: 2024-11-05 20:49:12

从零开始PHP攻略(001)——Bob的汽车零部件商店的相关文章

linux shell 脚本攻略001

shell 脚本通常是以#!/bin/bash开始的文本文件.#!被置于解释器路径之前. 以bash为解释器进行解释所有命令行的命令. 有两种运行脚本的方式,一种是将脚本作为sh的命令行参数,另一种是将脚本作为具有可执行权限的可执行文件.将脚本作为命令行参数的运行方式如下: sh aa.sh :假定脚本文件就在当前路径下.否则写全路径执行.也可以通过修改脚本文件的权限来执行脚本chmod a+x aa.sh ./aa.sh就可以执行. 脚本中使用#代表注释. 终端打印: echo是用于终端打印的

[学习OpenCV攻略][001][Ubuntu安装及配置]

学习环境: 1.操作系统 Ubuntn 2.学习书籍 <学习OpenCV> 3.OpenCV版本 opencv-1.0.0 root登入配置 Ubuntn默认不允许root用户登入,在登录窗口只能看到普通用户和访客用户.我们做开发需要经常用到root权限,所以把root用户设置成自动登录用户. 1.以普通用户登录后,在终端中输入: sudo passwd root,给root用户添加密码. 2.su root,切换到root用户. 3.vim /etc/lightdm/lightdm.conf

从零开始PHP攻略(000)——关于WAMPServer集成环境

Apache.PHP和MySQL都可以用于多种操作系统和Web服务器的组合.本篇介绍在Windows下用WampServer环境包来搭建本地php环境. W:windows A:Apache M:MySQL P:PHP 1.下载和安装 可以去官网下载. 或者: 安装完成后启动,如果右下角这个图标是绿色的:,说明安装成功且没有冲突.浏览器上输入localhost,会出现类似以下页面: 右键点击可设置语言. 2.控制面板介绍 左击后是这样的: 其中,localhost是本地主机,上面预览的就是这个:

移动端点击事件全攻略,有你知道与不知道的各种坑

看标题的时候你可能会想,点击事件有什么好说的,还写一篇攻略?哈哈,如果你这么想,只能说明你too young to simple. 接触过移动端开发的同学可能都会面临点击事件的第一个问题:click事件的300ms延迟响应.不能立即响应给体验造成了很大的困扰,因此解决这个问题就成为了必然. 这个问题的解决方案就是: zepto.js的tap事件.tap事件可以理解为在移动端的click事件,而zepto.js因为几乎完全复制jQuery的api,因此常常被用在h5的开发上用来取代jquery.

前台页面优化全攻略(三)

经过前两篇文章的实践,你的网站加载速度一定有了非常明显的变化.能把实践跟到这篇文章的人想必一定是极客中的极客.如果你仍对网站的加载速度不满意,可以看看再尝试一下本文中几近疯狂的终极优化方案. 你可以对网站进行快速的优化,但网站日常的节食却很难.也许你已经花了很大的力气去优化你的CSS和JavaScript代码,但是你所做的努力马上又会因为老板或客户期望的新功能而付之东流.所以看来不论是人还是网页,减肥都贵在坚持. 这篇终极减肥方案可能不适合所有的网站,但是我相信它可以引起你对网页大小的重视. 1

3D计算机图形学零起点全攻略(转)

3D计算机图形学零起点全攻略 这篇文章不包含任何技术知识,但我的希望它能指明一条从零开始通往3D领域的成功之路.我将罗列我看过的相关经典书籍作为学习文献,阅读规则是每进入下个内容,我都会假设已经完成前面全部的文献研习内容.相信若能按照这条路走到最后,会有所进益. 完成整部分内容需要具备基础: 英语:CET4以上 数学:精通数字加减乘除法. 物理:基本力学. 计算机:了解电脑的基本知识,熟练使用Windows. 电脑配置: CPU:双核1.5以上 显卡:NVIDIA GeForce8400G MS

iOS 使用Charts框架 折线,柱状,K线,饼状,雷达全攻略

我是前言: 大约几个月前我在某平台写了一篇文章, 文中简单地介绍了Charts两种图表的样式的使用, 不过有种意犹未尽的感觉, 利用周末的空闲时间再次看了看, 有了新的收获, 今天发出来,分享给大家, 来稍加详细的再次走进Charts的世界. 完全纯代码. 经过测试: 1.1使用cocoa pods集成(只能在9.3之后运行), 有知道原因的请在下方评论 1.2 这篇文章的例子我是使用手动加入的framework进行测试的. 如果你不清楚如何加入三方框架请点击看看这篇文章http://www.j

寒城攻略:Listo 教你 25 天学会 Swift 语言 - 02 Swift Tour

import Foundation //*********************************************************************************************** //1.Hello world //_______________________________________________________________________________________________ //输出 "Hello, world&q

Azure进阶攻略丨Azure网络通不通,PsPing&amp;PaPing告诉你答案

很多时候,为了解决一些问题,要查各种文档,很麻烦你造吗!做「伸手党」又容易被鄙视,这时候就需要用到[Azure 进阶攻略]啦!特此,我们推出关于 Azure 常用操作指南的系列文章,每篇涉及一个 Azure 使用过程中的问题,简明扼要直击重点,纯干货内容帮你快速搞定 Azure 使用难题和障碍,只需一两分钟阅读,你就可以继续愉快地翱翔云端~ 在技术人员和网络工程师的世界中,有一些众所周知的排错方式,例如: -你先 Ping 一下某某计算机,看它开着没, -我可以 Ping 通路由器,但 Ping