wordpress一步步建企业网站,电子商务网站开发系统,wordpress 1h 1g,网页设计div布局本篇文章给大家谈谈disabled什么意思中文翻译#xff0c;以及js中disabled是什么意思#xff0c;希望对各位有所帮助#xff0c;不要忘了收藏本站喔。 1、php之父是谁#xff1f;P Rasmus Lerdorf#xff0c;拉斯姆斯?勒多夫 2、 $name和$$name有什么区别#xff1f;P $…本篇文章给大家谈谈disabled什么意思中文翻译以及js中disabled是什么意思希望对各位有所帮助不要忘了收藏本站喔。 1、php之父是谁P Rasmus Lerdorf拉斯姆斯?勒多夫 2、 $name和$$name有什么区别P $name是变量$$name是引用变量如 $name’sex’; $$name’male’; 则$sex ‘male’; 3、如何提交form表单而不是用submit按钮J 使用java的submit()方法如onclick时调用 document.formname.submit() 4、用什么方法可以从mysql结果集中获取数据M mysql_fetch_rowmysql_fetch_array,mysql_fetch_object,mysql_fetch_assoc 5、mysql_fetch_object()和mysql_fetch_array()有什么区别M 前者返回对象需要用对象的方式遍历数据后者返回数组可以使用关联数组或索引数组的方式遍历数据。 6、get和post方法有什么区别P 1get方法有数据长度限制最大2kbpost方法没有限制快码论文。 2get方法请求数据直接显示在url上不安全post方法适合传输敏感数据。 7、如何从http://infopcds.co.in中获取”pcds.co.in”P Preg_match(“/(\S)$/”, “http://infopcds.co.in”, $matches); Echo $matches[1]; 8、用php和mysql如何创建一个数据库P Mysql_create_db(‘dbname’); 9、require和include有什么区别P 都是用来加载文件的。 1include报警报require报致命错误。 2include执行时文件每次都要进行读取和评估require只处理一次。 3include受流程控制影响require不走流程控制。 10、在php文件中能否多次使用include(“xyz.php”)P 可以但如果xyz.php中有函数定义第二次include时会报函数不能重定义错误。 11、mysql数据表引擎有什么区别哪个是默认的 1MyISAM默认这种存储引擎在硬盘上会存三个文件文件名为表名后缀名分别为.frm(存储表结构)、.myd(存储数据)、.myi存储索引。 2InnoDB支持事务安全的存储引擎支持提交、回滚和恢复。 3Merge 4HeapMEMORY,内存存储引擎 5BDBBerkeleyDB同样支持提交和回滚 6EXAMPLE, 7FEDERATED 8ARCHIVE 9CSV 10BLACKHOLE 12、header()函数的作用 可以给客户端发送报文头必须在任何实际输出被发送之前调用header()函数。 利用它header()重定向如 header(‘Location:http://baidu.com/’); 13、如何在命令行模式下执行php脚本 利用PHP CLICommand Line Interface将脚本名作为参数如 $ php test1.php 14、如何配置zend框架使其支持简写标记??? 修改php.ini文件设置short_open_tagon即可开启。 15、Shopping cart online validation i.e. how can we configure Paypal,etc.? Nothing more we have to do only redirect to the payPal url after submit all information needed by paypal like amount,adresss etc. 16、nl2br()函数的作用 在html换行符前加 标签。 17、什么是htaccess为什么使用它 .htaccess文件是apache服务器提供的配置文件方法使用它可以实现针对指定目录的基础配置更改被放置该文件的目录和其所有只目录都适用文件中的配置。 18、如何获取客户端ip地址来源地址 使用$_SERVER[REMOTE_ADDR]和$_SERVER[HTTP_REFERER]。 19、为什么使用lamp环境替代其他程序、服务和运行环境 Lamp是开源的linux相比windows安全性更高apache相比iis更具函数性和安全性mysql是目前最受欢迎的开源数据库php相比asp等其他脚本语言更加快速。 20、如何利用mysql加密和解密数据 使用AES_ENCRYPT () 和 AES_DECRYPT ()。 21、如何用php加密用户名和密码? Php中的加密和解密功能 加密 解密 AES_ENCRYT() AES_DECRYPT() ENCODE() DECODE() DES_ENCRYPT() DES_DECRYPT() ENCRYPT() 不可逆 MD5() 不可逆 OLD_PASSWORD() 不可逆 PASSWORD() 不可逆 SHA() 和 SHA1() 不可逆 不可逆 UNCOMPRESSED_LENGTH() 22、面向对象编程的特点和优势 面向对象程序的主要优势是其易维护和易扩展性可以有效降低维护成本。 相比过程化编程它与现实世界认知模式更接近更容易让非技术人员理解使他们更容易参与和改进项目。对于某些系统面向对象方法可以加快开发时间因为许多对象是标准的跨系统可重复使用的比如时间管理、航运、购物车等组件可以供多个系统复用。 23、过程化编程和面向对象编程的区别 1过程化编程易于上手但相比面向对象编程它更复杂、让人难于了解整个系统。 2过程化编程很难使用mvc等设计模式。 3在面向对象编程中我们可以使用继承和多态去复用功能但过程化编程中需要复制和粘贴。 24、友元函数有什么作用 25、public, private, protected,static, transient, final 和 volatile有什么区别 Transient临时变量private不能被序列化。 Volatile多线程时使用声明为volatile的变量将不会由编译器进行优化因为它们的值可能随时改变。 26、php错误有哪些类型 1notices提示如使用未定义变量。 2warnings警告如include一个不存在的文件。 3fatal errors致命错误会终止脚本运行如实例化一个不存在的类、访问一个不存在的函数。 27、substr和subistr的功能 Substr返回字符串的一部分从第一个字符开始查找可以传偏移量和截取个数。 Subistr是substr的不分大小写版本。 28、php3、php4和php5有什么区别undone 很多区别列举一些 29、如何asp页面转换为php页面 有很多工具可以实现比如http://asp2php.naken.cc./ 30、函数htmlentities的作用 将字符转换为html实体。如“”会被转换为“” 31、如何获取当前时间的秒数 $second date(“s”); 32、php中如何转换时区 使用date_default_timezone_get和date_default_timezone_set函数。 33、urlencode和urldecode有什么作用 编码和解码url字符串编码时会将除了-_.之外的非字符数字字符都转换为百分号%后跟两位十六进制数的形式空格则编码为加号。 此编码与WWW表单POST数据的编码方式是一样的同时与application/x-www-form-urlencoded 的媒体类型编码方式一样。 34、unlink和unset函数有什么区别 Unlink用于删除文件unset用于销毁变量。 35、如何将变量写入session $_SESSION[‘name’] ‘sonia’; 36、利用php图片函数如何获取图片的大小、类型、宽度和高度 Exif_imagetype()获取图片类型。 Getimagesize()获取图片大小。 Imagesx()获取图片宽度。 Imagesy()获取图片高度。 37、php如何获取用户浏览器信息 $_SERVER[‘HTTP_USER_AGENT’] 38、php上传文件大小上限是多少如何修改上限 默认上限是2mb可以修改php.ini调整如下 Upload_max_filesize 2M 39、如何提高php脚本执行时间限制 修改php.ini如下 Max_excution_time 30 每个脚本执行时间单位为秒。 40、如何备份mysql表如何恢复 1mysqldump 备份mysqldump 参数 dbname dbname.sql 恢复mysql dbname dbname.sql 或 source dbname.sql 2SQL语法 备份BACKUP TABLE tbl_name TO ‘/tmp/db_name/’ 或SELECT * INTO OUTFILE ‘/tmp/db_name/tbl_name.txt’ FROM tbl_name 恢复RESTORE TABLE FROM ‘/tmp/db_name/’ 或LOAD DATA INFILE ‘/tmp/db_name/tbl_name.txt’ INTO TABLE tbl_name 41、如何优化或增加mysql查询语句的速度 1不使用select * 只查询需要的字段 2给适当的字段增加索引 3使用limit关键字控制数据条数。 42、有什么方法可以获取当前的session id Session_id() 43、如何销毁session如何销毁session中的变量 Session_destroy可以销毁当前的sesssion Session_unset可以释放session中的变量 44、php如何设置和销毁cookie 设置Setcookie’user’, value, expire, path, domain; 销毁setcookie(‘user’, ‘’, time()-3600) 45、有什么方法可以在页面之间传递变量 GET/QueryString POST 46、ereg_replace和eregi_replace有什么区别 都是替换后者忽略大小写 47、有哪些数组排序函数 Sort()arsort() Assort(),ksort() Natsort(),natcasesort() Rsort(),usort() Array_muletisort(),uksort() 48、如何获取数组中的元素个数 1)sizeof()count()的别名 2)count() 49、session_set_save_handler 有什么作用 用户级session存储函数可以将session存储到数据库中。 50、如何判断一个变量是数字 1is_numeric()如果是数字或数字字符串返回true否则返回false。 2isNaN()用于判断一个值是否不是一个数字 51、有什么工具可以画mysql的E-R图 Case studio Smart Draw 52、php中如何从一个数据库查询数据然后将数据存储到另一个数据库中undone mysqldump -u root top800 sql_database_bk/top800_database_bk_2011-10-22.sql mysql -u root -p123456 top800 top800_database_bk_2011-11-11.sql 53、列出php中的预定义类 Directory stdClass __PHP_Incomplete_Class Exception Php_user_filter 54、如何写一个脚本支持双语如英语、德语 可以生成两个语言文件分别存储变量在运行php脚本时选择所需的语言引入该语言的变量。 55、抽象类和接口有什么区别 抽象类中可能有一个或多个抽象方法但不必所有方法都是抽象的。 抽象类的抽象方法必须由子类实现。 接口中的所有方法都是抽象方法。 实现接口的类必须实现所有的抽象方法。 56、使用java如何发送邮件 Js没有任何网络功能因为他是为客户端设计的。 但我们可以用js调用客户端的邮件协议mailto来提示发送邮件这需要客户端的批准。 58、存储过程、触发器、索引有什么好处 存储过程可复用、提高性能只在创造时进行编译以后每次执行不用重新编译而一般SQL都是每次执行重新编译。 触发器是一种特殊的存储过程是通过事件进行触发而执行的。 索引查询速度快 59、mysql表名、数据库名和字段名的最大长度? 单位为字节 Database 64 Table 64 Column 64 Index 64 Alias 255 60、mysql中SET函数能接收多少值 最多64个值 61、除了explain命令还有什么命令可以获取表结构 Desc(ribe) 表名 62、在创建表时有多少个表会创建都是什么 63、.frm、.myd、.myi扩展名的文件包含什么有什么作用 Mysql默认表类型是MyISAM每个MyISAM表在硬盘上存储都包含这三种文件。 .frm文件用于存储表结构 .MYD文件用于存储数据 .MYI文件用于存储索引 64、mysql数据库最大容量是undone 不同系统不同大小最小2G 65、mysql如何使用grant和revoke命令 分配和回收权限。 语法 grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名用户地址 identified by ‘连接口令’; 权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。 REVOKE privileges ON 数据库名[.表名] FROM user_name 例如 grant select,insert,update,delete on test.user to mqllocalhost identified by ‘123456′; REVOKE all on books.* from Bob; 66、解释归一化的概念undone 67、mysql中如何获取一张表的数据条数 SELECT COUNT* FROM table_name; 68、php中如何从结果集中获取数据条数 $result mysql_qurery($sql, $db_link); $num mysql_num_rows($result); 69、mysql中如何获取当前时间 日期SELECT CURDATE(); CURRENT_DATE() CURDATE() 时间SELECT CURTIME(); CURRENT_TIME() CURTIME() 70、css有什么优缺点undone 71、php支持什么类型的继承 Php支持单继承使用extends关键词继承类。 72、Primary key和unique key有什么区别 Primary key一张表只能有一个字段为主键主键上每条数据的值唯一值不能为NULL。 Unique key一张表中可以存在多个字段为unique key用于保证字段中数据的唯一性值可以为NULL。 73、什么是垃圾回收默认时间刷新时间undone 垃圾回收在php中是自动化的。 74、mysql和php有什么优劣势 两者都是开源免费的php比asp和jsp运行都快。 75、在sql中group by和order by有什么区别 Order by 是在同一字段上对每行的值进行比较。 Group by是在一个或多个字段上对数据进行分组将相同值的行合并可以配合COUNT、SUM、AVG使用。 76、char和varchar类型有什么区别 Char类型占用字节数固定如char15存储’name’会占用2字节有13个字节会浪费。 Varchar类型占用字节数跟存储数据有关如varchar15存储’name’会占用2字节不会多占用13个字节。 77、php中md5的用法 Md5加密会得到32位的字串不可逆。 78、如何将文本数据导入数据库undone 命令LOAD DATA INFILE file_name;要保证文件中的数据结构正确。 79、mysql如何获取两个日期的时间差 SELECT DATEDIFF(‘2013-01-20’, ‘2013-09-30’); 80、php如何获取两个日期的时间差 $date1 date(‘Y-m-d’); $date2 ‘2013-10-30’; $days (strtotime($date1) – strtotime($date2)) / (606024); 81、php如何自动加载类 使用spl_autoload_register($filename)函数或实现__autoload方法。 82、php中有几种继承如何实现 Php类只支持单继承但接口可以实现多继承。 83、php如何获知用户读取了邮件 $email_header . Disposition-Notification-To: $from\r\n; 84、session默认生存时间和路径 Php中Session默认生存时间为1440秒或24分钟。 默认路径为/tmp 85、如何判断用户退出何时空闲 在加载页面时通过检查session变量是否存在可以判断用户登录状态。默认情况下session在浏览器关闭时过期可以在php.ini中修改过期时间如要改成关闭浏览器后5分钟则 session.cookie_lifetime 300 session.gc_maxlifetime 300 重启apache。 86、如何跟踪用户登录 如果用户登录获取用户ip、userid等配置存储到数据库中标记为在线如果用户登出或session过期则标记为离线这样计算标记为在线的数据条数就可以知道在线人数。 87、php中有什么库可以操作pdf PDFlibphp4中提供函数php5中提供面向对象接口。 FPDF是一个php类可以实现pdf操作。 88、php有什么图片操作类库 GD、mageick还有其他库可用看需要处理什么类型的图片 89、什么是设计模式单例模式 设计模式是一般的可复用的解决方案解决软件设计中经常出现的问题。 单例模式确保一个类只有一个实例并提供一个全局访问点。 90、什么是魔术方法魔术常量 魔术方法是所有类的实例可以使用的方法。 魔术方法已””开头。目前有以下魔术方法 __construct() __destruct() __set() 在给不可访问属性赋值时__set() 会被调用。 __get()读取不可访问属性的值时__get() 会被调用。 __call() 调用一个不存在的方法时会被调用。 __toString() __sleep() __wakeup() __isset() 当对不可访问属性调用 isset() 或 empty() 时__isset() 会被调用。 __unset()当对不可访问属性调用 unset() 时__unset() 会被调用。 __autoload() __clone() 魔术常量是php中的预定义常量。包括 __LINE文件中的当前行号 FILE文件的完整路径和文件名。 DIR文件所在的目录。 FUNCTION函数名称 CLASS类名称。 TRAITTrait名称 METHOD类的方法名 NAMESPACE当前命名空间名称。 91、什么是魔术引号 魔术引号magic quote是一个自动将php脚本的数据进行转义的过程。最好在编码时不要转义而在运行时根据需要而转义。5.4移除 92、什么是跨站脚本SQL注入 跨站脚本XSS是一种计算机安全漏洞是代码注入的一种通常出现在web应用程序上。它允许恶意用户将代码注入到网页上其他用户观看网页时就会收到影响。这种攻击通常包含了html以及客户端脚本语言。 SQL注入是发生于应用程序数据库层的安全漏洞。是在输入的字符中注入SQL指令在设计不良的程序中忽略了检查那么这些注入的指令会被数据库误认为是正常的SQL指令而运行因此遭到破坏。 93、什么是url重写 url重写可以将动态url转为静态url。 静态url的好处 1静态url在搜索引擎上能得到更好的排名 2搜索引擎认为动态url页面比静态url页面慢很多 3静态url对用户更友好 我们可以利用url重写将变量/cookies写到url上从而处理session 94、php主要的安全漏洞是什么如何预防undone 漏洞 1命令注入(Command Injection) 2eval注入(Eval Injection) 3客户端脚本攻击(Script Insertion) 4跨网站脚本攻击(Cross Site Scripting, XSS) 5SQL注入攻击(SQL injection) 6跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF) 7Session 会话劫持(Session Hijacking) 8Session 固定攻击(Session Fixation) 9HTTP响应拆分攻击(HTTP Response Splitting) 10文件上传漏洞(File Upload Attack) 11目录穿越漏洞(Directory Traversal) 12远程文件包含攻击(Remote Inclusion) 13动态函数注入攻击(Dynamic Variable Evaluation) 14URL攻击(URL attack) 15表单提交欺骗攻击(Spoofed Form Submissions) 16HTTP请求欺骗攻击(Spoofed HTTP Requests) 预防 1在仔细检查用户输入前不要include、require甚至打开一个用户输入的文件。 2注意不要轻易在用户输入值上使用eval()函数避免执行到危险命令。 3不要轻易使用register_globals ON它的设计目的是使php更简单但也会带来更多安全漏洞。 4永远不要执行未转义的查询。 5为保护区域使用session或每次验证的登录 6如果不想文件被看见把文件加上.php后缀 95、php是否支持微软的SQL server 支持使用mssql或odbc模块可以访问SQL server 96、什么是MVC为什么使用它 MVC是软件工程中的一种设计模式。把软件系统分为三个部分 模型算法或数据库管理 视图界面设计人员进行图形界面设计。 控制器负责转发请求对请求进行处理 97、什么是框架工作原理有什么优点 框架有助于减轻网页开发时共通性活动的工作负荷例如许多框架提供数据库访问接口、标准样板以及会话管理等可提升代码的可再用性。 98、什么是CURL CURL是client URL library的简称。 Curl是一种传输文件的命令行工具支持多种协议如FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET,DICT, LDAP, LDAPS and FILE。 99、什么是PDO Pdo扩展定义了一个轻量级的、一致的接口用于在php中访问数据库。支持多种数据库服务器。 Php有很多优点如干净、简单、可移植的api但也有缺点如它不允许使用一些数据库新功能如mysql的多语句支持。 100、什么是php的mysqli扩展 Mysqli扩展增加了mysql4.1.3以后的新特性php5开始支持。 Mysqli扩展的新特性 面向对象接口 支持预处理 支持多个语句 支持事务 增强的调试功能 嵌入式服务器支持 101、写出Zend框架的目录结构简单说明目录作用 |--application 应用目录 |--controllers 控制器目录 |--models 模型目录 |--views 视图目录 |--config 配置文件目录 |--library 通用类目录 |--zend zend类 |--smarty smarty模板引擎 |--www 文档根目录 |--images 图片目录 |--css 样式表目录 |--js Java目录 |--tmp 临时文件目录 102、请取出数组中的最大值 $aarray(1,9,3,5,6,8); $maxarray_shift(rsort($a)); 或 Echo max($a); 103、请说明PHP中传值和引用的区别。什么时候传值什么时候引用 传值只是把一个变量的值传给了另一个变量而引用使两者指向同一个地址。 如果不想改变原来的值的时候用传值如果要让函数改变原变量的值就可以使用引用。 104、有一个一维数组里面存储整形数据请写一个函数将他们按从大到校的顺序排列。要求执行效率高。并说明如何改善执行效率。该函数必须自己实现不能使用PHP函数 $aarray(1,9,3,5,6,8,7); function mp_rsort($arr){ $countcount($arr); if($count0){ return false; } for($i0;$i$m-1;$i){ for($jm;$j0;$j--){ if($arr[$j]$arr[$j-1]){ $tmp$arr[$j]; $arr[$j]$arr[$j-1]; $arr[$j-1]$tmp; } } } return $arr; } print_r(mp_rsort($a)); 将数组长度计算放在循环之前可以提高执行效率因为不用每次重新计算。 可以换快速排序。 105、请问同时满足这样条件的数被10除于9被9除于8被8除于7在100—1000之间有几个这样的数并写出算法C A不存在B 1个 C2个 D 3个 该数加1都能被10、9、8整除所以是10、9、8公倍数减1的数。 最小公倍数是360所以 360-1 360*2-1 算法如下。 For($i100;$i1000;$i){ If($i%109 $i%98 $i%87){ $arr[]$i; } } Print_r($arr); 结果: Array(0359,1719); 106、请写出一个简单的静态数组 Static $arrarray(); 107、写一个简单的jquery显示隐藏代码 $(“#test”).hide(); $(“#test”).show(); 108、用PHP获取当前时间并打印打印格式2006-5-10 22:21:21 Echo data(“Y-m-d H:i:s”); 109、字符串转数组,数组转字符串,字符串截取,字符串替换,字符串查找的函数分别是什么? 字符串转数组Explode、str_split 数组转字符串Implode、join 字符串截取substr 字符串替换Str_replace 字符串查找Strpos、stripos、strstr、strrchr 110、写出下列代码的数据结果。 undone $date08/26/2003; print ereg_replace(“([0-9])/([0-9])/([0-9])”,2/1/3,$date); 没有输出结果 111、从表login中选出name字段包含admin的前10条结果所有信息的sql语句 SELECT * FROM login WHERE name LIKE ‘%admin%’ LIMIT 0,10; 112、解释左连接,右连接,内连接,全连接索引 左连接以左表为基础显示左表中的所有列不管是否与关联条件相匹配而右表中的数据只显示与关联条件相匹配的列不匹配的列以NULL字符填充。 右连接以右表为基础显示右表中的所有列不管是否与关联条件相匹配而左表中的数据只显示与关联条件相匹配的列不匹配的列以NULL字符填充。 内连接只显示多表之间与管理按条件相匹配的列 全连接显示多个表中的所有列不匹配关联条件的列以NULL字符填充mysql本身不支持全连接可以用左连接union右连接实现。 索引是对数据库表中一列或多列的值进行排序的一种结构使用索引可以快速访问数据库表中的特定信息。 113、简述论坛中无限分类的实现原理。 论坛中版块要使用到无限分类设计表时需要三个字段id版块id主键自增、pid上级版块id和path版块路径。 版块添加时(需要判断如果是一级版块则pid为0)分两步第一步拿到pid和其他字段信息存入数据库并取得版块自增id第二步使用pid查询上级版块的path值将这个path值和刚获取的自增id使用特定分隔符拼成字符串将这个新的path值更新到新版块信息中。 版块查询时如果需要遍历所有版块则查询时按path排序。如果需要查询某版块下的所有子分类和更深层级分类可以使用like条件按path相同部分查询如SELECT * FROM forums WHERE path LIKE ‘0,1%’。 114、写一个函数尽可能高效的从一个标准 url 里取出文件的扩展名 例如: http://www.test.com.cn/abc/de/fg.php?id1需要取出php或.php ?php Function getSuffix($url){ $bparse_url($url); $reg’/.\w/’; preg_match($reg,$b[‘path’],$arr); Return $arr[0]; } Echo getSuffix($url); ? 115、描述一下大流量高并发量网站的解决方案 1确认服务器硬件是否足够支持当前的流量。 2使用memcache缓存技术将动态数据缓存到文件中动态网页直接调用这些文件而不必在访问数据库。 3禁止外部的盗链。外部网站的图片或者文件盗链往往会带来大量的负载压力因此应该严格限制外部对自身图片或者文件盗链可以通过apache的URL重定向来防止盗链。 4控制大文件的下载。大文件的下载会占用很大的流量对于非SCSI硬盘来说会消耗使得网站响应能力下降。 5使用不同的主机分流主要流量。 6使用流量统计软件。在网站上安装一个流量统计软件可以即时知道哪些地方耗费了大量流量哪些页面需要再进行优化。 116、如何设计或配置Mysql才能达到高效使用的目的。 1数据库设计方面设计结构良好的数据库允许部分数据冗余。 选取最适用的字段属性尽可能把字段设置为NOTNULL这样在查询的时候数据库不用去比较NULL值。 2系统架构设计方面表散列把海量数据散列到几个不同的表里面集群数据库查询和写入分开。 写高效sql语句以提高效率。 使用连接(join)来代替子查询 使用联合(union)来代替手动创建的临时表 所得皆必须只从数据库取必须的数据。 必要的时候用不同的存储引擎比如Innodb可以减少死锁HEAP可以提高一个数量级的查询速度。 使用事务 使用外键 使用索引 117、如何进行防SQL注入 1过滤掉一些常见的数据库操作关键字select,insert,update,delete,and,*等 或者通过系统函数addslashes(需要被过滤的内容)来进行过滤。 2在PHP配置文件中 Register_globalsoff;设置为关闭状态 //作用将注册全局变量关闭。 比如接收POST表单的值使用$_POST[user],如果将register_globalson;直接使用$user可以接收表单的值。 3SQL语句书写的时候尽量不要省略小引号(tab键上面那个)和单引号 4提高数据库命名技巧对于一些重要的字段根据程序的特点命名取不易被猜到的 5对于常用的方法加以封装避免直接暴漏SQL语句 6开启PHP安全模式 Safe_modeon; 7打开magic_quotes_gpc来防止SQL注入 Magic_quotes_gpcoff;默认是关闭的它打开后将自动把用户提交的sql语句的查询进行转换把转为\这对防止sql注入有重大作用。 8控制错误信息 关闭错误提示信息将错误信息写到系统日志。 118、用PHP写出一个安全的用户登录系统需要注意哪些方面 1密码要进行加密如MD5()。 2登录表单的名称不要跟数据库字段一样以免暴露表字段。 3用户表的表名、字段名、密码尽量用不容易被猜到的。 4要使用验证码验证登陆以防止暴力破解。 5验证提交的数据是不是来自本网站。 6登录后台处理代码数据库部分使用预处理做好过滤防止sql注入。 119、使用过哪些PHP框架试描述其优劣点。 Thinkphp 优点功能比较全面配置相对比较简单操作相对比较简单有很多使用示例程序。 缺点提供的操作方法太多新手不知如何选择文档不够全面。 Yii 优点功能强大、有代码自动生成功能 缺点中文资料欠缺上手困难。 brophp 优点轻量级学习型框架配置简单操作简单容易上手提供了比较全面的文档。 缺点功能少 120、用过哪些版本控制工具 Svngit 121、 输出为Mozilla/4.0(compatible;MSIE5.01;Window NT 5.0)时可能的输出语句是B A. $_SERVER[HTTP_USER_AGENT_TYPE]; B. $_SERVER[HTTP_USER_AGENT]; C. $_SERVER[USER_AGENT]; D. $_SERVER[AGENT]; 122、下面功能PHP无法实现的是D A. 服务器端脚本运行 B. 命令行脚本运行 C. 客户端图形界面GUI程序 D. 浏览器端执行DOM操作 123、下面说法不正确的是Cresource和NULL是特殊类型 A. PHP有四种标量类型布尔型(boolean),整型(integer),浮点型(float),字符串(string) B. 浮点型(float)与双精度型(double)是同一种类型 C. 符合类型包括:数组(array),对象(object),资源(resource) D. 伪类型混合型(mixed),数字型(number),回调(callback) 124、执行下面的代码后 ?phpecho function_exists(print);
?
得到的输出是AA. 空 B. true C. false D. FALSE 125、下面不是PHP语法的组成部分的函数是AD A. array B. eval C. each D. list 126、 执行下面的代码的结果是什么A ?php $bool TRUE; echo gettype($bool); echo is_string($bool); ? A. boolean B. boolean0 C. booleanFALSE D. booleanfalse 127、写出下面代码执行的结果 ?php $a 12; $b 012; $c 0x12; echo $a,\n,$b,\n,$c; ? 12 10 18 128、下面代码的执行结果是什么C ?php
echo 12345;? A. 0 B. 3 C. 6 D. 3345; 129、下面代码加入下面哪个函数后返回TRUE: B return ? A; A. ord(65) B. chr(65) C. 65 D. 65 130、下面代码的输出正确的是C ?php $a array(15,58,22,28,81); echo $a[7]; echo $a[6]; echo $a[3]; ? A. 空2281 B.空8122 C.8122空 D.空空空 131、下面代码的输出结果D ?php $a[bar]hello; echo $a[bar]; echo $a[bar]; ? A. hello B. 空空 C.报错 D.hellohello 132、写出下面代码的结果C左移相当于乘2右移相当于除2 ?php echo 10; echo 21; echo 32; ? A. 012 B. 106 C. 1112D.123 133、 下面代码的执行结果D ?php for($i0;i10;$i){ print $i; } ? A. 0123456789 B. 012345678910 C. 无输出 D. 死循环 134、下面对于echo, print 的描述正确的是C A. echo, print 都可以打印多个参数 B. print 可以打印多个参数,echo 不可以 C. echo 可以打印多个参数,print不可以 D. echo, print 都不可以打印多个参数 135、对于下面的代码 ?php $fruits array(strawberryred, bananayellow); ? 能够正确得到结果yellow的代码是ACD A. echo A banana is {$fruits[banana]}; B. echo A banana is $fruits[banana]; C. echo A banana is {$fruits[banana]}; D. echo A banana is $fruits[banana]; 136、 下面代码执行完成后的结果是什么12 ?php function change(){ static $i 0; $i; return $i; } print change(); print change(); ? 137、下面的include语句不正确的是 A A. include mms://www.abc.com/a.php; B. include http://www.abc.com/a.php; C. include https://www.abc.com/a.php; D. include ftp://www.abc.com/home/a.php; 138、?php $foo test;$bar EOT $foo bar EOT; echo $bar; ? 上面的语句输出结果:C a. $foo bar; b. EOT $foo bar EOT; c. test bar; d. EOT test bar EOT; 139、$a3; $b4; if($a || $b5){ echo todo; } $b的值是: A a. 4; b. 5; c. 3; d. false 140、什么是面向对象主要特征是什么 面向对象是一种编程方法可以使编程的代码更简洁、更易于维护、并且具有更强的可重用性。 主要特征封装、继承和多态。 141、SESSION 与 COOKIE的区别是什么请从协议产生的原因与作用说明? HTTP是无状态协议不能区分用户是从同一个网站上来的同一个用户请求的不同页面不能看作是一同一个用户为了解决这个问题SESSION和COOKIE诞生了他们都可以用来保存用户数据。SESSION保存在服务器端COOKIE保存在客户端。 1cookie数据存放在客户的浏览器上session数据放在服务器上。 2cookie不是很安全别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。 3session会在一定时间内保存在服务器上。当访问增多会比较占用你服务器的性能 考虑到减轻服务器性能方面应当使用COOKIE。 4单个cookie保存的数据不能超过4K很多浏览器都限制一个站点最多保存20个cookie。 142、HTTP 状态中302、403、 500代码含义 302重定向403服务器拒绝访问500服务器内部错误143、Linux 下建立压缩包解压缩包的命令。 压缩gzip、tar –cvfz、zip、bzip2
解压gunzip、tar –zxvf、unzip、bunzip2144、请写出数据类型(int char varchar datetime text)的意思请问 varchar和char有什么区别 Int 整形 Char定长字符型 Varchar 可变长度字符型 Datetime 时间日期类型 Text 文本类型 Varchar 是可变长度类型占用的空间是字符串的长度1而char是固定长度字符串类型定义了多少空间就占用多少空间。 145、MyISAM 和 InnoDB 的基本区别 MYISAM不支持外键和事务处理支持全文索引采用表锁机制查询速度稍快数据存储文件有3个占用空间小。 InnoDB支持外键和事务处理不支持全文索引采用行锁机制查询速度比MYISAM稍慢数据存储文件只有一个占用空间大。 146、不使用cookie向客户端发送一个cookie Header(“Set-cookie:user:admin;age10”);147、 线性表和顺序表的区别 线性表包括顺序表和链表 顺序表中的元素的地址是连续的链表里面节点的地址不是连续的是通过指针连起来的。 148、如何实现多个线程安全的写入一个文件数据 采用锁机制当一个用户在对此文件进行读写入操作时将此文件锁定操作完毕后解除锁定在该用户进行读写入操作过程中其他用户不能操作此文件需要排队等待。 149、isset() 和 empty() 区别对不同数据的判断结果$a0;$a0;$a;$afalse;$anull; Isset判断变量是否存在如果存在则返回真empty判断变量是否为空如果为空则返回真。 Isset判断true,true,true,true,false Empty判断true,true,true,true,true 150、 什么是满二叉树什么是完全二叉树 满二叉树除了叶子节点外每一个节点都有左右子叶且叶节点都处在 最底层的二叉树。 完全二叉树若设二叉树高度为h除了第h层外其它层的节点数都达到最大个数第h层有叶子节点这就是完全二叉树。 151、如何在页面之间传递变量(至少两种方式) ? 使用GET、POST、SESSION、COOKIE方式传递变量。 152、写出匹配URL的正则表达式. $url’/^\w:\/\/(\w.)[\w-]([\w-.\/\?\%\]*)?/I’; 153、请写出常见的排序算法(至少三种)并用PHP实现冒泡排序将数组$a array()按照从小到大的方式进行排序。 冒泡排序法、快速排序法插入排序法 function bubble_sort($a) { $len count($a); if ($len 1) { return $a; } $temp null; for ($i 0; $i $len; $i) { for ($j $len - 1; $j $i; $j--) { if ($a[$j] $a[$j - 1]) { $temp $a[$j - 1]; $a[$j - 1] $a[$j]; $a[$j] $temp; } } } return $a; } function quick_sort($array) { if (count($array) 1) { return $array; } $key $array[0]; $left_arr array(); $right_arr array(); for ($i1; $icount($array); $i) { if ($array[$i] $key) { $left_arr[] $array[$i]; } else { $right_arr[] $array[$i]; } } $left_arr quick_sort($left_arr); $right_arr quick_sort($right_arr); return array_merge($left_arr, array($key), $right_arr); } function insertion_sort($a) { for ($i 1, $len count($a); $i $len; $i) { $key $a[$i]; $j $i - 1; while ($j -1 $a[$j] $key) { $a[$j 1] $a[$j]; $j--; } $a[$j 1] $key; } return $a; } 154、在数据库test中的一个表student字段是nameclassscore。分别代表姓名、所在班级分数。 1) 查出每个班级中的学生按照成绩降序排序; 2) 查出每个班的及格人数和不及格人数格式为class、及格人数、不及格人数 3) 用PHP写入连接数据库(localhost,msuser,mspass)、执行以上SQL、显示结果、判断错误、关闭数据库的过程 $mysqlinew mysqli(‘localhost’,’msuser’,’mspass’,’test’); $sql1’SELECT * FROM sdudent ORDER BY score DESC’; $sql2 SELECT a.class 班级,a.num 及格人数,b.num 不及格人数 FROM (SELECT class,COUNT(id) AS num FROM stu WHERE score60 GROUP BY class) a,(SELECT class,COUNT(id) AS num FROM stu WHERE score60 GROUP BY class) b WHERE a.classb.class; $result1$mysqli-query($sql1); If($result1){ Print_r($result1); }else{ Echo ‘查询成绩失败’; } $result2$mysqli-query($sql2); If($result2){ While($row$result2-fetch_assoc()){ Echo $row[“class”].’班及格人数:’.$row[“及格人数”].’不及格人数’:$row[“不及格人数”]; } }else{ } $mysqli-close(); 155、ftp://pub.foo.bar.com:2121/incoming/rls.sfv 请给出这个URL各部分的意义 协议ftp 域名pub.foo.bar.com 端口号2121 访问的文件 inincoming/rls.sfv 156、请列出4个常用的HTML标签名 、、、 #157、下列不属于Java语法关键/保留字的是 B var $ function while #158、下列不属于Javascrip DOM操作事件的是C A. onclick B. onkeydown C. onbodyload D. onmouseover #159、请写出5个常用的unix操作命令。 Ls find Tar –zxvf Touch Cat Mkdir rm #160、 请写出以下5个UNIX系统配置文件/服务的作用 /etc/passwd 用户信息文件 /etc/hosts 主机名设置文件 /etc/fstab 保存系统所有分区信息 Crontab 计划任务服务 sshd 远程连接服务 #161、请写出5个常用的SQL操作关键字。 SELECT INSERT DELETE UPDATE WHERE #162、请列出5个常用的PHP操作MySQL的函数 。 Mysql_connect、mysql_fetch_row、mysql_affected_rows、mysql_fetch_assoc、mysql_query #163、有两张数据表表user(id, name)记录了用户的ID和昵称表article(id, title, content, time)记录了用户发表的文章标题、内容和时间写一个SQL语句打印出每个用户的昵称及其发表的文章总数。 SELECT user.name,a.id,a.num FROM user,(SELECT id,count(*) as ‘num’ FROM article) as a WHERE user.ida.id; #164、下列PHP函数中不能直接在页面输出字符串的函数是 B A. echo B. sprintf C. printf #165、在PHP中操作符的功能不包括A undone A. 字符串连接 B. 数组数据合并 C. 变量数据相加 #166、下面哪个选项没有将john添加到users数组中 C (A) $users[] john; (B) array_push($users, john); (C) $users || john; (D) array_unshift($users, john); #167、请列出3种PHP数组循环操作的语法并注明每种循环的优缺点undone For、while、foreach For循环适合遍历定长数组 While循环适合遍历不定长数组 Foreach适合遍历关联数组和索引数组 #168、请列出3个PHP中的预定义全局变量 $_SERVER $_FILE $_SESSION #169、从PHP4.2.0开始 PHP默认配置将register_globals配置设定为off,请指出这个设定的作用和对PHP相关程序的影响 Register_globalsoff;的时候关闭了全局变量注册访问POST、GET、COOKIE、SESSION、ENV全局变量时不能使用简易方式只能用$_全局变量名方式访问加强了安全性。 #170、写一个函数实现字符串翻转 Function strTurn($str){ $mstrlen($str); For($im; $i0;$i--){ $string.$str[$i]; } Return $string; } #171、请写出下列PHP代码的执行结果 。 $var1 5; $var2 10; function foo($my_var) { global $var1; $var1 2; $var2 4; $my_var 3; return $var2; } $my_var 5; echo foo($my_var) . \n; 4 echo $my_var . \n; 8 echo $var1 . \n; 7 echo $var2 . \n; 10 $bar foo; $my_var 10; echo $bar($my_var) . \n; 4 #172、不断在文件hello.txt头部写入一行“Hello World”字符串要求代码完整。Undone $file’hello.txt’; $confile_get_cotents($file); While(1){ File_put_contents($file,’Hello World\n’.$con) } #173、 输出用户的IP地址并且判断用户的IP地址是否在192.168.1.100 --- 192.168.1.150之间。 $ip$_SERVER[“REMOTE_ADDR”]; Echo $ip; $posstrrpos($ip,’.’)1; $headsubstr($ip,0,$pos); $mysubstr($ip,$pos); If($head192.168.1. $my100 $m150){ Echo ‘IP在指定区间内’; }else{ Echo ‘IP不在指定区间内’; } #174、 请将2维数组按照name的长度进行重新排序按照顺序将id赋值(从1开始)。 0, ‘name’ ‘123’), array(‘id’ 0, ‘name’ ‘1234’), array(‘id’ 0, ‘name’ ‘1235’), array(‘id’ 0, ‘name’ ‘12356’), array(‘id’ 0, ‘name’ ‘123abc’) ) foreach($Tarray as $k$v){ $name[]$v[name]; } array_multisort($name,SORT_DESC,$Tarray); $mcount($Tarray); for($i0;$i$m;$i){ $Tarray [$i][id]$i1; } echo ;
print_r($Tarray);
echo ; #175、表单数据提交方式POST和GET的区别URL地址传递的数据最大长度是多少 POST方式提交没有长度限制且URL地址中不可见GET提交数据有最大长度限制并在URL中可见。 URL地址传递数据最大长度为IE浏览器20832k53。 #176、SESSION和COOKIE的作用和区别SESSION信息的存储方式如何进行遍历 两者都能够存储数据在一个站点多个页面间传递。 SESSION存储在服务器端 COOKIE存储在客户端 SESSION信息的存储方式有文件、内存和用户自定义几种方式。 通过全局数组$_SESSION可以取到SESSION信息并遍历。 #177、通过PHP函数的方式对目录进行遍历写出程序 function listDir($dir){ if(is_dir($dir)){ if ($dh opendir($dir)){ while(($file readdir($dh)) ! false){ if((is_dir($dir./.$file)) $file!. $file!..){ echo 文件夹,$file, ; listDir($dir./.$file./); echo ; }else{ if($file!. $file!..){ echo $file. ; } } } closedir($dh); } } } #178、Linux的目录进行遍历编写shell脚本?undone #!/bin/sh 使用bash做为默认shell list_alldir(){ for file in $1/* do if [ -d $file ]; then echo $file list_alldir $file #在这里递归调用 fi done } #下面是定义初始化路径 if [ $# -gt 0 ] then list_alldir $1 else list_alldir . fi #179、什么是数据库索引主键索引唯一索引的区别索引的缺点是什么 数据库索引是对数据库表中一列或多列的值进行排序的一种结构使用索引可以快速访问数据库表中的特定信息。 主键和唯一的区别每个表只能有一个主键索引但可以有多个唯一索引。 索引的缺点 1创建索引和维护索引要耗费时间这种时间随着数据量的增加而增加。 2索引需要占物理空间除了数据表占空间之外每一个索引还要占一定的物理空间。 3当对表的数据进行增加、删除和修改时索引也要动态维护这样就降低了数据库的维护速度。 #180、数据库设计时常遇到的性能瓶颈有哪些常有的解决方案 通常造成数据库瓶颈的原因是 1数据库系统本身性能不佳例如你用桌面数据库Access 来做web应用的后台数据库 显然是不行的 2数据库结构设计不合理导致不必要的、过多的数据库访问这需要优化数据表结构设计必要时引入Cache系统 3数据库连接池设置不当为了提供数据库的服务能力在有潜在并发访问数据库的情况下我们会使用连接池技术如果池的大小与实际需求不符则会带来访问数据库时的排队等候。 4程序实现适当例如对 数据库连接长期占有导致其它访问必须进行排队 当然即时没有以上的错误做法当一个系统规模不断变大时数据库系统也会成为瓶颈所在但针对此业界有一些解决方法的例如进行数据库水平/垂直分割、集群、缓存等等。 #181、编写一个在线留言本实现用户的在线留言功能留言信息存储到数据库undone 数据表字段aid、author、title、content、posttime、edittime、ip 脚本 index.php 留言列表、回复留言按钮、提交留言表单 action.php业务处理脚本 处理表单提交、增改留言数据表 #182、通过JS创建一个当前窗口的子窗口通过程序实现子窗口对父窗口的操作实例 1IE中使用方法 父窗口调用子窗口iframe_ID.iframe_document_object.object_attribute attribute_value 例子onClickiframe_text.myH1.innerText http://www.pint.com; 子窗口调用父窗口parent.parent_document_object.object_attribute attribute_value 例子οnclickparent.myH1.innerText http://www.pint.com; 2Firefox中使用方法 上面在IE下没有问题但在firefox下不正常。在firefox下应该是如下调用方法 父窗口调用子窗口window.frames[iframe_ID].document.getElementById(iframe_document_object-).object_attribute attribute_value 例 window.frames[iframe_text].document.getElementById(myH1).innerHTML http://hi.wonsoft.cn; 子窗口调用父窗口parent.document.getElementById(parent_document_object).object_attribute attribute_value 例 parent.document.getElementById(myH1).innerHTML http://wonsoft.cn; #183、通过JS实现页面的前进和后退操作 后退 前进 #184、浏览器IE和非IE浏览器的划分区别是什么 IE浏览器指的是使用IE内核的浏览器对一些W3C标准的网页代码的支持不是很好。 非IE浏览器指的是没有使用IE内核的浏览器对W3C标准的网页代码有很好的支持。 #185、设定网站的用户数量在千万级但是活跃用户的数量只有1%如何通过优化数据库提高活跃用户的访问速度 可以使用分表技术将高活跃用户单独存到一个有同样字段但表名不同的表里当用户登陆时首先查询这个表如果不是高活跃用户再查询大表。 #186、服务器在运行的过程中随着用户访问数量的增长如何通过优化保证性能如果数据库已经达到最优化请设计出继续升级的解决方案 1确定当前的服务器的硬件设备能不能满足流量需求如果满足不了就添加新的设备。 2使用memcache缓存技术将动态数据缓存到文件中动态网页直接调用这些文件而不必再访问数据库。 3禁止外部盗链图片、或文件盗链会给服务器带来大量的负载压力因此可以通过refer来控制盗链或者用apache来配置禁止盗链。 4控制大文件的下载大文件的下载对于非SCSI硬盘来说会占用大量资源使得网站响应能力下降。 5使用不同的主机分流主要流量使得服务器均衡负载。 6使用流量统计软件进行流量统计和分析可以即时了解哪些地方耗费了大量的流量哪些页面需要再进行优化。 #187、写出程序运行的结果 结果4,4 #188、数据库中的事务是什么 数据库事务是指作为单个逻辑工作单元执行的一系列操作。 事务处理可以确保除非事务性单元内的所有操作都成功完成否则不会永久更新数据库。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元可以简化错误恢复并使应用程序更加可靠。 #189、实现不使用第3个变量交换$a、$b的值$a、$b的初始值自己定。 $aaa; $bbb; $b.$a; $asubstr($b,strpos($b,a)); $bsubstr($b,0,strpos($b,a)); #190、用php打印出前一天的时间格式是2006-5-10 22:21:21 date_default_timezone_set(PRC); echo Date(Y-m-d H:i:s,time()-60*60*24); #191、如何实现字符串翻转 strrev函数 #192、PHP的意思它能干些什么 PHP是英文超级文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言是一种在服务器端执行的嵌入HTML文档的脚本语言语言的风格有类似于C语言被广泛的运用。 #193、GD库是做什么用的? gd库是php处理图形的扩展库gd库提供了一系列用来处理图片的API使用GD库可以处理图片或者生成图片。 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。 #194、echo(),print(),print_r()的区别 echo 是语法结构也就是关键字不是函数。使用的时候不用加括号加上也可以。显示多个值的时候可以用逗号隔开。只支持基本类型布尔型除外echo true的时候显示1echo false的时候啥都没有。 print 和 echo 基本一致。但是print 不支持逗号分隔多个显示变量的语法。 print_r 是函数不仅可以打印变量的的值还能显示变量类型而且也可以显示数组和对象这样复杂的变量类型。print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。 #195、对于大流量的网站,您采用什么样的方法来解决访问量问题? 确认服务器硬件是否足够支持当前的流量,数据库读写分离,优化数据表, 程序功能规则,禁止外部的盗链,控制大文件的下载,使用不同主机分流主要流量 #196、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? 前者返回的结果集是一个索引数组后者返回的结果集既包含索引数组又包含关联数组。 #197、优化MYSQL数据库的方法 1数据库设计方面,这是DBA和Architect的责任,设计结构良好的数据库,必要的时候,去正规化(英文是这个:denormalize,中文翻译成啥我不知道),允许部分数据冗余,避免JOIN操作,以提高查询效率 。 2系统架构设计方面,表散列,把海量数据散列到几个不同的表里面。快慢表,快表只留最新数据,慢表是历史存档.集群,主服务器Read write,从服务器read only,或者N台服务器,各机器互为Master 。 3(1)和(2)超越PHP Programmer的要求了,会更好,不会没关系.检查有没有少加索引 4写高效的SQL语句,看看有没有写低效的SQL语句,比如生成笛卡尔积的全连接啊,大量的Group By和order by,没有limit等等.必要的时候,把数据库逻辑封装到DBMS端的存储过程里面缓存查询结果,explain每一个sql语句 5)所得皆必须,只从数据库取必需的数据,比如查询某篇文章的评论数,select count(*) ... where article_id ? 就可以了,不要先select * ... where article_id ?然后msql_num_rows. 只传送必须的SQL语句,比如修改文章的时候,如果用户只修改了标题,那就update ... set title ? where article_id ?不要set content ?(大文本) 6必要的时候用不同的存储引擎.比如InnoDB可以减少死锁.HEAP可以提高一个数量级的查询速度。 #198、实现中文字串截取无乱码的方法undone function substr_for_utf8($sourcestr,$cutlength){ $returnstr”; $i0; $n0; $str_lengthstrlen($sourcestr); //字符串的字节数 while (($n$cutlength) and ($i$str_length)){ $temp_strsubstr($sourcestr,$i,1); $ascnumOrd($temp_str); //得到字符串中第$i位字符的ascii码 if ($ascnum224) //如果ASCII位高与224 { $returnstr$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范将3个连续的字符计为单个字符 $i$i3; //实际Byte计为3 $n; //字串长度计1 } elseif ($ascnum192)//如果ASCII位高与192 { $returnstr$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范将2个连续的字符计为单个字符 $i$i2; //实际Byte计为2 $n; //字串长度计1 } elseif ($ascnum65 $ascnum90) //如果是大写字母 { $returnstr$returnstr.substr($sourcestr,$i,1); $i$i1; //实际的Byte数仍计1个 $n; //但考虑整体美观大写字母计成一个高位字符 } else //其他情况下包括小写字母和半角标点符号 { $returnstr$returnstr.substr($sourcestr,$i,1); $i$i1; //实际的Byte数计1个 $n$n0.5; //小写字母和半角标点等与半个高位字符宽… } } if ($str_length$cutlength){ $returnstr $returnstr . “…”; //超过长度时在尾处加上省略号 } return $returnstr; } #199、用PHP写出显示客户端IP与服务器IP的代码。 客户端IP$_SERVER[“REMOTE_ADDR”]; 服务器端IP$_SERVER[SERVER_ADDR]; #200、有一个网页地址, 比如PHP开发资源网主页: http://www.phpres.com/index.html,如何得到它的内容? $filefile_get_contents( http://www.phpres.com/index.html ); file_put_contents(file11.txt,$file); #201、请写一个函数验证电子邮件的格式是否正确。 $reg’/\w(\w\.)\w{2,}$/’; $mail’aaasina.com’; If(preg_match($reg,$mail)){ Echo ‘正确’; }else{ Echo ‘错误’; } #202、简述如何得到当前执行脚本路径包括所得到参数。 $_SERVER[“SCRIPT_NAME”] __DIR__ basename(__file__); #203、JS表单弹出对话框函数是?获得输入焦点函数是? 弹框函数alert()、prompt()、confirm()获取焦点函数focus()。 #204、写一个函数算出两个文件的相对路径 如 $a /a/b/c/d/e.php; $b /a/b/12/34/c.php; 计算出 $b 相对于 $a 的相对路径应该是 http://www.cnblogs.com/c/d将()添上 function getPath($a,$b){ $mstrlen($a); for($i1;$i$m;$i){ $strsubstr($a,0,-$i); $reg/.str_replace(/,\/,$str)./; if(preg_match($reg,$b)){ $notstr_replace($str,,$a); $countsubstr_count($not,/); for($j0;$j$count;$j){ $path.../; } $path.str_replace($str,,$b); return $path; } } } echo getPath($a,$b); #205、有一个备份程序mybackup,需要在周一至周五下午一点和晚上八点各运行次下面哪一条crontab的项可以完成这项工作B A0 13,20 * * 1,5 mybackup B0 13,20 * * 1,2,3,4,5, mybackup C*13,20 * *1,2,3,4,5, mybackup D0 13,20 1,5 * *mybackup #206、中文占用unicode码范围 0080-07FF #207、$_REQUEST、$_POST、$_GET、$_COOKIE、$_SESSION、$_FILE的意思是什么 都是超全局数组。 $_REQUEST可以获取POST和GET传值 $_POST可以获取POST传值 $_GET可以获取GET传值 $_COOKIE服务器端可以使用setCookie函数设置信息到客户端浏览器中通过 $_COOKIE数组可以获取设置的值。 $_SESSION当服务器页面中使用session_start()函数开启session后。就可以使用这个全局变量用户就可以在整个网站中访问这些会话信息。 $_FILE可以获取表单上传文件信息。 #208、数组中下标最好是什么类型的为什么 字符串类型因为处理方便。 #209、i和i哪一个效率高为什么 i效率高因为i在运算结束后还会自加一次。 #210、magic_quotes_gpc()、magic_quotes_runtime()的意思是什么 magic_quotes_gpc()是否对输入的GET/POST/COOKIE数据使用自动字符串转义。 Magic_quotes_runtime()是否对进行时从外部资源产生的数据使用自动字符转义如SQL语句。 #211、框架中什么是单一入口和多入口单一入口的优缺点 单一入口是指一个项目或一个应用具有统一的入口文件项目的所有功能操作都是通过这个入口文件进行的并且往往入口文件是第一步被执行的。 单一入口的优点 加载文件方便、权限验证容易、URL重写简单。 单一入口的缺点URL地址不利于搜索引擎但是可以通过URL重写解决 #212、打印一个用‘.’链接的字符串时候还可以用什么代替‘.’链接效率更高些 可以用’,’替换 #213、提示类型200、404、502是什么意思。 200请求成功 404请求失败找不到页面 502作为网管或代理的服务器常识执行请求时从上游服务器接收到无效的响应。 #214、你对Memcache的理解优点有哪些 Memcache是一个高性能的分布式内存对象缓存系统它能够用来存储各种格式的数据包括图像、视频、文件以及数据库检索结果等。 优点解决了共享内存只能是单机的弊端、降低了数据库检索压力、提高了访问获取数据的速度。 #215、MySQL字段类型有很多种如int ,bigint , char, varchar, text等等, 请描述每种字段占用的字节数和最大范围。 注意平台环境为32位字长计算机,Mysql 5.0, 数字型字段使用unsigned属性 Int 4字节带符号值-2147483648~2147483647无符号值0~4294967295 Bigint 8字节 Char M字节 固定长度M取值0-255 Varchar L1字节可变长度根据存放值长度而定取值范围0-255 Text 255字节 #216、对关系型数 据库而言索引是相当重要的概念请回答有关索引几个问题: 1索引的目的是什么? 建立索引的目的是加快对表中记录的查找或排序 2索引对数据库系统的负面影响是什么? 一是增加了数据库的存储空间二是在插入和修改时要花费较多的时间。 3为数据表建立索引的原则有哪些? 表的主键、外键必须有索引 数据量超过300 的表应该有索引 经常与其他表进行连接的表在连接字段上应该建立索引 经常出现在where字句中的字段特别是大表的字段应该建立索引 索引应该建立在选择性高的字段上 频繁进行数据操作的表不要建立太多索引 删除无用的索引避免对执行计划造成负面影响。 4什么情况下不宜建立索引? 数据表数据少和字段值重复太多,不适宜建立索引,不起到提速,反而会消耗大量内存。 #217、web应用中,数据库的读取频率远高于写入频率, 如何优化MySQL而应对此种情景 ? 使用memcache缓存技术将动态数据缓存到文件访问动态页面时直接调用缓存文件而不必重新访问数据库这样就减少了查询数据库的次数。 如果网站的访问量很大可以把数据库读写服务器分开使用多态服务器去处理数据库查询使用较少的服务器去处理数据库的写入和修改。 #218、PHP字符串中单引号与双引号的区别? 双引号能解析变量和转义字符而单引号不能。 #219、指出以下代码片段中的SQL注入漏洞以及解决方法(magic_quotes_gpc off) mysql_query(select id,title from content where catid{$_GET[catid]} and title like %$_GET[keywords]%, $link); 可以在$_GET[catid]和$_GET[keywords]变量上做文章如传catid 10’;select * from content— #220、分别指出php.ini中 magic_quotes_gpc, magic_quotes_runtime两项参数的作用。 magic_quotes_gpc开启可以对输入GET/POST/cookie数据使用自动字符串转义可以有效防止sql注入。 magic_quotes_runtime开启可以对运行时从外部资源产生的数据使用自动字符串转义。php5.4已移除。 #221、什么是时间戳? 如何取得当前时间戳? UNIX时间戳是从1970年1月1日零点开始起到当前时间经过的秒数。 使用time()和microtime()函数可以获取当前时间戳。 #222、session与cookie的区别与关系, 禁用cookie后, session能否正常使用? 前者是在服务器端存储后者在服务器端存储 Session有两种方式传递一种是将sessionid存储到cookie中另一种是通过url传递 禁用cookie后仍可以使用session使用url传递 #223、了解XSS攻击吗? 如何防止 ? XSS攻击跨站脚本攻击是一种经常出现在web应用的计算机安全漏洞它允许web用户将代码植入到提供给其他用户使用的页面中。 XSS攻击的危害包括盗取各类用户帐号控制企业数据盗窃企业重要资料非法转账强制发送电子邮件网站挂马控制受害者及其攻击其他网站。 #224、写出192.168.0.1 ip地址的二进制和10进制表示形式。 128 10000000 64 1000000 32 100000 16 10000 8 1000 4 100 2 10 1 1 11000000 10000100 0 1 #225、一个字节占多少bit ? 一个IPv4地址占几个字节? 一个IPv6地址呢?undone 一个字节占8bit一个IPV4占用30字节一个IPV6占用46字节 #226、2M ADSL宽带连接, 理想情况下, 最大下载速度是多少KB/s ? 下载速度一般是用kB/s表示而不是kb/s。网络的带宽一般是按bit比特作为单位也就是位。2M的带宽就是网速可以达到2Mbps。软件上表示的下载/上传速度的单位一般是Byte字节因为1Byte8bit所以2M带宽最大的下载速度可以是2M/8256k 字节/秒也就是256kB/s。 #227、 Fatal error: Call to undefined method ge_user() in /website/index.php on line 39 没有ge_user()方法可能是方法名写错了检查方法名。 #228、Fatal error: Class client not found in /website/index.php on line 173 没有找到client这个类类名写错了检查类名如果是加载进来的类文件检查下文件是否加载。 #229、 Warning: Missing argument 1 for member::register(), called in /website/index.php on line 43 and defined in /usr/website/member.class.php on line 96 缺少一个参数检查register()函数需要参数类型并正确传参。 #230、 Warning: file_put_contents(): Permission denied in /website/index.php on line 4 对文件没有写权限更改文件权限为777。 #231、Warning: Cannot modify header information - headers already sent by (output started at /website/index.php:1) in /website/index.php on line 3 setcookie、header、session函数前不能有输出。 #232、 Warning:session_start(): open(/website/tmp/sess_47e067121facf033785f9a1cb16d243b, O_RDWR) failed: No such file or directory (2) in /website/index.php on line 10 没有找到文件或目录检查文件是否存在 #233、Parse error: syntax error, unexpected T_STRING in /website/index.php on line 18 18行语法错误检查语法 #234、Warning: fopen(welcome.txt) [function.fopen]: failed to open stream: No such file or directory in /website/index.php on line 2 打开文件失败没有welcome.txt这个文件检查文件名书写是否正确。 #235、 windows平台, Apache Http Server启动失败, 排错思路是什么? 可能情况一安装apache2的路径中不能含有中文将中文都改成英文。 可能情况二有其他服务占用80端口修改端口。 可能情况三配置文件修改错误还原配置文件。 #236、 你所知道的php数组相关的函数 Array_rand、in_array、array_flip、array_values 、array_keys、sort、rsort、shuffle Array_push、array_pop、array_shift、array_unshift、array_merge、range、array_pad #237、php读取文件内容的几种方法和函数 Fread、file_get_contents、fgets、fgetc、file #238、以下程序变量str什么值的情况下输入111? if( ! $str ) { echo 111; } 当$str为整数0、浮点型0.0、空字符串和字符串”0”、布尔值false、空数组、特殊类型NULL时 #239、说说你对缓存技术的了解 缓存技术是将动态内容缓存到文件或内存中在一定时间内访问动态页面直接调用缓存而不必重新访问数据库。 Memcachedredis #240、你所知道的设计模式有哪些 单例、工厂、MVC、适配器、组合、观察者、命令、迭代器、代理、策略 #241、说说你对SVN的了解优缺点 程序员开发的代码递交到版本服务器进行集中管理。 优点代码进行集中管理版本控制容易操作比较简单权限控制方便。 缺点每个文件夹都带一个.svn的文件夹不能随意修改服务器项目文件夹 #242、怎么找到PHP.ini的路径 Echo phpinfo(); #243、PHP加速模式/扩展 PHP调试模式/工具 Zend Optimizer加速扩展 调试工具xdebug #244、你常用到的mysql命令 SELECT INSERT DELETE UPDATE #245、进入mysql管理命令行的命令 Mysql –u root –ppass Mysql –h localhost –u root –p123456 #246、show databases; 这个命令的作用 查看数据库列表 #247、show create database mysql; 这个命令的作用 查看mysql库建库语句 #248、show create table user; 这个命令的作用 查看user表的建表语句 #249、 desc user; 这个命令的作用 查看user表的表结构 #250、explain select * from user; 这个命令的作用 查看查询语句信息 #251、show processlist; 这个命令的作用 查看进程信息 #252、 SHOW VARIABLES; 这个命令的作用 查看系统变量 #253、SHOW VARIABLES like %conn%; 这个命令的作用 查看字段名含有conn的系统变量。 #254、LEFT JOIN 写一个SQL语句 SELECT a.username,p.content FROM user as a LEFT JOIN post as p ON a.idp.uid WHERE a.id3; #255、in, not ni, exist, not exist的作用和区别 In在此范围内 Not in 不在此范围内 Exist 存在 Not exist不存在 #256、怎么找到数据库的配置文件路径 my.conf/my.ini #257、简述Linux下安装PHP的过程 安装软件之前先安装编译工具gcc、gcc-c 拷贝源码包解包解压缩 Cd /lamp/php进入php目录 ./configure –prefix/usr/local/php –with-config-file-path/usr/local/php/etc指定安装目录和配置文件目录 Make 编译 Make install安装 #258、简述Linux下安装Mysql的过程 Groupadd mysql 添加一个用户组mysql Useradd -g mysql mysql 添加一个mysql用户指定分组为mysql Cd /lamp/mysql 进入mysql目录 ./configure –prefix/usr/local/mysql/ –with-extra-charsetsall Make Make all #259、简述Linux下安装apache的过程 Cd /lamp/httpd 进去apache软件目录 ./configure –prefix/usr/local/apache2/ –sysconfdir/etc/httpd/ –with-included-apr Make Make all #260、用java取得一个input的值取得一个input的属性 Document.getElementsByTagName(‘input’)[0]; Document.getElementsByTagName(‘input’)[0].type #261、用Jquery取得一个input的值取得一个input的属性 $(function(){ $(‘input’).val(); $(‘input’).attr(‘type’); }) #262、 请您写一段ajax提交的js代码或者写出ajax提交的过程逻辑。Undone 过程逻辑 1创建ajax对象 2打开服务器连接 3判断请求状态 4如果是post发送需要设置请求头部信息 5发送请求 6处理响应 #263、写出你认为语言中的高级函数 Imagecreate Imagecolorallocate Imagesetpixel Imagettftext Iconv Mb_substr Mysql_connect() Mysql_select_db Mysql_query mysql_fetch_row Mysql_close #264、简述Cookie的设置及获取过程。 只要用户的浏览器支持cookie功能就可以使用php的setcookie函数来建立一个cookie。 Setcookie函数需要传三个必要参数,cookie识别名称、cookie值和cookie生存时间。还可以设置其他三个可选参数分别是服务器端指定路径、所属服务器网址和是否通过 https连接。 使用$_COOKIE全局数组可以获取cookie信息。 #265、写出Smarty模板引擎中你最常用的关键词 Assign Display Foreach Section Loop Item $smarty Now Const get #266、如下user表结构 名称 类型 说明 备注 Uid Int unsigned 主键 Name Varchar(20) Age Tinyint unsigned 需求 1增加一个字段性别sex写出修改语句 Alter user ADD sex ENUM(‘1’,‘0’) NOT NULL DEFAULT ‘1’ AFTER Age; 2查询出年龄介于20岁到30岁之间的用户 SELECT * FROM user WHERE age BETWEEN 20 AND 30; 3如果是一个Web频繁访问的查询上题的查询如何优化 可以使用预处理也可以将查询结果集缓存到memcache服务器。 #267、$str[1]’123456’; $str[2]’asassasasas’; $str[1][2]’abcdefgh’; var_dump($str); 写出此程序运行结果 array(2) { [1] string(6) 12a456 [2] string(6) asassasasas } #268、memcache 是什么使用过吗 有什么用? 请详细描述其操作过程。 memcache是一个高性能的分布式的内存对象缓存系统通过在内存里维护一个统一的巨大的hash表用来存储数据。 作用它能够用来存储各种格式的数据包括图像、视频、文件以及数据库检索的结果等。 操作过程 Memcached.exe –d install Memcache.exe –d start telnet localhost(IP地址) 11211(端口号) add one(名称) 1(标记) 300(有效时间) 10(字符串长度) #269、请写一个函数将1234567890转换成1,234,567,890 每3位用逗号隔开的形式。Undone #270、用JS实现以下功能 1得到当前的年份 Var dnew Date(); Document.write(d.getYear()); 2div的id为hot_nav的高、 #271、写出string的方法例如 substring Strlen、strstr、strrev、strtr。。。 #272、找到当前目录下文件名含有lo.com.cn 中的php文件。 Find . –name *lo.com.cn*.php #273、投票 vota实现 投票标题 varchar(255) 选项内容 varchar(255) 用户登录id vota_uid 投票用户id vota_vid 投票时间 vota_time 投票总数 vota_total 1创建数据库表结构 有没列举出的字段 自己补充如vota_id可以写出sql语句也可以画图说明 Create table vota(id int auto_increment primarykey,title varchar(255),content varchar(155)); 2有人刷恶意投票 请提供解决恶意刷票的方案 多种方案 用$_SERVER[‘REMOTE_ADDR’]判断一个IP只能投票一次。 限制用户登录投票 验证码 3现在有某几个热门的投票 服务器表示鸭梨很大 有什么给力的解决方案 采用读写分离 #274、HTTP1.0中 301 302状态代表什么意思 301 Moved Permanently 请求的网页已永久移动到新位置。服务器返回此响应对 GET 或 HEAD 请求的响应时会自动将申请人转到新位置。您应使用此代码告诉 Googlebot 某个网页或网站已永久移动到新位置302 Found 服务器目前从不同位置的网页响应请求但申请人应当继续使用原有位置来响应以后的请求。此代码与响应 GET 和HEAD 请求的 301 代码类似会自动将申请人转到不同的位置但不应使用此代码来告诉 Googlebot 页面或网站已经移动因为 Googlebot 要继续抓取原来的位置并编制索引 #275、请说明如何优化mysql数据库 1尽量使用缓存机制减少连接数据库的次数 2通过sql语句的优化减少每次sql语句执行的时间 3尽量精准的从数据库中获取内容减少select * 。。。这样的语句 #276、和的区别举例说明 答:是严格等于 是等于 如$a1.0 $b(int)$a $a$b 为false 而 $a$b为true; #277、if($a$b) print(“$a$b”); else print(“$a!$b”);写出输出的结果 答:运行的结果是 因为$a 和$b没有值 #278、define(“$myvalue”,10); $myarray[10]”dog”; $myarray[]”human”; $myarray[“myvalue”]”cat”; $myarray[“dog”]”cat”; print ”The value is:”; print $myarray[“myvalue”]; 答:cat #279、怎样防止图片防盗连接? 1可以把真实的图片做为背景图片而使用一张透明图片匹配尺寸并覆盖到真实图片上面。 这样当别人使用右键查看或保存图片的时候得到的是这张透明图片。 2自动切片这是一个非常有效的图片防盗链方法. 它支持两种方案: 让用户下载到的是被裁切过的图片。 让用户下载到的是打上水印的图片。 当用户尝试下载图片的时候它就会进行截切或添加水印操作但是这个方法也有很大的劣势: 造成太多的服务器请求负荷对网站整体性能影响不好 你将拥有许多的图片文件 3使用带水印的图片 (预先生成) 预先给图片添加水印也是个防止图片被盗的有效方法就算别人要盗至少也为你免费宣传了一下自己的网站。 但缺点也来了: 图片会看的不清楚或不美观了(这对于图片展示类的网站尤其重要但又正是该类网站特尤其图片防盗) 可以下载然后裁剪水印(当然如果你是那种把水印放在图片中间或水印有图片这么1/3大的家伙就不用担心这个问题了) 要手动添加水印的话可以使用photoshopGIMP轻松水印等软件。也可以选择下面的一些在线图片水印工具 4使用水印 (服务器端生成) 使用服务器端自动为图片添加水印是件省心的事情。只是需要一些脚本知识。 5使用Flash来显示图片 6基于浏览器的图片防盗 通过JavaScript来禁用点键菜单 是图片防盗的一个方法但它仅仅是对于网络菜鸟来说中等点的网民可以很轻松的查看到代码获取图片地址再高等点的可以轻松破解禁用你的禁用! 所以这并不是一个好方法更重要的是它是极不利于用户浏览体验的。 这有一个折中的方法你可以通过一个jQuery 插件 来实现仅仅禁用保存功能. 7禁用IE6的图像工具条 在IE6下当鼠标悬浮在一张图片上时会出现工具条上面有保存功能你可以使用下面的代码禁用: 280、下面哪条命令可以把f1.txt复制为f2.txtA Acp f1.txt|f2.txt Bcat f1.txt|f2.txt Ccat f1.txt|f2.txt Bcopy f1.txt|f2.txt 281、以下代码输出结果是 for($i0;$i10;$i){ $sum0.1; } echo (int)$sum; 输出0 282、简述你使用的过JQuery插件的优缺点说两个以上。 autocompletetags-input、cookie 283、公司有800员工资料都存在employee表里写一个SQL语句统计出重名员工的人数 select name, count(*) as num from stu group by name having count(name) 1; 284、PHP URL重写伪静态 1让Apache支持mod_rewrite 打开Apache配置文件httpd.conf,找到如下#LoadModule rewrite_module modules/mod_rewrite.so 开启rewrite去点前面# 2开始重载Allowoverride 查找apache配置文件找到如下 Options FollowSymLinks AllowOverride None 将AllowOverride None改为 AllowOverride All 修改 APMServ默认虚拟主机 NameVirtualHost :803 ServerName * DocumentRoot D:/APMServ/APMServ5.2.0/www/htdocs Options FollowSymLinks IncludesNOEXEC Indexes DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.pl default.pl index.shtml AllowOverride All Order Deny,Allow Allow from all AllowOverride none 改为 All 3写规则匹配页面 apache配置文件 RewriteEngine On RewriteRule index.html index.php RewriteRule (.).html $1.php [L] #匹配所有页面 4新建.htaccess 内容如下 RewriteEngine On RewriteRule index.html index.php RewriteRule (.*).html $1.php [L] #匹配所有页面 为了方便测试我在htdocs目录下建立一个product.php的文件 ?php echo You have selected product #. $_GET[id]; ? http://localhost:803/product.php?id2; ResultYou have selected product #2; 285、PHP伪静态如何实现? PHP伪静态主要是为了隐藏传递的参数名于网上搜索后整理伪静态四法 ?php //伪静态方法一 // localhost/php100/test.php?id|1action|2 $Php2Html_FileUrl $_SERVER[REQUEST_URI]; echo $Php2Html_FileUrl. ;// /php100/test.php?id|1action|2 $Php2Html_UrlString str_replace(?,,str_replace(/, , strrchr(strrchr($Php2Html_FileUrl, /),?))); echo $Php2Html_UrlString. ;// id|1action|2 $Php2Html_UrlQueryStrList explode(, $Php2Html_UrlString); print_r($Php2Html_UrlQueryStrList);// Array ( [0] id|1 [1] action|2 ) echo ; foreach($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr) { $Php2Html_TmpArray explode(|, $Php2Html_UrlQueryStr); print_r($Php2Html_TmpArray);// Array ( [0] id [1] 1 ) ; Array ( [0] action [1] 2 ) echo ; $_GET[$Php2Html_TmpArray[0]] $Php2Html_TmpArray[1]; } //echo 假静态$_GET变量 ; print_r($_GET); // Array ( [id|1action|2] [id] 1 [action] 2 ) echo ; echo ; echo $_GET[id]. ;// 1 echo $_GET[action];// 2 ? ?php //伪静态方法二 // localhost/php100/test.php/1/2 $filename basename($_SERVER[SCRIPT_NAME]); echo $_SERVER[SCRIPT_NAME]. ;// /php100/test.php echo $filename. ;// test.php if(strtolower($filename)test.php){ if(!empty($_GET[id])){ $idintval($_GET[id]); echo $id. ; $actionintval($_GET[action]); echo $action. ; }else{ $nav$_SERVER[REQUEST_URI]; echo 1:.$nav. ;// /php100/test.php/1/2 $$_SERVER[SCRIPT_NAME]; echo 2:.$. ;// /php100/test.php $navereg_replace(^$,,urldecode($nav)); echo $nav. ; // /1/2 $varsexplode(/,$nav); print_r($vars);// Array ( [0] [1] 1 [2] 2 ) echo ; $idintval($vars[1]); $actionintval($vars[2]); } echo $id..$action; } ? ?php //伪静态方法三 function mod_rewrite(){ global $_GET; $nav$_SERVER[REQUEST_URI]; echo $nav. ; $_name$_SERVER[SCRIPT_NAME]; echo $_name. ; $navsubstr(ereg_replace(^$_name,,urldecode($nav)),1); echo $nav. ; $navpreg_replace(/^.ht(m){1}(l){0,1}$/,,$nav);//这句是去掉尾部的.html或.htm echo $nav. ; $vars explode(/,$nav); print_r($vars); echo ; for($i0;$i; $action$_GET[action];//结果为_add echo $action; ? ?php //伪静态方法四 //利用server变量 取得PATH_INFO信息 该例中为 /1,100,8630.html 也就是执行脚本名后面的部分 if($path_info $_SERVER[PATH_INFO]){ //正则匹配一下参数if(preg_match(/\/(\d),(\d),(\d).html/si,$path_info,$arr_path)){ $gid intval($arr_path[1]); //取得值 1 $sid intval($arr_path[2]); //取得值100 $softid intval($arr_path[3]); //取得值8630 }else die(Path:Error!); //相当于soft.php?gid1sid100softid8630 }else die(Path:Nothing!); ? 286、PHP防注入如何实现 主要是为了防止恶意写入后台数据库 //防注入函数 function inject_check($sql_str){ $checkeregi(select|insert|update|delete|\|\/*|*|..\/|.\/|union|into|load_file|outfile, $sql_str); if($check){ echo 输入非法内容; exit(); }else{ return $sql_str; } } //接收传递参数后进行转换 $_GET[type]inject_check($_GET[type]); //之后再使用转换后的参数 287、URL重写是实现PHP伪静态 应该这样说才是,URL重写是实现PHP伪静态的方式之一, 具体如: 温馨提示 换成温馨提示 这种伪静态方式访问的话,其他最简单的方法是在网站根目录下面建一个.htaccess 文件其内容如下: RewriteEngine on RewriteRule /([d])-([d])-([d]).html /?x$1y$2z$3 最后再APACHE的虚拟域名配置文件里面找到项目所用的域名设置项 在其中再找到,将AllowOverride None 改成 AllowOverride All 若没有,则增加如下内容 Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all DirectoryIndex index.php 在中间重启APACHE即可. 你规则前面的 ^([0-9])-[a-zA-Z0-9-._]/ 是正表达式这里面用()括起来的东西在后面依次使用$1、$2来引用叫做匹配项。 在你的这个例子中$1对于的就是([0-9]*)就是前面的所有数字 RewriteRule ^id/([0-9])$ article.php?id$1 前面的 你自己可以随便搞 下面是我站的 /还有提醒一下linux 下的 规则有所不同 RewriteEngine On RewriteBase / RewriteRule ^type/(.)/order/([0-9])$ index_c.php?type$1order$2 RewriteRule ^type/(.)/order/([0-9])/page/([0-9])$ index_c.php?type$1order$2page$3 RewriteRule ^user/([0-9])$ index_c.php?uid$1 RewriteRule ^user/([0-9])/type/(.)/page/([0-9])$ index_c.php?uid$1type$2page$3 RewriteRule ^user/([0-9])/type/(.)$ index_c.php?uid$1type$2 RewriteRule ^user/([0-9])/myclick/(.)/page/([0-9])$ index_c.php?uid$1myclick$2page$3 RewriteRule ^user/([0-9])/myclick/(.)$ index_c.php?uid$1myclick$2 RewriteRule ^user/([0-9])/page/([0-9])$ index_c.php?uid$1page$2 RewriteRule ^re1d-([0-9])$ /top.php?itemid$1 RewriteRule ^s(.*)$ /search.php?s$1 RewriteRule ^type/(.)/page/([0-9])$ index_c.php?type$1page$2 RewriteRule ^type/(.)$ index_c.php?type$1 [L] 现在的搜索引擎越来越对静态页面友好以前不知道自己的服务器支不支持静态化今天向空间商咨询后发现其实自己的服务器是支持静态化的于是在DZ论坛上下来个.htaccess文件修改了其中的一个代码上传到我的linux服务器到Discuz!论坛后台选择静态化选项前台打开一看呵呵 已经显示静态化了 下面是修改的.htaccess文件文件内容 将 RewriteEngine 模式打开 RewriteEngine On 修改以下语句中的 /discuz 为你的论坛目录地址如果程序放在根目录中请将 /discuz 修改为 / RewriteBase / Rewrite 系统规则请勿修改 RewriteRule ^archiver/((fid|tid)-[w-].html)$ archiver/index.php?$1 RewriteRule ^forum-([0-9])-([0-9]).html$ forumdisplay.php?fid$1page$2 RewriteRule ^thread-([0-9])-([0-9])-([0-9]).html$ viewthread.php?tid$1extrapage%3D$3page$2 RewriteRule ^space-(username|uid)-(.).html$ space.php?$1$2 RewriteRule ^tag-(.).html$ tag.php?name$1 如果你有需要将这段代码保存为.htaccess文件上传到空间即可再到后台更改选择静态化就OK了. 288、HTTP协议中几个状态码的含义:503 500 401 403 404 200 301 302。。。 200 : 请求成功请求的数据随之返回。 301 : 永久性重定向。 302 : 暂时行重定向。 401 : 当前请求需要用户验证。 403 : 服务器拒绝执行请求即没有权限。 404 : 请求失败请求的数据在服务器上未发现。 500 : 服务器错误。一般服务器端程序执行错误。 503 : 服务器临时维护或过载。这个状态时临时性的。 289、PHP/Mysql中几个版本的进化史比如mysql4.0到4.1PHP 4.x到5.1的重大改进等等。undone 290、 HEREDOC介绍 一种定义字符串的方法。 结构 。在该提示符后面要定义个标识符单独一行 然后是一个新行。接下来是字符串 本身 最后要用前面定义的标识符作为结束标志单独一行 注意 标识符的命名也要像其它标签一样遵守PHP的规则 只能包含字母、数字和下划线并且必须以字母和下划线作为开头 291、一些编译php时的configure 参数 –prefix/usr/local/php php安装目录 –with-config-file-path/usr/local/php/etc 指定php.ini位置 –with-mysql/usr/local/mysql mysql安装目录对mysql的支持 –with-mysqli/usr/local/mysql/bin/mysql_config mysqli文件目录,优化支持 –enable-safe-mode 打开安全模式 –enable-ftp 打开ftp的支持 –enable-zip 打开对zip的支持 –with-bz2 打开对bz2文件的支持 –with-jpeg-dir 打开对jpeg图片的支持 –with-png-dir 打开对png图片的支持 –with-freetype-dir 打开对freetype字体库的支持 –without-iconv关闭iconv函数种字符集间的转换 –with-libxml-dir 打开libxml2库的支持 –with-xmlrpc 打开xml-rpc的c语言 –with-zlib-dir 打开zlib库的支持 –with-gd 打开gd库的支持 更多可以使用 ./configure help 查看 292、 向php传入参数的三种方法。 /* * 方法一 使用$argc $argv * 在命令行下运行 /usr/local/php/bin/php ./getopt.php -f 123 -g 456 */ // if ($argc 1){ // print_r($argv); // } /*** 运行结果*syncMySUSE11:~/web_app/channel3/interface /usr/local/php/bin/php ./getopt.php -f 123 -g 456Array([0] ./getopt.php[1] -f[2] 123[3] -g[4] 456)*//** 方法二 使用getopt函数* 在命令行下运行 /usr/local/php/bin/php ./getopt.php -f 123 -g 456*/// $options f:g:; // $opts getopt( $options ); // print_r($opts); /*** 运行结果*syncMySUSE11:~/web_app/channel3/interface /usr/local/php/bin/php ./getopt.php -f 123 -g 456Array([f] 123[g] 456)*//** 方法三 提示用户输入然后获取输入的参数。有点像C语言* 在命令行下运行 /usr/local/php/bin/php ./getopt.php*/
fwrite(STDOUT, Enter your name: );
$name trim(fgets(STDIN));
fwrite(STDOUT, Hello, $name!);
/*** 运行结果*syncMySUSE11:~/web_app/channel3/interface /usr/local/php/bin/php ./getopt.phpEnter your name: francisHello, francis!*/293、 error_reporting 等调试函数使用 error_reporting() 函数能够在运行时设置php.ini中 error_reporting 指令。 所以可以再程序中随时调节显示的错误级别。 使用此函数时 display_errors必须是打开状态。 294、 posix和perl标准的正则表达式区别 定界符posix没有perl有任意非数字、字母或反斜线”\”的字符 修正符posix没有perl有 []之外不一致的元字符”.”在posix中匹配除了换行外的字符perl中匹配任意字符 []之内不一致的元字符”-”在posix中[a-c-e]会抛出错误perl中[a-c-e]等价于[a-e] 295、Safe_mode 打开后哪些地方受限. 启动safe_mode会对许多PHP函数进行限制特别是和系统相关的文件打开、命令执行等函数. 所有操作文件的函数将只能操作与脚本UID相同的文件. 296、写代码来解决多进程/线程同时读写一个文件的问题。 PHP是不支持多线程的可以使用php的flock加锁函数实现。 $fp fopen(/tmp/lock.txt, w); if (flock($fp, LOCK_EX)) { // 进行排它型锁定 fwrite($fp, Write something here\n); flock($fp, LOCK_UN); // 释放锁定 } else { echo Couldnt lock the file !; } fclose($fp); 297、写一段上传文件的代码。 upload.html Send this file: upload.php $uploads_dir /uploads; foreach ($_FILES[error] as $key $error) { if ($error UPLOAD_ERR_OK) { $tmp_name $_FILES[tmp_name][$key]; $name $_FILES[name][$key]; move_uploaded_file($tmp_name, $uploads_dir/$name); } } 298、Mysql 的存储引擎,myisam和innodb的区别。 1 MyISAM类型不支持事务处理等高级处理而InnoDB类型支持. 2MyISAM类型的表强调的是性能其执行速度比InnoDB类型更快. 3InnoDB不支持FULLTEXT类型的索引. 4InnoDB 中不保存表的具体行数也就是说 执行select count(*) from table时InnoDB要扫描一遍整个表来计算有多少行 但是MyISAM只要简单的读出保存好的行数即可. 5对于AUTO_INCREMENT类型的字段InnoDB中必须包含只有该字段的索引但是在MyISAM表中可以和其他字段一起建立联合索引。 6DELETE FROM table时InnoDB不会重新建立表而是一行一行的删除。 7 LOAD TABLE FROM MASTER操作对InnoDB是不起作用的解决方法是首先把InnoDB表改成MyISAM表导入数据后再改成InnoDB表 但是对于使用的额外的InnoDB特性(例如外键)的表不适用. 8MyISAM支持表锁InnoDB支持行锁。 299、介绍xdebug,apc,eAccelerator,Xcache,Zend opt的使用经验。undone xdebug是php调试工具 apc是缓存工具 300、MySQL数据库作发布系统的存储一天五万条以上的增量预计运维三年,怎么优化 1设计良好的数据库结构允许部分数据冗余尽量避免join查询提高效率。 2选择合适的表字段数据类型和存储引擎适当的添加索引。 3mysql库主从读写分离。 4找规律分表减少单表中的数据量提高查询速度。 5添加缓存机制比如memcachedapc等。 6不经常改动的页面生成静态页面。 7书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE. 301、写出一种排序算法原理并说出优化它的方法。 快速排序随机化 function swap($n, $m) { $temp $n; $n $m; $m $temp; } function partition($a, $p, $r) { $x $a[$r]; $i $p - 1; for ($j $p; $j $r; $j) { if ($a[$j] $x) { $i; swap($a[$i], $a[$j]); } } $i; swap($a[$i], $a[$r]); //echo ; var_dump($a); echo ; return $i; } function quick_sort($a, $p, $r) { if ($p $r) { $q partition($a, $p, $r); quick_sort($a, $p, $q - 1); quick_sort($a, $q 1, $r); } } function randomized_partition($a, $p, $r) { $i rand($p, $r); swap($a[$r], $a[$i]); return partition($a, $p, $r); } function randomized_quick_sort($a, $p, $r) { if ($p $r) { $q randomized_partition($a, $p, $r); //echo q , $q; randomized_quick_sort($a, $p, $q - 1); randomized_quick_sort($a, $q 1, $r); } } 302、 请简单阐述您最得意的开发之作。undone 303、对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题 统一布码监测 304、请介绍Session的原理,大型网站中Session方面应注意什么?undone 为解决html无状态协议问题记录客户端状态信息使用session可以通过url传递或cookie传递。 305、测试php性能和mysql数据库性能的工具,和找出瓶颈的方法undone 306、 介绍一下常见的SSO(单点登陆)方案(比如dedecms整合discuz的passport)的原理。undone 307、您写过的PHP框架的特点主要解决什么问题与其他框架的不同点。undone 308、大型的论坛/新闻文章系统/SNS网站在性能优化上有什么区别?undone 309、相册类应用:要求在浏览器中能同时选中并上传多个文件图片要求能剪裁压缩包在服务器端解压。能上传单个达50M的文件。上传过程中有进度条显示。每个图片能生成四种大小缩略图视频文件要转成flv供flash播放。叙述要涉及的各类开源软件和简单用途。undone 310、一群猴子排成一圈按12…n依次编号。然后从第1只开始数数到第m只,把它踢出圈从它后面再开始数再数到第m只在把它踢出去…如此不停的进行下去直到最后只剩下一只猴子为止那只猴子就叫做大王。要求编程模拟此过程输入m、n, 输出最后那个大王的编号。用程序模拟该过程。 /* 约瑟夫环 */ function josehpus1($n, $m) { $a array(); for ($i 1; $i $n; $i) { $a[] $i; } $i 1; while (count($a) 1) { $x array_shift($a); if ($i % $m ! 0) { $a[] $x; } else { echo - . $x . ; print_r($a); } $i; } return $a[0]; } function josehpus2($n, $m) { $s 0; for ($i 2; $i $n; $i ) { $s ($s $m) % $i; } return $s 1; } echo josehpus1(10, 7); echo ; echo josehpus2(10, 7); 311、linux下查看当前系统负载信息的一些方法。Undone wUptime 查看系统运行时间、用户、负载 Vmstat Top 查看系统整体状态 312、vim的基本快捷键。undone 313、 ssh 安全增强方法;密码方式和rsa key 方式的配置。undone 314、 rpm/apt/yum/ports 装包查询删除的基本命令。 安装 rpm -ivh package.rpm apt-get install package yum install package 删除 rpm -e package apt-get remove package yum remove package 查询 rpm –q string apt-cache search string yum search string 315、Makefile的基本格式gcc 编译连接的命令,-O0 和-O3区别。undone 316、 gdb,strace,valgrind的基本使用.undone 317、css盒模型。undone 318、java中的prototype。 原型链用于实现继承。 方法一 var a { x: 10, calculate: function (z) { return this.x this.y z } }; var b { y: 20, proto: a }; var c { y: 30, proto: a }; // call the inherited method b.calculate(30); // 60 c.calculate(40); // 80 方法二 function a() { this.x 1; a.prototype.add function(){ return this.x 2; } } var obj1 new a(); var obj2 new a(); 319、java中this对象的作用域。 This是执行上下文环境的一个属性而不是某个变量对象的属性。 320、IE和firefox事件冒泡的不同。undone 321、什么是怪异模式,标准模式近标准模式。undone 322、DTD的定义 文档类型定义 323、IE/firefox常用hack .content .test { width: 200px; height: 200px; background: #f60; /all/ background: #06f9; /IE/ 324、firefox,IE下的前端js/css调试工具。 Console、WebDeveloper 325、面试官看过你的简历会问一些你做的项目的用户量、pv、吞吐量、相关难点和解决方法等。undone 326、数据库设计经验,为什么进行分表? 分库? undone 一般多少数据量开始分表? 分库? 分库分表的目的? 什么是数据库垂直拆分? 水平拆分? 分区等等可以举例说明 327、web开发方面会遇到哪些缓存? 分别如何优化? undone 328、给你256M的内存,对10G的文件进行排序(文件每行1个数字),如何实现 对10G的文件进行查找如何实现 统计10G文件每个关键字出现的次数如何实现 undone 300万个字符串最多假设没有重复都是最大长度占用内存3M*1K/40.75G。所以可以将所有字符串都存放在内存中进行处理。 可以使用key为字符串事实上是字符串的hash值值为字符串出现次数的hash来统计每个每个字符串出现的次数。并用一个长度为10的数组/链表来存储目前出现次数最多的10个字符串。 这样空间和时间的复杂度都是O(n)。 329、假如你现在是12306火车订票的设计师,你该如何设计满足全国人民订票? undone 330、假如有1亿用户的访问量,你的服务器架构是怎样的? 用户信息的存储方案如何设计? undone 331、如果你是技术组长,所带团队任务进度无法完成你该如何解决? undone 如果在进度排满的前提下插入任务,你该如何保证总进度不延期? undone 如果有的工程师今天预定任务没有完成,你该如何解决? undone 332、从你的经验方面谈一下如何构建高性能web站点? 需要哪些环节? 步骤? 每个步骤需要注意什么如何优化等? undone 333、 如何处理多服务器共享session? Undone Mysql、memcache 334、 一个10G的表,你用php程序统计某个字段出现的次数,思路是? undone 335、会告诉你一个nginx日志例子,用你认为最佳的编程语言统计一下http响应时间超过1秒的前10个url? undone 336、给你一个mysql配置文件,用你认为最佳的编程语言解析该文件? undone 337、给你一个url,在nginx配置一下rewrite指定到某个具体路径? undone 338、一个php文件的解释过程是? 一般加速php有哪些? 提高php整体性能会用到哪些技术? undone 1解析过程 解析命令行参数初始化环境编译执行PHP代码zend引擎清理环境并返回退出 2加速 PHP加速软件是一种将PHP程式码编译之后所产生的bytecode暂存在共享内存内供重复使用以提升执行效率的插件软件。 如Zend Optimizer、APC、XCache 339、chrome号称为多线程的,所以多线程和多进程的区别为? undone 进程是资源分配的最小单位线程是CPU调度的最小单位 线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定. 线程的运行中需要使用计算机的内存资源和CPU。340、 php在2011年底出现hash碰撞,hash碰撞原理为? 如何进行修复? PHP是使用单链表存储碰撞的数据因此实际上PHP哈希表的平均查找复杂度为O(L)其中L为桶链表的平均长度而最坏复杂度为O(N)此时所有数据全部碰撞哈希表退化成单链表。 哈希表碰撞攻击就是通过精心构造数据使得所有数据全部碰撞人为将哈希表变成一个退化的单链表此时哈希表各种操作的时间均提升了一个数量级因此会消耗大量CPU资源导致系统无法快速响应请求从而达到拒绝服务攻击DoS的目的。 攻击者只要构造一个含有大量碰撞key的post请求就可以达到攻击的目的。具体做法不再演示。 在PHP5.3.9的版本中增加了一个配置项max_input_vars用于标识一次http请求最大接收的参数个数默认为1000。 理论上只要PHP代码中某处构造Array的数据依赖于外部输入则都可能造成这个问题因此彻底的解决方案要从Zend底层HashTable的实现动手。一般来说有两种方式一是限制每个桶链表的最长长度二是使用其它数据结构如红黑树取代链表组织碰撞哈希并不解决哈希碰撞只是减轻攻击影响将N个数据的操作时间从O(N^2)降至O(NlogN)代价是普通情况下接近O(1)的操作均变为O(logN)。 340、 使用命令可以查看Linux的启动信息B Amesg –d Bdemesg Ccat /etc/mesg Dcat /var/mesg 341、web不安全因素有哪些? 分别如何防范? undone 对于以往安全事故的分析表明大多数安全问题都属于下面三种类型之一 服务器向公众提供了不应该提供的服务。 服务器把本应私有的数据放到了可公开访问的区域。 服务器信赖了来自不可信赖数据源的数据。 342、假如两个单链表相交,写一个最优算法计算交点位置,说思路也可以? undone 343、nginx负载均衡有哪些? 如果其中一台服务器挂掉,报警机制如何实现? undone 344、不优化前提下,apache一般最大连接数为? nginx一般最大连接数为? mysql 每秒insert ? select ? update ? delete? undone apache默认最大连接数256nginx默认是1024 345、mysql 数据类型有哪些 ? 分别占用多少存储空间 ? undone 346、nginx设置缓存js、css、图片等信息,缓存的实现原理是? undone 347、如何提高缓存命中率? 如何对缓存进行颗粒化? undone 348、php的内存回收机制是? undone 在PHP中没有任何变量指向这个对象时这个对象就成为垃圾。PHP会将其在内存中销毁这是PHP的GC垃圾处理机制防止内存溢出。 当一个PHP线程结束时当前占用的所有内存空间都会被销毁当前程序中所有对象同时被销毁。GC进程一般都跟着每起一个SESSION而开始运行的.gc目的是为了在session文件过期以后自动销毁删除这些文件. __destruct() 析构函数是在垃圾对象被回收时执行。 unset 销毁的是指向对象的变量而不是这个对象。 ?php gc_enable(); // Enable Garbage Collector var_dump(gc_enabled()); // true var_dump(gc_collect_cycles()); // # of elements cleaned up gc_disable(); // Disable Garbage Collector ? 349、linux监视一个日志文件a.log 的最新内容? tail –f a.log查看文件最后10行动态显示。 350、查看当前服务器的HTTP连接有哪些 假设Apache Httpd ps –le | grep httpd 说明。。 pgrep httpd netstat –an | grep 80 351、说说Linux下的find命令和grep命令的区别 Find查找文件或目录 Grep 在文件内容中/输出结果中查找字符串 352、如何实现每天0点钟重新启动服务器? Crontab命令格式crontab –l/-i/-r/-e 脚本/命令 -l 显示用户crontab内容 -I 删除用户crontab文件前提示 -r 删除用户的crontab文件 -e 编辑用户的crontab文件 时间段含义 依次是分钟0-59 小时0-23 日期1-31 月份1-12 星期0-6 Crontab –e 0 0 * * * /sbin/reboot 应该写绝对路径 353、请写出5个常用的unix操作命令? Ls cp touch mkdir rm cat kill ps 354、rm -rf * 是什么意思其中 f 有什么作用? –r表示递归删除目录f强制可以不提示删除* 通配符 删除当前目录下所有文件 355、Linux压缩文件和解压文件的命令? Gzip tar bzip zip Gunzip tar bunzip unzip 356、Linux的目录进行遍历编写shell脚本? Ls –R Tree 以树状结构显示目录 357、apache默认使用进程管理还是线程管理如何判断并设置最大连接数 使用进程管理 startServers maxClients 设置最大连接数 358、当前目录下有一个文件为 showme.sh , 如何修改文件将其指定为使用 /bin/bash 运行如何修改其权限为所有用户可读写所有用户可执行? 指定用哪个shell来解析在文件头加shell路径 !/bin/bash 修改文件权限 Chmod 777 showme.sh 359、当前目录下有一个文件为 showme.sh,如何修改其所有人为root? Chown root showme.sh 360、在linux 请写出一种自动定时备份某一个文件的方法和具体实施流程要求每天凌晨3 点的时候备份一次。Undone Crontab –e 0 3 * * * 以某个命令为例 Cp –p Tar Scp 说明每个命令要写绝对路径、错误日志输出 2、时间戳、完全备份和增量备份 361、crond后台常驻程序daemon用于D A负责文件在网络中的共享 B管理打印子系统Manages theprinting subsystem C跟踪管理系统信息和错误 D管理系统日常任务的调度scheduing 362、怎么了解您在当前目录下还有多大空间C 正确答案du –s . AUse df BUse du / CUse du. DUse df. 本文地址[乐意黎原创]PHP 老司机指南-CSDN博客