与使用包含文件一样,函数也可以使代码更高效,更容易调试。
函数是可以在程序的任意地方调用的代码块,使用函数后,我们可以多次执行相同的代码行,只需要在指定位置调用相应的函数,而无需重复输入这些代码。
实验:
把一组电影列表添加到电影评论站点上。
(1)修改movie1.php页面:新增高亮显示部分:
<?php
session_start();
$_SESSION['username']=$_POST['user'];
$_SESSION['userpass']=$_POST['pass'];
$_SESSION['authuser']= 0;
//Check username and password information
if (($_SESSION['username']=='Joe') and ($_SESSION['userpass']=='123456')){
$_SESSION['authuser']=1;
}
else {
echo 'Sorry, but you don\'t have permission to view this page!';
exit();
}
?>
<html>
<head>
<title>Find my Favourite Movie!</title>
</head>
<body>
<?php include'header.php'; ?>
<?php
echo "<a href=\"moviesite.php?favmovie=Roman holiday\">";
echo "Click here to see information about my favourite movie!";
echo "</a>";?>
<br/>
<a href="moviesite.php?movienum=5"> Click here to see my top 5 movies. </a>
<br/>
<a href="moviesite.php?movienum=10"> Click here to see my top 10 movies. </a>
</body>
</html>
(2)修改moviesite.php
<?php
session_start();
//check to see if user has logged in with a valid password
if ($_SESSION['authuser']!=1) {
echo "Sorry,but you don't have permission to view this page!";
exit();
}
?>
<html>
<head>
<title>My Movie Site
<?php
if (isset($_GET['favmovie'])) {
echo '-';
echo $_GET['favmovie'];
}
?>
</title>
</head>
<body>
<?php include 'header.php'; ?>
<?php
function listmovies_1() {
echo '1. Roman Holiday<br/>';
echo '2. Gone with the wind<br/>';
echo '3. Pride and Prejudice<br/>';
echo '4. The Legend of 1900<br/>';
echo '5. The Shawshank Redemption<br/>';
}
function listmovies_2() {
echo '6. Terminator<br/>';
echo '7. Star Trek IV<br/>';
echo '8. Race<br/>';
echo '9. A Beautiful Mind<br/>';
echo '10. Les Choristes<br/>';
}
if (isset($_GET['favmovie'])) {
echo 'Welcome to our site.';
echo $_SESSION['username'];
echo '!<br/>';
echo 'My favourite movie is: ';
echo $_GET['favmovie'];
echo '<br/>';
$movierate=5;
echo 'My movie rating for this movie is: ';
echo $movierate;
}
else {
echo 'My top ';
echo $_GET['movienum'];
echo ' movies are:';
echo '<br/>';
listmovies_1();
if ($_GET['movienum']==10) {
listmovies_2();
}
}
?>
</body>
</html>
(3)通过login.php登录后,输入用户名:Joe和 密码:123456,提交后进入如下页面:
点击第2个链接,打开如下页面:
这本书的代码中还是有些错误的,完全按照它上面的来操作,结果在提交用户名、密码后报错:
Parse error: syntax error, unexpected 'if' (T_IF) in /var/www/html/moviesite.php on line 56
排错的时候,打开moviesite.php,显示行号,错误提示56行的if的出现是不符合设定的,一般应该是上面的句子的问题。原来是引用函数listmovies_1()时,没有结束的分号;,添加分号后就好了。
程序说明:
movie1.php页面允许用户选择查看5个或10个自己喜欢的电影,用户选择的链接设置了$movienum的值。
moviesite.php完成了几个操作:
- 建立了函数listmovies_1()和listmovies_2(),它们分别输出列表中的前5个电影和后5个电影。
- 添加了如下代码行:
if (isset($_GET['favmovie'])) {
isset函数检查是否设置了变量。