PHP编程基础与实例教程练习题参考答案(2)

2019-06-17 09:11

用户名和密码将出现在 URL 上,如果页面可以被缓存或者其 他人可以访问客户这台机器,就可以从历史记录获得该用户的帐号和密码,所以表单提交建议使用 Post 方法;Post 方法提交的表单页面常见的问题 是,该页面如果刷新的时候,会弹出一个对话框。 2.答案参见教材6.5.2 3.答案参见教材6.5.4

4.以上传文件只允许为”jpg”图片为例,只需要得到文件名的扩展名必须是”jpg”或者”JPG”,才可进行上传。

获得文件名扩展名的方法如下:

$extend = strtolower(end(explode(\ 说明:这里用到了字符串操作函数explode,数组指针函数end,和字符串操作函数strtolower 然后再使用if判断语句if($extend == “jpg”),条件成立时,再进行上传。

5.POST传输数据容量由php.in中post_max_size的值设置。GET传输数据容量由浏览器决定。 6.

$clientIP = $_SERVER['REMOTE_ADDR']; $serverIP = $_SERVER['SERVER_ADDR']; echo $clientIP; echo \ echo $serverIP; ?>

7.

程序说明:此题关键在于文件上传框不确定,可以使用DOM+JavaScript,产生不确定个数的于文件上传框。步骤如下:

1.创建目录:uploads,所有上传文件置于该目录下。 2.创建upload.html文件,写入如下代码:

3.创建upload.php文件,写入如下代码:

if(empty($_POST)){ exit(\您提交的表单数据超过post_max_size的配置!
\}

$count = count($_FILES['myFile']['name']); for($i=0;$i<$count;$i++){

$myFile = $_FILES['myFile']; $error = $myFile[\switch ($error){

case 0: $fileName = $myFile['name'][$i]; echo \您上传的文件有:\ $fileTemp = $myFile['tmp_name'][$i];

$destination = \

move_uploaded_file($fileTemp,$destination);

break; case 1: echo \上传的某些文件超过了php.ini 中upload_max_filesize选项限制的值!

break;


\

case 2: echo \上传的某些文件超过了FORM表单MAX_FILE_SIZE选项指定的值!

break;


\

} ?>

}

case 3: echo \某些文件只有部分被上传!
\ break; case 4: echo \没有选择上传文件!
\

break;

第7章答案:

选择题: 1.A

2.E 3.C 4.A

5.B

6.E(说明:在较新版本的PHP中,require(或requier_once())和include()(或include_once())只有一个区别——如果包含的文件不存在,前者将产生一个致命错误,同时终止脚本的执行;

而后者只会产生一个警告。因此答案E正确)

7.C(说明:当参数被声明为通过引用传递时,你不能给它赋默认值,此时解释器期望获得一个能在函数内部进行修改的变量。) 8.A(说明:一段脚本并不会在执行到文件末尾时终止,所以当前文件才能被其他脚本包含。至于PHP和Apache崩溃,这两个说法就太恶搞了) 9.

程序阅读题: 1. 501 2. 552 3. 12

问答题: 1.

function($var1,$var2,$var3){

$max=$var1>$var2?$var1:$var2; $max=$max>$var3?$max:$var3;

return $max; } ?>

2.答案请参考第6章最后一道习题。

3.按值传递:函数范围内对值的任何改变在函数外部都会被忽略

按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改

优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。

4.

通过修改php.ini配置文件的选项allow_call_time_pass_reference(默认值为Off)决定是否开启函数调用时强制参数按照引用传递。

5.

可用冒泡法进行排序。冒泡排序的基本概念是:依次比较 相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后, 如此继续,直至比较最后两个数,将小数放前,大数放后,此时第一趟结束,在最后的数必是所有数中的最大数。重复以上过程,仍从第一对数开始比较(因为可能 由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟 结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。

function BubbleSort($str) {

for ($i=0;$i

for ($j=count($str)-2;$j>=$i;$j--) {

if($str[$j+1]<$str[$j]) {

$tmp = $str[$j+1];

$str[$j+1]=$str[$j]; $str[$j]=$tmp; } } } return $str;

}

$str = array(3,6,1,5,9,0,4,6,11);

print_r(BubbleSort($str)); ?>

6.说明:这里使用了字符串处理函数ucwords()和explode()函数。

function convString($string){ $array = explode('_', $string); $str = \

for($k=0;$k

$str = $str.ucwords($array[$k]);

} return $str; }

echo convString(\

?>

7. 说明:这里使用了字符串处理函数explode()函数。

function getRelativePath($a, $b) { $returnPath = array(dirname($b)); }

$arrA = explode('/', $a);

$arrB = explode('/', $returnPath[0]);

for ($n = 1, $len = count($arrB); $n < $len; $n++) { if ($arrA[$n] != $arrB[$n]) {

}

break;

}

if ($len - $n > 0) { $returnPath = array_merge($returnPath, array_fill(1, $len - $n, '..')); }

$returnPath = array_merge($returnPath, array_slice($arrA, $n)); return implode('/', $returnPath);

$a = '/a/b/c/d/e.php'; $b = '/a/b/12/34/c.php';

echo getRelativePath($a, $b); ?>

第8章答案:

1.E 2.B 3.C 4.C

5.E 6.C

7.B,C(说明:在标准SQL中,如果出现GROUP BY,结果集中所有的字段都必须是聚集值,或者是GROUP BY结构本身的一部分。某些DBMS——比如MySQL——允许你打破这种规则,但它不按标准的方式执行,并且在其他数据库系统上无效。)

8.C(说明:本题描述了一种在使用join时常犯的概念性错误。很多人可能觉得这个查询将返回两个表中非共有记录。但实际上数据库却认为是“读出所有ID 非共有的记录”。DBMS将读取读取左边表中所有的记录加上右边表中ID非共有的记录。因此,该查询将读取TABLE1中的每条记录乘以TABLE2中的每条记录再减去两表中相同的记录条数。) 填空题: 1.事务

2.where 3.insert

4.auto_increment

5. 左连接表A和表B意味着取表A的全部记录按指定的连接条件与表B中满足连接条件的记录进行连接,若表B中没有满足连接条件的记录,则表A中相应字段填入NULL。 问答题:

1.答案参见图8-21(说明,父子关系是相对的) 2.答案参见8.1.2

3.满足唯一性约束的字段可以为NULL。 4.MEMORY,MyISAM,InnoDB 5. 答案参见8.3.3

6. Varchar是变长,节省存储空间,char是固定长度。查找效率要char型快,因为varchar是非定长,必须先查找长度,然后进行数据的提取, 比char定长类型多了一个步骤,所以效率低一些。 7.忽略

8.说明:这里使用了MySQL的now()函数和DATE_FORMAT()函数。

INSERT INTO User('Name','Tel','Content','Date') VALUES('小王','13254748547','高中','2007-05-06') UPDATE User SET Date=DATE_FORMAT(NOW(),'%Y-%m-%d') WHERE Name='张三' DELETE FROM User WHERE Name='李四'

9.

SELECT username,count(*) as num FROM `members` group by username order by count(*) desc limit 10


PHP编程基础与实例教程练习题参考答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:丰台全钢大模板施工方案 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: