《谈谈html语法》一文,我已经介绍了基本的html语法。可以编出一个静态的web页,可动态交互信息是很重要的。如一些网站的会员制的会员注册、登录都需后端程序的运行。很多网站所用的cgi程序主要用perl、asp、java、php编写,而我们所要用的就是php。它是完全免费的,这就要感谢那些默默无闻的编程人员了。
php的结构类似于c语言,这可是应证了c语言里提的“一处学习,到处编程”。相信学过c语言的人可很容易上手php的。还是先介绍一些php语法吧。本文适合初学者学习。
php与c语言也有一些差别,或者说在某种程度上可能比c语言更为灵活。在c语言中,变量要先定义,才能使用。而php中变量则不需事先定义,直接使用即可。对于变量的类型,在赋值时自动生成。php变量的类型分为:整数(int)、双精度型(double)、字符串(string)、数组(array)、对象(object)。
整数大小超出其范围后,自动转化为双精度型,其值范围如下表:
┌─────┬─────┬──────┬────────────┐
│ 声明类型 │长度(位)│长度(字节)│ 值的范围 │
├─────┼─────┼──────┼────────────┤
│ int │ 32 │ 4 │-2147483647~2147483647 │
├─────┼─────┼──────┼────────────┤
│ double │ 32 │ 4 │ 1.7e-308~1.7e+308 │
└─────┴─────┴──────┴────────────┘
字符串,通常用""(双引号)表示。也可用''(单引号)表示,如下:
$a="abc";
$b="abc$a";
$c='abc$a';
$d="\"cde\"";
$e='"cde"';
php中的各种变量均在变量名前加上“$”以示区别。
注意,$b的内容为abcabc,$c的内容为abc$a,$d的内容为"cde",$e的内容也为"cde"。可以看出,双引号中的内容中的变量名会被替代崐,而单引号中的则不会。双引号中的内容需转义,如$应用$表示,而单引号中的则不用。
php中的数组语法为:
数组名[索引]
索引可为数字,也可为文字。但不建议使用文字,因为意义不大。对于数组也比其它语言灵活如下例:
<?php
$names[]=100;
$names[]=200;
$names[]="hi,how are you";
$names[]=98.5;
$names[]=1.7e+23;
$num=count($names);
for ($i=0;$i<=$num;$i++){
echo "$names[$i]<br>";
}
?>
可看出,一个数组中的元素不一定为同一类型,这就是php数组的“活”处。
使用对象,可使编程者更易于维护,也使程序更为易读。较其它语言,php可简单多了,它只有类别(class)、方法(method)、属性(attrib)及扩展(extendsions)等。
前文谈的只是php的数据类型,所谓“磨刀不误砍柴功”,打好php基础才能更好地学好php编程。
php中的表达式与运算符与c语言的差别不大,现将其列表于下:
┌─────┬─────────┬──────────┐
│ 符 号 │ 运算符 │ 范 例 │
├─────┼─────────┼──────────┤
│ + │ 加法 │ $a+$b │
├─────┼─────────┼──────────┤
│ - │ 减法 │ $a-$b │
├─────┼─────────┼──────────┤
│ * │ 乘法 │ $a*$b │
├─────┼─────────┼──────────┤
│ / │ 除法 │ $a/$b │
├─────┼─────────┼──────────┤
│ % │ 取余数 │ $a%$b │
├─────┼─────────┼──────────┤
│ ++ │ 递增 │ $a++或++$a │
├─────┼─────────┼──────────┤
│ -- │ 递减 │ $a--或--$a │
├─────┼─────────┼──────────┤
│ == │ 等于 │ $a==10 │
├─────┼─────────┼──────────┤
│ === │ 绝等于 │ $a===10 │
├─────┼─────────┼──────────┤
│ != │ 不等于 │ $a!=10 │
├─────┼─────────┼──────────┤
│ < │ 小于 │ $a<9 │
├─────┼─────────┼──────────┤
│ > │ 大于 │ $a>8 │
├─────┼─────────┼──────────┤
│ <= │ 小于等于 │ $a<=10 │
├─────┼─────────┼──────────┤
│ >= │ 大于等于 │ $a>=1 │
├─────┼─────────┼──────────┤
│ = │ 相等赋值运算符 │ $a=0 │
├─────┼─────────┼──────────┤
│ += │ 加法指定运算符 │ $a+=5 │
├─────┼─────────┼──────────┤
│ -= │ 减法指定运算符 │ $a-=1 │
├─────┼─────────┼──────────┤
│ *= │ 乘法指定运算符 │ $a*=2 │
├─────┼─────────┼──────────┤
│ /= │ 除法指定运算符 │ $a/=5 │
├─────┼─────────┼──────────┤
│ %= │ 余数指定运算符 │ $a%=7 │
├─────┼─────────┼──────────┤
│ .= │ 字符串指定运算符│ $a.="hello" │
├─────┼─────────┼──────────┤
│ & │ 与 │ $a&$b │
├─────┼─────────┼──────────┤
│ │ 或 │ $a$b │
├─────┼─────────┼──────────┤
│ ^ │ xor │ $a^$b │
├─────┼─────────┼──────────┤
│ ~ │ 非 │~$a(取1的补码 )│
├─────┼─────────┼──────────┤
│ << │ 向左移位 │ $a<<$b │
├─────┼─────────┼──────────┤
│ >> │ 向右移位 │ $a>>$b │
├─────┼─────────┼──────────┤
│and或&& │ 与 │$a and $b或$a&&$b │
├─────┼─────────┼──────────┤
│or或 │ 或 │$a or $b或$a$b │
├─────┼─────────┼──────────┤
│xor │ xor │ $a xor $b │
├─────┼─────────┼──────────┤
│ ! │ 非 │ !$a │
└─────┴─────────┴──────────┘
┌───┬────────────┐
│符号 │ 意义说明 │
├───┼────────────┤
│ $ │变量 │
├───┼────────────┤
│ & │变量的指针(加在变量前)│
├───┼────────────┤
│-> │对象的方法或属性 │
├───┼────────────┤
│=> │数组的元素值 │
├───┼────────────┤
│? : │三元运算符 │
└───┴────────────┘
同c语言的比较一下吧。其中只是多了个“.”这一个运算符。它的作用是使两个字符串相连,如下例,显示结果为hello,my baby.
<?php
$a="hello,";
$b="my baby.";
echo $a.$b;
?>
还有一个符号也使php的功能强大了。这就是“$”。它是用于变量之前的,表示这是个变量,如$a,$b等。那它的作用又强在哪呢?这就是变量的变量。
如下例:
<?php
$a="go";
$$a="here";
echo $a;
echo $$a;
echo $go;
?>
显示结果为:
go
here
here
其实,在一个变量前加一个“$”,就是把这个变量的内容作为了一个新的变量名。这是php所特有的,有时可使程序简单化。
现在,让我们来看看php的变量与常数。
让我们先看一例吧。
文件:test.php
<?php
//这是一种单行注释方法
#这是另一种单行注释方法
/*这是一种多行注释的方法
以下让我们看看例了吧*/
funtion display($file,$line)
{
global $message;
echo "file:$file<br>";
echo "line:$line<br>";
echo "message:$message<br>";
}
$message="这是一个例程。";
display(_file_,_line_);
?>
显示结果为:
text.php
15
这是一个例程
上例中,function 是定义一个自定义函数。其后的两个变量$file和$line是两个局域变量,它们只在函数体中起作用,与函数体外的变崐量互不干扰,如果在函数体外还有$file或$line的话,两个$file和两个$line的值是不一定会相同的。_file_和_line_是两个常量,它们的崐值是早已定好了的。_file_为本文件的文件名,_line_为执行行所在的行号。在函数体内还有一句为 global $message; 它的作用是使全崐局变量$message能作用到函数体中,这句还可写成$global["message"];
对于get、post和cookie等机制产生的信息,php会自动地将其视为php的变量。这样,使提交表单的信息处理显地是格外的轻松。如下:
文件:
form.html
<html><head><title></title></head>
<body>
<form action="deal.php">
用户名:<input type="text" name="uname" size=20><br>
<input type="submit" value="ok">
</form>
</body>
</html>
<?php
echo "你的用户名为:$uname";
?>
以上程序会要求用户输入一个用户名,提交表单后,后回用户名确认信息。可看出,表单中的uname已成为了deal.php程序中的$uname变崐量。简单吧。:-)
下面看看php的基本流程控制:
if…else…elseif
语法一:
if (条件) {
语句体
}
语法二:
if (条件) {
语句体一
}else{
语句体二
}
语法三:
if (条件1) {
语句体一
}elseif(条件2) {
语句体二
}else{
语句体三
}
我们把上面的deal.php程序改为:
<?php
if ($uname=="小明") {
echo "见到你真高兴,小明。";
}elseif ($uname=="小华"){
echo "喔,是小华呀。";
}else{
echo "你是$uname,对吧";
}
?>
除了if 语句外,还有while循环,它的语法如下:
while(条件){
语句体
}
当条件为true时,执行语句体。
do…while的语法如下:
do {
语句体
}while(条件)
先执行一次语句体,若条件为true,则循环再次执行语句体。
for循环的语法同c一样,如下:
for (条件初始;判断条件;条件改变) {语句}
而break 跳出正在执行的循环,continue 为中断本次循环。
好了,本文就到这吧。以上的一些基础相信您很快便能上手了的。
上文中曾提到了php提交表单信息是很方便的。可是,提交的表单信息中的变量的生命周期是多长呢?本文就来崐谈谈这个问题。
表单的参数会传给下一个处理程序,这是不用置疑的。因为,我们曾有过这样的例子。可它还会继续传给下一个处理程序吗?
答案是否定的!一个form表单所提交的参数只传给第一个处理程序,而下一个处理程序中它是不会起作用的。来看看下例吧:
文件:table.html
<html>
<head><title>表单提交</title>
</head>
<body>
<form action="deal-1.php">
输入你认为好的歌星:<input type="text" name="start" size=20 >
<input type="submit" value="是他了,送出吧">
</form>
</body>
</html>
文件:deal-1.php
<?php
echo "<html><body>";
echo "你喜欢$start,对吗?<br>";
echo "<a href=\"deal-2.php\">试试是否会再传下去</a>";
echo "</body></html>";
?>
文件:deal-2.php
<?php
echo "<html><body>";
echo "你说$start好吗?";
echo "</body></html>";
?>
从上例中,我们可以看见:deal-1.php处理的结果为(假定我们在table.html中输入的是“张学友”):
你喜欢张学友,对吗?
试试是否会再传下去
说明表单提交了变量$start给deal-1.php,而在deal-1.php的显示结果中,若我们点击了链接“试试是否会再传下去”之后,deal-2.ph崐p的处理结果为:
你说好吗?
很明显,$start没有传给deal-2.php。但是,我们又怎样延长$start的生命周期呢?其实,这很简单,使用参数传递的方法就行了。如崐下,我们可以把deal-1.php改成这样:
<?php
echo "<html><body>";
echo "你喜欢$start,对吗?<br>";
echo "<a href=\"deal-2.php?start=$start\">试试是否会再传下去</a>";
echo "</body></html>";
?>
分晰程序,你会发现只是在deal-1.php后加了一句“?start=$start”就行了,而这起的作用就是参数传递。如:http://zhuagk12.oso.崐com.cn/cartoon.php?no=1 其?后的为参数,no为参数名,其值为1。这样,会在cartoon.php程序中产生变量$no,其值为1。若传两个以上崐参数,其间用&分隔。如:http://zhuagk12.oso.com.cn/cartoon.php?no=2&debug=1
为了延长参数的生命周期,我们还可以使用cookie或session来实现,这里不加多述,在以后的文章中你会见到它们的用法。
上文(《浅谈php语法(三)》)的最后提到了cookie和session,本文就这两种技术作一些介绍。
cookie我们都常把它念成“库记”,也叫它“小甜点”。它是一种存储在客户浏览器中的一个小文件。它是为解决http的一次连接而无崐记忆而发展起来的,可用来追踪使用者或是对重返的使用者进行确认。php对此提供了setcookie()函数,可以设定cookie。因为cookies算是崐http标头的一部分。所以,setcookie()函数必须在网页数据传给浏览器之前调用。这同调用header()函数是一样的。
cookie必须由主机端提供;所以,我们必须在cgi程序中送出一个设定了cookie的标头。如下是php中调用setcookie()函数设定cookie的崐例子:
<?php
setcookie("user","wind",time()+3600,"/php/","http://www.oso.com.cn");
?>
其中,user为该cookie的名称;wind为该cookie的值;time()+3600为该cookie的有效时间;/php/为该cookie的相关路径;http://www.崐oso.com.cn为该cookie的网站。
其实,我们除了使用这种方式设定cookie外,还可使用header()函数如:header("set-cookie:user=wind"),不过这要对http的头部信崐息有所了解才行,所以笔者不建议使用这种方式,还是使用setcookie()方便些。
读取cookie时,浏览器在连接某个网站时,会自动先检查是否有该站的cookie,有的话将会自动传给服务器,而在php中,会将传回的co崐okie作为一个变量。如上面所设的cookie返回后,会形成一个$user变量,其值为wind。
但是,cookie有个致命的缺点,就是若客户关了cookie接收,无法向客户端存放cookie时,一切操作就会出错。因此,在php4中提供了s崐ession来代替cookie。
session与cookie的最大区别在于cookie将信息存于客户端,而session则是存于服务器端。其实,session是对php脚本提供了一个全局崐变量。例子如下:
设置一个session,名为user,值为wind
<?php
session_start();
$user="wind";
session_register("user");
?>
读session,显示结果为“欢迎你!wind”
?br> <?php
session_start();
echo "欢迎你!$user";
?>
本文只是浅谈了一下cookie和session技术,对于想具体了解该技术的人,还请参考别的书藉。
网上发送email,可要用到mail()函数了。其格式如下:
mail(收信人,主题,内容,邮件文件头);
在网上,发送email给站长,通常是这样的:
<a href="mailto:webmaster@163.com">webmaster@163.com</a>
这样,当点击了webmaster@163.com这个链接之后,就会启动默认的邮件编缉器来写email,实在是麻烦,使用mail()函数,便可方便地编出一个在线发信页面。这种页面的收件人是固定的(webmaster@163.com),有需再填收件人地址了,而主题我们也可以将把它定下来。如下例:
文件:email.html
<html>
<head>
<title>发信给网管</title>
</head>
<body>
<h2 align="center">网管收信</h2><br>
<hr><br>
<center>
<form action="mail.php">
发件人:<input type="text" name="from" size=25><br>
主题:<input type="text" name="subject" size=20><br>
内容:
<textarea name="content" cols=80 rows=15>你好,站长:</textarea><br>
<input type="submit" value="寄出"> <input type="reset" value="重写"><br>
</form>
</body></html>
文件:mail.php
<?php
if (empty($from) or empty($subject) or empty($content)) {echo "没有完成填写,请<a href="email.html">返回</a>";}
$body="[主题] $subjectn";
$body.="[发件人] $fromn";
$body.=$content;
$deal=mail("webmaster@163.com",$subject,$body,"from:$from");
if ($deal) {echo "寄件成功!";}else{echo "寄件失败!!!";}
?>
php介绍到此,也差不多了,你是不是感到了php的强大,是不是也想加入php的行列,就现在吧。要使自己在php中飞翔,这点知识还是崐不足的,它只能帮你入门而已。入门之后,就修行在个人了。我的朋友,再见──(^_^)
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器