PHP学习——第二章

来源:互联网 发布:凡人修仙传 知乎 编辑:程序博客网 时间:2024/05/17 23:13

利用PHP处理html表单也许是任何动态Web站点中的最重要的过程。其中包括两个步骤:首先,利用html创建表单自身。然后,创建相应的php脚本,用于接收和处理html表单数据。


生成表单

html表单是使用form标签和多种用于获取输出的元素创建的。
<form action="script.php" method="post" ></form>
就PHP而言,form标签最重要的属性就是action,它指定把表单数据发送到哪个页面。
表单的mothod属性指定如何把数据发送到处理页面,两个选项指示要用到的HTTP方法。
get方法把提交的数据通过一系列追加到URL后面的名-值对发送到接收页面。例如
http://www.example.com/script.php?name=Homer&gender=M&age=35
使用get方法的好处是:可以在用户的Web浏览器中为得到的页面建立书签(因为它是一个URL)。因此,你还可以在Web浏览器中单击后退返回到一个get页面,或者重新加载它,而不会有任何问题,而post页面则不能执行这两种操作。不幸的是,通过get传输的数据量有限,并且不怎么安全(因为数据是可见的)。

一般来讲,get用于请求信息,比如数据库中的特定记录或者搜索的结果(搜索几乎总是使用get)。当需要采取一个动作时(比如更新数据库记录或发送电子邮件时),就使用post方法。


<!--添加初始form标签--><form action="handle_form.php" method="post"><!--开始创建html表单--><fieldset><legend>Enter your infomation in the form below</legend><fieldset>和<legend>两对标签给表单加上一个框,并且在顶部设置了一个标题。<!--添加两个文本输入框--><p><b>Name:</b> <input type="text" name="name" size="20" maxlength="40" /></p><p><b>Email Address:</b> <input type="text" name="Email" size="40" maxlength="60" /></p><!--添加一对单选按钮--><p><b>Gender:</b> <input type="radio" name="gender" value="M">男性<input type="radio" name="gender" value="F">女</p><!--添加一个下拉菜单--><p><b>Age:</b><select name="age">     <option value="0~29">Under 30</option>     <option value="30~60">Between 30 and 60</option>     <option value="60+">Over 60</option></select></p><!--select标签开始创建下拉菜单,然后每个option标签将创建选项列表中的另一行选项。--><!--添加一个文本框--><p><b>Comments:</b> <textarea name="comments" rows="3" cols="60" ></textarea></p><!--完成表单--></fieldset><div aligen="center"> <input type="submit" name="submit" value="Submit My Infomation" /></div></form>


处理HTML表单


<html><body><?php    #handlr_form.php/*Create shorthand for the data*对输入表单中的数据,可以通过$_REQUEST['']来访问它。这里的变量的拼写和大小写必须与HTML表单中的相应的name值完全匹配。*/$name=$_REQUEST['name'];$email=$_REQUEST['email'];$comments=$_REQUEST['comments'];//Print the submitted infomationecho "<p>Thank you <b> $name </b>,for the following comments:<br /><tt>$comments</tt></p><p>We will reply you at <i>$email</i>.</p>\n";?></body></html>


$_REQUEST是一个特殊的变量类型,称为超全局变量。它存储了通过GET或POST方法发送到PHP页面的所有数据,以及在cookie中可访问的数据。
如果PHP脚本在应该打印变量的地方显示空白,这意味着没有副职。两个最可能的原因是无法在表单中输入值,或者变量名拼写错误或弄错了它的大小写。


条件语句和运算符


if (condition) {     //Do something;} else {     //Do something;}if () {} elseif () {} else {}//条件语句isset是一个如何使用默认值的理想示例。假定除非满足一个条件:设置了$_REQUEST['gender'],否则$gender具有一个NULL值。if (isset($_REQUEST['gender']) {     $gender=$_REQUEST['gender'];} else {     $gender=NULL;}

PHP还有和C语言类似的switch语句。


验证表单数据



从错误管理和安全性两方面考虑,你永远都不应该信任输入到HTML表单中的数据。对于错误的数据,无论是蓄意产生破坏,还是仅仅无意的造成不适,都需要针对预期的要求进行测试。
isset()用于测试一个变量是否具有值(包括0,FALSE,或者一个空字符,但不能是NULL)。
使用isset()函数的一个问题是空字符串测试位TRUE,这意味着它不是验证HTML表单中的文本输入和文本框的有效方式。要检查用户输入到文本元素中的内容,可以使用empty()函数。它将检查一个变量是否具有empty值:空字符串,0,FALSE,或NULL。


表单验证的第一个目标是确保表单中输入或选择了某些内容。第二个目标是确保提交的数据具有正确的类型、正确的格式、和特定的可接受值。

if (!empty($_REQUEST['email'])) {$email=$_REQUEST['email'];} else {$email=NULL;}

要测试提交的值是否位数字,可以用isnumeric()

数组可以保存多份单独的信息,因此数组就像是一个列表,其中每个值可以是字符串或数组,甚至式另一个数组。数组可以构成一系列键-
值对,其中每一对都是那个数组的一个项目或元素。对于列表中的每个项目都有一个与之关联的键。
PHP支持两种数组:索引数组(Indexed Array)和关联数组(Associative 
Array),前者使用数组作为键,后者使用字符串作为键。索引数组的第一个索引开始于0,除非显式制定键值。
要从数组中检索特定的值,需要先引用数组变量名称,然后在方括号中指出值。
echo $artist[2];echo $states['MD'];




因为数组包含多个值,所以不能用简单的方法将它们打印出来。
对索引数组同上,而对关联数组,则应用
{$states['MD']}




超全局数组

PHP默认包括多个预定义的数组。
$_GET,用来存储通过GET方法发送到PHP脚本的所有变量和值。
$_POST,用来存储使用POST方法从HTML表单发送到PHP脚本的所有数据。这两个变量以及$_COOKIE变量都是$_REQUEST变量的子集。
$_REQUEST,$_SERVER,$_ENV,$_SESSION,$_COOKIE


创建数组

1、一次添加一个元素
$band[]='Jemmin';$band[]='Bert';$badn[]='Murray';




此外还可以在添加元素时制定键,但是,重要的是理解,如果指定一个键,并且已经存在用那个相同的键进行索引的一个值,则新值将重写现有的值。


2、使用array()函数,只用一个步骤就可以构建整个数组
$states = array('IA'=>'Iowa','MD'=>'Maryland');
不论是否显式的设置了键,都可以用这种方法。
在引用数组前,可以使用array()函数初始化它。
$tv=array();$tv='Gods of the arena';
在PHP中初始化数组(或者任何变量)不是必需的,但可以使代码更清晰,并且有助于避免错误。
3、如果想创建连续数字的数组,可以使用range()函数。
$ten=range(1,10);

访问数组

上面已经讲了如何访问数组中的一个元素,如果要访问整个数组,则可以使用foreach()循环。
foreach($array as $value) {//Do something with the $value;}


foreach()循环将会迭代$array中的每个元素,并把每个元素的值赋予变量$value,要访问键和值,可以使用
foreach($array as $key => $value) {echo "The value at $key is $value";}

要确定数组中元素的个数,可以用count()函数。
$num=count($array);

range()也可以创建连续字母的数组。
$alphabet=range('a','z');



is_array()函数用于确认一个变量是否是数组元素。


多维数组——包含其他数组的数组,例如
$primes=array(2,3,5,7,...);$sphenic=array(30,42,46,...);$numbers=array('primes'=>$primes,'sphenic'=>$sphenic);


现在$numbers就是一个多维数组。要打印出这些值之一,可以用话括号包围整个结构,例如
{$numbers['primes'][0]};

也可以使用foreach()循环来访问多维数组,如果需要的话,可以把foreach循环嵌套在另一个内部。
数组和字符串


下面两个函数可以在字符串和数组之间相互进行转换。
$array = explode(separator,$string);$string = implode(glue,$array);




使用这两个函数的关键之处分隔符(separator)和胶合(glue)的关系。当把一个数组转变成一个字符串时,将会设置胶合——将内插入到生成字符串的数组值之间的
字符或代码。相反,当把字符串转变成数组时,要指定分隔符,它用于标记什么应该变成独立数组元素。例如
$s1 = 'Mon-Tue-Wed-Thu-Fri';$days_array = explod('-' ,$s1);$s2 = implode(',' ,$days_array);


数组排序

PHP包括多个科用于对数组排序的函数,这些排序函数执行三种排序。
首先,可以使用sort()按值对数组进行排序,并丢弃原来的键。重要的是理解在排序之后将会重置数组的键,因此如果键- 值关系很重要,就不应该使用这个函数。
其次,可以使用asort()按值对数组排序,同时还会维持键。
最后,可以使用ksort()按键对数组进行排序。
如果把这些函数分别改名为rsort(),arsort(),krsort(),则能够以相反的顺序对数组进行排序。




for和while循环
$s1 = 'Mon-Tue-Wed-Thu-Fri';$days_array = explod('-' ,$s1);$s2 = implode(',' ,$days_array);


只要循环条件为真,就会执行循环。当从数据库中检索结果时,最长使用while循环。
for( initial expression;condition;closing expression) {//Do something}

在执行一次循环时,会运行初始表达式,然后检查条件,如果条件为真,则继续。执行之后将会运行结束表达式,并再次检查条件。这个过程会继续下去,直到条件为假。




原创粉丝点击