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

2019-06-17 09:11

第11章答案:

选择题:

C B

B(说明:浏览器不允许来自某个域名的HTTP事务更改另一个域名下的cookie,否则这将造成严重的的安全问题。) D B

B,D(说明:B和D是最有可能出问题并应该深入调查的地方。由于浏览器访问其他网站都正常,所以不可能是浏览器程序出了问题。杀毒软件通常不会选择性的只阻止安全的cookie(不过有可能会阻止所有的cookie)。你首先应当检查浏览器是否被设置为阻止所有cookie,这是最有可能导致该问题的原因。同时,错误的时区设置也可能是根源——给cookie设置有效期时用得是GMT时间。可能会出现cookie在写入时就立刻过期,从而无法被脚本接收的情况。)

B(说明:session.gc_maxlifetime设置的是用户最后一次请求到session被回收之间的时间间隔。尽管数据文件并没有被真正删除,不过一旦session被回收,你将无法对此session进行访问。巧合的是,session.gc_maxlifetime的默认设置正好是1440秒,但这个数字是可以被系统管理员调整的。所以答案应该是B。) 问答题:

1.header函数和setcookie函数

2. 状态401代表未被授权,如果返回“找不到文件”的提示,则可用header(\3.答案创建教材11.4.2,11.3.2,11.4.1. 4.Cookie的内容如下:

Set-Cookie:PHPSESSID= btek48cklarn1m73eg2qkcsu12; path = PATH;

domain= DOMAIN_NAME;

禁用Cookie后,Session还可以使用,请参考11.4.6中实验3中的示例程序。

5.

设置Session的生存时间包括设置服务器端Session的生存时间和浏览器端的生存时间。 方法1:php.ini配置文件中有一组如下Session的配置选项,实现Session的设置。其中session.gc_maxlifetime = 1440:设置Session文件在服务器端的储存时间,如果超过这个时间,那么Session文件会自动删除。默认为1 440s(24min),表示1 440s无操作就会自动销毁该Session文件。session.cookie_lifetime = 0:表示浏览器一旦关闭Session ID立即失效(推荐使用)。 方法2:使用下面的程序设置 $savePath = \ $lifeTime = 小时 * 秒; session_save_path($savePath); session_set_cookie_params($lifeTime);

session_start();

方法3:使用函数setcookie()或session_set_cookie_params($lifeTime)设置

6.解决HTTP无状态本质,可以从以下几个方面入手。

(1)利用form表单的隐藏域hidden,在表单数据提交时传递参数,这种方法需要和form表单一起使用。

(2)利用超链接通过URL查询字符串传递参数。

(3)使用header()函数重定向功能或JavaScript重定向功能,通过URL查询字符串传递参数。

(4)使用Cookie将浏览器用户的个人资料存放在浏览器端主机中,其他PHP程序通过读取浏览器端主机中的Cookie信息实现页面间的参数传递。

(5)使用Session将浏览器用户的个人资料存放于WEB服务器中,其他PHP程序通过读取服务器端主机中的Session信息实现页面间的参数传递。

7.

通过了解 SESSION 的工作原理,可以发现,在默认情况下,各个服务器会各自分别对同一个客户端产生SESSION ID,如对于同一个用户浏览器,A 服务器产生的 SESSION ID 是 30de1e9de3192ba6ce2992d27a1b6a0a,而B服务器生成的则是c72665af28a8b14c0fe11afe3b59b51b。另外,PHP 的 SESSION 数据都是分别保存在本服务器的文件系统中。确定了问题所在之后,就可以着手进行解决了。想要共享 SESSION 数据,那就必须实现两个目标:

一个是各个服务器对同一个客户端产生的 SESSION ID 必须相同,并且可通过同一个 COOKIE 进行传递,也就是说各个服务器必须可以读取同一个名为 PHPSESSID 的 COOKIE;

另一个是 SESSION 数据的存储方式/位置必须保证各个服务器都能够访问到。 简单地说就是多服务器共享客户端的 SESSION ID,同时还必须共享服务器端的 SESSION数据。 第一个目标的实现其实很简单,只需要对 COOKIE 的域(domain)进行特殊地设置(将域名设置为父子关系)即可,默认情况下,COOKIE 的域是当前服务器的域名/IP 地址,而域不同的话,各个服务器所设置的 COOKIE 是不能相互访问的。cookie可以跨越子域名。比如我们在xiaofeicn.com下面注册个个cookie,那么可以在bbs.xiaofeicn.com上读取到该cookie。 第二个目标的实现方法是所有的WEB服务器的SESSION存放在一个文件服务器(或者数据库服务器)上。例如:采用一台Mysql服务器做共享服务器,把所有的session的数据保存到Mysql服务器上,所有Web服务器都来这台Mysql服务器来获取Session数据。

第12章答案:

选择题:

C(说明:从 PHP4.2.0开始,除非已经给定了一个伪随机整数列,否则不再需要用rand()函数初始化随机数生成器。此外,即使随机数生成器没有被事先播种,脚本仍然会生成49个伪随机字符。尽管$array变量是字符串,但可以用访问数组的方式进行访问——使用数字索引访问某个位置上的字符。最后,for循环将从1开始执行到50,也就是执行了49次。) B

A

B,D(说明:本题考验你对HTML编码的认识以及代码查错能力。变量$s在被函数htmlentities()处理过后,结果返回给了变量?$ss,而$s自己并没有被改变。因此答案是B和D。) B(说明:虽然你可以用implode函数把数组转化成字符串,然后存在数组里,但却无法保证日后一定能用serialize()把这个字符串还原成数组。浏览器对单个cookie有容量限制,因此在cookie里存储数组不是个好主意。但事情也并非永远是这样,你仍然可以存储一些比

较小的数组。) B D A D D D

B

B,D,E(注意D选项a为常量,当然该常量并没有定义,此时该常量的值为常量名) A,D

C

B,D(说明:pack 函数能对二进制数据进行复杂的格式化,包括将字符串中的字符转化成十六进制表示。bin2hex 函数也有同样的转化功能。注意,printf()能将整数转化成十六进制数,但无法转化字符串。) B

填空题:

nl2br

str_pad 函数(说明:它可以把字符串填充到指定长度)

mb_convert_encoding($str, 'GBK', ' UTF-8')或者 iconv(' UTF-8', 'GBK', $str) explode,implode 对空格的转义不同

strip_tages(注释:第二个空有歧义,该书第二版删除第二个空) substr($a,0,1)和$a{0}

跟起始标志的一样,且结束标志前也要一个换行,后面加上分号。 问答题:

方法1参见教材第7章问答题 方法2:

function changeStyle(&$str) { $arrStr=explode('_',$str);

foreach($arrStr as $key=>$value){ $arrStr[$key]=strtoupper(substr($value,0,1)).substr($value,1); }

return implode('',$arrStr);

}

$s = \echo changeStyle ($s); ?>

方法3:

function changeStyle(& $str){

$str = str_replace (\$str = ucwords ($str);

$str = str_replace (\

return $str;

}

$s = \echo changeStyle ($s); ?>

function reverse($str){ $len = mb_strlen(\

$new_string = \

for ($i=$len;$i>=0;$i--){

$new_string .= mb_substr($str,$i,1,'gbk');

}

return $new_string;

}

$str = \你好,世界!\

echo reverse($str); ?> 3.

使用mb_substr()或mb_strcut()函数可以解决从中文字符串中取子串时可能产生的乱码问题。 4.

方法1:

function getExt($url){ $arr = parse_url($url);

$file = basename($arr['path']); $ext = explode(\ return $ext[1]; } ?>

方法2:

function getExt($url) { $url = basename($url); $pos1 = strpos($url,\ $pos2 = strpos($url,\

if(strstr($url,\

return substr($url,$pos1 + 1,$pos2 - $pos1 - 1); } else {

return substr($url,$pos1); } } ?>

5.

方法1.

get_ext1($file_name), get_ext2($file_name) function get_ext1($file_name){ return strrchr($file_name, '.'); }

方法2.

function get_ext2($file_name){

return substr($file_name, strrpos($file_name, '.')); }

方法3.

function get_ext3($file_name){

return array_pop(explode('.', $file_name)); }

方法4.

function get_ext4($file_name){ $p = pathinfo($file_name); return $p['extension']; }

方法5.

function get_ext5($file_name){

return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), '.'))); }

第13章答案:

1.

#menu ul li a:link,#menu ul li a:visited{ color:#FF0000; font-size:14pt }

2.

history.go(1)

3.

在FCKeditor中自定义表情图片的步骤是什么?答案参见教材13.2.3中的9,10,11 在FCKeditor中自定义字体大小的方法是什么?答案参见教材13.2.3中的3 在FORM表单中如何使用在线编辑器FCKeditor?答案参见教材13.2.4 4.

答案参见教材13.4.4 5.

答案参见教材13.4.5

6.

JavaScript表单弹出对话框的函数是alert函数,获得输入焦点的函数是focus函数 7.

JavaScript的重定向函数是什么?答案参见教材11.1.2

怎样引入一个外部JS文件?

方法是:

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

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

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

马上注册会员

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