与使用包含文件一样,函数也可以使代码更高效,更容易调试。

函数是可以在程序的任意地方调用的代码块,使用函数后,我们可以多次执行相同的代码行,只需要在指定位置调用相应的函数,而无需重复输入这些代码。

实验:

把一组电影列表添加到电影评论站点上。

(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函数检查是否设置了变量。