PHP编程基础与实例教程第二版练习题参考答案.doc_第1页
PHP编程基础与实例教程第二版练习题参考答案.doc_第2页
PHP编程基础与实例教程第二版练习题参考答案.doc_第3页
PHP编程基础与实例教程第二版练习题参考答案.doc_第4页
PHP编程基础与实例教程第二版练习题参考答案.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

由于时间仓促,答案中难免存在错误,不妥之处恳请读者批评指正!第1章答案:1.答案见教材1.2.3,1.2.4,1.2.5,1.2.62.答案见教材1.2.4,1.2.53.PHP,JSP,.NET,ASP等4.答案如下:打印明天的时间使用下面的程序:date ()函数中:d: 几日,两位数字,若不足则补零;从01至31 D: 星期几,3个英文字母,如:Fri F: 月份,英文全名,如:January h: 12小时制的小时,从01至12 H: 24小时制的小时,从00至23 m: 月份,两位数字,从01至12 M: 月份,3个英文字母;如:Jan s: 秒;从00至59 w: 数字型的星期几,从0(星期天)至6(星期六) Y: 年,四位数字 y: 年,两位数字 z: 一年中的第几天;从1至366time() 函数返回当前时间的 Unix 时间戳,即:自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。5. Apache服务器的配置文件名是httpd.conf文件,默认放在C:wampbinapacheApacheconf目录下。MySQL服务器的配置文件名是my.ini,默认放在C:wampbinmysqlmysql目录下,PHP预处理器配置文件名是php.ini,默认放在C:wampbinapacheApachebin目录下。6. 答案见教材1.3.5第2章答案:1. 答案见教材2.1.12. 答案见教材2.1.23. 答案见教材2.2.2布尔型主要用于逻辑判断,整型和浮点型主要用于算术运算,字符串主要用于文字性描述,数组实际上是用于容纳若干变量的容器。当使用面向对象编程思想时,需要使用对象描述事物(属性及方法)。4. echo与print共同点:它们都不是真正的函数,是一种语法结构,因为语句没有返回值,函数可以有返回值(即便没有用)(也有说print是函数,echo不是)。echo和print 后面都可不用加(), 如: echo ok; print ok;运行速度echo稍快一些,因为echo并不返回值,print返回一个值int(1)。echo与print区别:一般用echo,除非三元运算时。$a=5; ($a=5) ? print 5: print 0;echo 后不要跟()。print只能有一个参数,所以不能不能用,而echo可以。echo - 输出一个或者多个字符串print_r是递归打印,主要用于打印复杂类型变量的值(如 数组,对象) 5. 答案见教材2.36. 答案见教材图2.37.get_test(123);echo $password;/输出字符串“123”两次md5加密结果:d9b1d7db4cd6e70935368a1efb10e377?第3章答案:选择题:1:C2:B3:A4:D(说明:PHP变量以一个美元符号为开头,后面跟上任意数量的数字、字母和下划线。 $“MyVar”是一个合法的变量名,它使用的是较松散的命名约定。&$something是对$something的引用。然而,变量名不能以数字为开头,$10_somethings是非法的,因此答案是D。)5:D(说明:这又是一个考验debug能力的题。注意到了吗,在脚本的末尾,echo语句中的?$output变量拼错了!脚本不会输出任何东西,答案是D),6:D(说明:%运算符表示取模,它返回两个操作数相除的余数。 是左移运算符,相当于乘以2的N次方。最后的答案乘以了一个浮点数,改变了它的数据类型。但是,由于小数点后是零,因此输出的结果不包含小数部分。答案是 256)7:B(说明:全等运算符比较两个操作数的数据类型和值,两者中有一个不同,都会返回False。因此答案是B)8:AC(说明:A选项中,pow函数计算2的平方,答案是4。C选项中,左移运算符将$a的值左移两位,相当于乘以4)9:D10:B填空题:逻辑异或(xor)运算符02程序阅读题相等相等不相等truetruetruetruetruefalsetruefalseaaaaaa41hotdogokis zero4问答题:1.isset($str)用于测试变量是否设置(或者存在),empty($str)用于测试变量是否为空。检测变量是否为空使用is_null()和empty()函数。is_null()和empty()函数的区别请参考下面的程序:?php $a = 0;var_dump(empty($a); /输出:bool(true) echo ;var_dump(is_null($a); /输出:bool(false)?2. PHP垃圾回收机制是基于引用计数机制的垃圾回收,当一个变量的引用计数变为0时, PHP将在内存中销毁这个变量,此时启动垃圾回收机制。当一个变量被初始化或者赋值给另一个变量时引用计数会加1,当变量或者被赋值的变量被销毁或者被侦测到无用时引用计数会减一,当垃圾收集的进程运行时会释放掉引用计数为0的那些变量会被从内存中释放(垃圾回收期间程序会被中断)。当脚本执行完成时所有资源都会被释放。3.按值传递:函数范围内对值的任何改变在函数外部都会被忽略按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改区别:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。传值只是把某一个变量的值传给了另一个变量,而引用则说明两者指向了同一个地方。4. 5.$var2?$var1:$var2;$max=$max$var3?$max:$var3;echo $max;?第4章答案:选择题:1. D(说明:根据条件式的逻辑,要想得到Hello, World!字符串,必须要在第一个if结构中满足else的条件。因此$a必须为False,然后$b也必须为False。最内层的条件语句的实现要求先前的两个变量($a和$b)是False,而$c必须是True)2.C3.A4.E编程题:第5章答案:选择题:1.D2.B3.B4.A(说明:注意,$myarray的键值并没有打上引号。所以,正在访问的键不是myvalue字符串,而是常量myvalue的值。最终访问的是$myarray10,值是Dog,答案是A。)5.A(说明:5.通常情况下,foreach 语句是遍历数组的首选。但是,由于foreach语句是在数组的副本上进行操作,而我们需要给数组中每个元素重新赋值,所以在这里foreach就不适用了。尽管也可以用while循环和dowhile循环,但由于数组是顺序索引的,最合适的语句还是for语句。因此答案是A。)6.C7.E8.B(说明:foreach操作的是$array的副本,因此对原来的值没有影响)9.B(说明:只有asort函数能在保留原有索引关系的前提下进行排序。答案是B)10.A11.B,D(说明:array_flip()只能把数组中每个元素的键和值进行交换。rsort()和array_reverse()则能把题目中的数组逆向排序为需要的形式(d,c,b,a)。答案是B和D。)12.B13.D14.A15.A16.A问答题:1. sort(), asort()以及ksort()三个函数之间有什么区别?在什么情况下会使用他们?答案参见教材5.4.72.?php $arr = array(james, tom, symfony);echo join(,$arr);/方法1echo ;echo implode(,$arr);/方法2?编程题:第一题:说明:当$ip是合法IP地址时,程序运行结果是1。当$ip不是合法IP地址时,程序运行结果是空字符串。?php$ip = 11;$flag = false;/将标记flag初始化为false$ips = explode(.,$ip);/使用“.”分割字符串,将分割后的字符串放到数组中$count = count($ips);/获取数组的长度if($count!=4)/如果数组的长度不是4,说明是非法IP地址,退出程序exit($flag);for($i =0 ; $i =0 & $ips$i第二题:可用冒泡法进行排序。冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后, 如此继续,直至比较最后两个数,将小数放前,大数放后,此时第一趟结束,在最后的数必是所有数中的最大数。重复以上过程,仍从第一对数开始比较(因为可能 由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟 结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。?php $str = array(3,6,1,5,9,0,4,6,11); for ($i=0;$i=$i;$j-) if($str$j+1第三题:说明:这里使用了字符串处理函数ucwords()。?php $string = make_by_id;$str = ;$array = explode(_, $string);for($k=0;$k第6章答案:选择题:AB,DC问答题:1. 答:get 是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息。区别如下:a、 Get 方法通过 URL 请求来传递用户的数据,将表单内各字段名称与其内容,以成对的字符串连接,置于 action 属性所指程序的 url 后,如/test.asp?name=51js&password=51js,数据都会直接显示 在 url 上,就像用户点击一个链接一样;Post 方法通过 HTTP post 机制,将表单内各字段名称与其内容放置在 HTML 表头 (header)内一起传送给服务器端交由 action 属性能所指的程序处理,该程序会通过标准输入(stdin)方式,将表单的数据读出并加以处理b、 Get 方 式需要使用 $_GET 来取得变量的值;而 Post 方式通过 $_POST 来访问提交的内容c、 Get 方式传输的数据量非常小,一般限制在 2 KB 左右,但是执行效率却比 Post 方法好;而 Post 方式传递的数据量相对较大,它是等待 服务器来读取数据,不过也有字节限制,这是为了避免对服务器用大量数据进行恶意攻击。可在php.in中 对 post_max_size 进行设置。建议:除 非你肯定你提交的数据可以一次性提交,否则请尽量用 Post 方法d、 Get 方式提交数据,会带来安全问题,比如一个登陆页面,通过 Get 方式提交数据时,用户名和密码将出现在 URL 上,如果页面可以被缓存或者其 他人可以访问客户这台机器,就可以从历史记录获得该用户的帐号和密码,所以表单提交建议使用 Post 方法;Post 方法提交的表单页面常见的问题 是,该页面如果刷新的时候,会弹出一个对话框。2.答案参见教材6.5.23.答案参见教材6.5.44.以上传文件只允许为”jpg”图片为例,只需要得到文件名的扩展名必须是”jpg”或者”JPG”,才可进行上传。获得文件名扩展名的方法如下:$extend = strtolower(end(explode(. , $myPictureName); 说明:这里用到了字符串操作函数explode,数组指针函数end,和字符串操作函数strtolower然后再使用if判断语句if($extend = “jpg”),条件成立时,再进行上传。5.POST传输数据容量由php.in中post_max_size的值设置。GET传输数据容量由浏览器决定。6.?php $clientIP = $_SERVERREMOTE_ADDR; $serverIP = $_SERVERSERVER_ADDR; echo $clientIP; echo ; echo $serverIP; ? 三、编程题1编写支持换皮肤的PHP程序。程序说明,此题关键在于: 如何设置页面背景图片 如何使用相对路径访问图片资源 如何使用条件运算符初始化下拉选择框的选中状态1.准备JPG皮肤图片,分别将其命名为1.jpg、2.jpg、3.jpg、4.jpg。2.创建目录images,将所有皮肤图片文件置于该目录下。3.创建skin.php文件,写入如下代码:body background=option value=images/1.jpg 皮肤1option value=images/2.jpg 皮肤2option value=images/3.jpg 皮肤3option value=images/4.jpg 皮肤42编写支持多文件上传的FORM表单程序以及PHP程序。程序说明:此题关键在于文件上传框不确定,可以使用DOM+JavaScript,产生不确定个数的于文件上传框。步骤如下:1.创建目录:uploads,所有上传文件置于该目录下。2.创建upload.html文件,写入如下代码:function createUploader()var div= document.getElementById(upload);var uploader = document.createElement(input);uploader.type = file; = myFile;div.appendChild(uploader);var br = document.createElement(br);div.appendChild(br);3.创建upload.php文件,写入如下代码:?phpif(empty($_POST)exit(您提交的表单数据超过post_max_size的配置!);$count = count($_FILESmyFilename);for($i=0;$i$count;$i+)$myFile = $_FILESmyFile;$error = $myFileerror$i;switch ($error)case 0:$fileName = $myFilename$i;echo 您上传的文件有:.$fileName. ;$fileTemp = $myFiletmp_name$i;$destination = uploads/.$fileName;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.A2.E3.C4.A5.B6.E(说明:在较新版本的PHP中,require(或requier_once())和include()(或include_once()只有一个区别如果包含的文件不存在,前者将产生一个致命错误,同时终止脚本的执行;而后者只会产生一个警告。因此答案E正确)7.C(说明:当参数被声明为通过引用传递时,你不能给它赋默认值,此时解释器期望获得一个能在函数内部进行修改的变量。)8.A(说明:一段脚本并不会在执行到文件末尾时终止,所以当前文件才能被其他脚本包含。至于PHP和Apache崩溃,这两个说法就太恶搞了)9.程序阅读题:1. 5012. 5523. 12问答题:1.按值传递:函数范围内对值的任何改变在函数外部都会被忽略 按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改 优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。2.通过修改php.ini配置文件的选项allow_call_time_pass_reference(默认值为Off)决定是否开启函数调用时强制参数按照引用传递。编程题:1.$var2?$var1:$var2;$max=$max$var3?$max:$var3;return $max;?2.答案请参考第6章编程题的答案。3.答案请参考第5章编程题的答案。?php function BubbleSort($str) for ($i=0;$i=$i;$j-) if($str$j+14.答案请参考第5章编程题的答案。?php function convString($string)$array = explode(_, $string);$str = ;for($k=0;$k5答案请参考第4章编程题的答案。第8章答案:1.E2.B3.C4.C5.E6.C7B,C(说明:在标准SQL中,如果出现GROUP BY,结果集中所有的字段都必须是聚集值,或者是GROUP BY结构本身的一部分。某些DBMS比如MySQL允许你打破这种规则,但它不按标准的方式执行,并且在其他数据库系统上无效。)8C(说明:本题描述了一种在使用join时常犯的概念性错误。很多人可能觉得这个查询将返回两个表中非共有记录。但实际上数据库却认为是“读出所有ID 非共有的记录”。DBMS将读取读取左边表中所有的记录加上右边表中ID非共有的记录。因此,该查询将读取TABLE1中的每条记录乘以TABLE2中的每条记录再减去两表中相同的记录条数。)填空题:1.事务2.where3.insert4.auto_increment5. 左连接表A和表B意味着取表A的全部记录按指定的连接条件与表B中满足连接条件的记录进行连接,若表B中没有满足连接条件的记录,则表A中相应字段填入NULL。问答题:1.答案参见图8-21(说明,父子关系是相对的)2.答案参见8.1.23.满足唯一性约束的字段可以为NULL。4.MEMORY,MyISAM,InnoDB5. 答案参见8.3.36. Varchar是变长,节省存储空间,char是固定长度。查找效率要char型快,因为varchar是非定长,必须先查找长度,然后进行数据的提取, 比char定长类型多了一个步骤,所以效率低一些。7.忽略8.说明:这里使用了MySQL的now()函数和DATE_FORMAT()函数。INSERT INTO User(Name,Tel,Content,Date) VALUES(小王高中,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数据库设计题:该题只需设计ER图,ER图如下:第9章答案:选择题:1.B,D(说明:用户输入未经过滤就直接送往了数据库,这非常危险。如果URL包含ID=0+OR+1这样的参数时,实际的查询为DELETE FROM MYTABLE WHERE ID = 0 OR 1,数据库将删除表中所有的记录。)2.A3.C4.A(说明:mysql_fetch_field函数从结果集中取得列信息并作为对象返回)5.C填空题:过滤特殊字符。addslashes问答题:1.答案参见9.1.62. 创建printInfo.php文件,写入如下代码:?phpfunction printInfo($database,$tableName)$host = localhost;$userName = root;$password = ;mysql_connect($host,$userName,$password);mysql_select_db($database);mysql_query(set names gbk);/制作表格(边框宽度为1)echo ;/制作表头(也就是表中拥有的字段)$sql = select * from $tableName limit 10;$result = mysql_query($sql);$fieldsNum = mysql_num_fields($result);echo ;for($i=0;$i$fieldsNum;$i+)echo .mysql_field_name($result,$i).;echo ;/导出10行记录while($row = mysql_fetch_array($result)echo ;for($i=0;$i$fieldsNum;$i+)echo .$row$i.;echo ; echo ;printInfo(register,users);?第10章答案:任务1答案:create table message( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, title varchar(100), content varchar(225), category_id int, hits int )任务2答案:select a.id, a.title, a.hits, if(ifnull(b.id,false),count(*),0) as replay from message a left join comment b on a.id=b.idgroup by a.idorder by replay desc任务3答案:function categoryList() $result=mysql_query(select category_id,categroy_name from category) or die(Invalid query: . mysql_error(); print(n); while($rowArray=mysql_fetch_array($result) print(.$rowArraycategroy_name.n); print();第11章答案:选择题:CBB(说明:浏览器不允许来自某个域名的HTTP事务更改另一个域名下的cookie,否则这将造成严重的的安全问题。)DBB,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(Location:www.xxx.php);3.答案参见教材内容.4.Cookie的内容如下:Set-Cookie:PHPSESSID= btek48cklarn1m73eg2qkcsu12;path = PATH;domain= DOMAIN_NAME;禁用Cookie后,Session还可以使用,请参考教材中的示例程序。5. 设置Session的生存时间包括设置服务器端Session的生存时间和浏览器端的生存时间。方法1:php.ini配置文件中有一组如下Session的配置选项,实现Session的设置。其中session.gc_maxlifetime = 1440:设置Session文件在服务器端的储存时间,如果超过这个时间,那么Session文件会自动删除。默认为1440s(24min),表示1440s无操作就会自动销毁该Session文件。session.cookie_lifetime = 0:表示浏览器一旦关闭Session ID立即失效(推荐使用)。方法2:使用下面的程序设置$savePath = ./session_save_dir/; $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可以跨越子域名。比如我们在下面注册个个cookie,那么可以在上读取到该cookie。第二个目标的实现方法是所有的WEB服务器的SESSION存放在一个文件服务器(或者数据库服务器)上。例如:采用一台Mysql服务器做共享服务器,把所有的session的数据保存到Mysql服务器上,所有Web服务器都来这台Mysql服务器来获取Session数据。三、编程题1.使用Cookie技术编写程序显示上次登录时间。2编写支持换皮肤的PHP程序,并将皮肤保存在Cookie中。程序说明,此题关键在于: 如果GET请求以及Cookie里面都没有设置皮肤,则使用默认皮肤 如果Cookie里面有皮肤,则使用Cookie里的皮肤 如果GET请求里面有皮肤,则使用GET请求的有皮肤,并将GET请求的皮肤设置到Cookie中1分钟1.准备JPG皮肤图片,分别将其命名为1.jpg、2.jpg、3.jpg、4.jpg。2.创建目录images,将所有皮肤图片文件置于该目录下。3.创建skin.php文件,写入如下代码:body background=option value=images/1.jpg 皮肤1option value=images/2.jpg 皮肤2option value=images/3.jpg 皮肤3option value=images/4.jpg 皮肤43编写PHP程序判断浏览器是否开启Cookie。程序说明,此题关键在于: 页面重定向时,如果重定向到页面自己本身,如何防止重定向死循环。4创建createExcel.php文件,写入如下代码:?phpfunction createExcel($database,$tableName)$host = localhost;$userName = root;$password = ;mysql_connect($host,$userName,$password);mysql_select_db($database);mysql_query(set names gbk);/制作表格(边框宽度为1)echo ;/制作表头(也就是表中拥有的字段)$sql = select * from $tableName limit 10;$result = mysql_query($sql);$fieldsNum = mysql_num_fields($result);ec

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论