search
HomeBackend DevelopmentPHP Tutorialphp 常见有关问题总结

php 常见问题总结

1. Include 与 require的区别,require和require_once的效率哪个高?

  Php在遇到include时就解释一次,如果页面中出现10次include,php就解释10次,而php遇到require时只解释一次,即使页面出现多次require也只解释一次,因此require的执行表率比include高。

Php使用require包含文件时将被包含的文件当成当前文件的一个组成部分,如果被包含的文件中有语法错误或者被包含的文件不存在,则php脚本将不再执行,并提示错误。

Php使用include包含文件时相当于指定了这个文件的路径,当被包含的文件有语法错误或者被包含的文件不存在时给出警告,不影响本身脚本的运行。

Include在包含文件时可以判断文件是否包含,而require则不管任何情况都包含进来。

Require的效率比require_once的效率更高,因为require_once在包含文件时要进行判断文件是否已经被包含。

2. Cookie和session的区别,禁止了cookie后session能正常使用吗?session的缺点是什么?session在服务器端是存在哪里的?是共有的还是私有的?

  COOKIE保存在客户端,用户通过手段可以进行修改,不安全,单个cookie允许的最大值是3k。而SESSION保存在服务器端,相对比较安全,大小没有限制。

当客户端的Cookie被禁用或出现问题时,PHP会自动把Session ID附着在URL中,这样再通过Session ID就能跨页使用Session变量了。但这种附着也是有一定条件的,即“php.ini中的session.use_trans_sid = 1“,或者编译时打开打开了“--enable-trans-sid”选项。
    在php.ini文件中
session.use_trans_sid=1
session.use_only_cookies=0
session.use_cookies=1
或者 在php程序中
ini_set(“session.use_trans_sid”,”1″);
ini_set(“session.use_only_cookies”,0);
ini_set(“session.use_cookies”,1
浏览器禁用cookie之后还可以使用session。因为cookie被禁止之后,可以通过url传递,在需要限制的页面的URL中都加上sessionid。服务器端在get到这个sessionid后,在session_start之前,设置一下得到的id就可以和用户进行关联,效果和cookie存sessionid一样。
    cookie分两种,一种可以叫做session cookie,浏览器关闭就会丢失
一种可以叫做persistent cookie,就是我们通常意义上所说的cookie。
通常服务器端的session是借助于seesion cookie来和客户端交互的。
但如果客户端禁用了cookie的话,session还可以借助于url来和客户端交互。
cookie 是在客户端磁盘上存数据 session是存在服务器端的内存中

Session的缺点:保存在服务器端,每次读取都从服务器进行读取,对服务器有资源消耗。

Session保存在服务器端的文件或数据库中,默认保存在文件中,文件路径由php配置文件的session.save_path指定。

Session文件是公有的。

3. 怎么防止sql注入?

1、过滤掉一些常见的数据库操作关键字:select,insert,update,delete,and,*等

或者通过系统函数:addslashes(需要被过滤的内容)来进行过滤。

 2、在PHP配置文件中

Register_globals=off;设置为关闭状态 //作用将注册全局变量关闭。

比如:接收POST表单的值使用$_POST['user'],如果将register_globals=on;直接使用$user可以接收表单的值。

 3、SQL语句书写的时候尽量不要省略小引号(tab键上面那个)和单引号

 4、提高数据库命名技巧,对于一些重要的字段根据程序的特点命名,取不易被猜到的

 5、对于常用的方法加以封装,避免直接暴漏SQL语句

 6、开启PHP安全模式

Safe_mode=on;

 7、打开magic_quotes_gpc来防止SQL注入

Magic_quotes_gpc=off;默认是关闭的,它打开后将自动把用户提交的sql语句的查询进行转换,把'转为\',这对防止sql注入有重大作用。

因此开启:magic_quotes_gpc=on;

 8、控制错误信息

关闭错误提示信息,将错误信息写到系统日志。

9、使用mysqli或pdo预处理。

4. 数据库索引有几类,分别是什么?什么时候该用索引

 普通索引、主键索引、唯一索引

  并非所有的数据库都以相同的方式使用索引,作为通用规则,只有当经常查询列中的数据时才需要在表上创建索引。

5. 引用传值和非引用传值的区别,什么时候该用引用传值?什么时候该用非引用传值?

按值传递:函数范围内对值的改变在函数外都会被忽略。

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

按值传递时,php必须复制值,如果操作的是大型的对象和字符串,这将是一个代价很大的操作。按引用传递不需要复制值,因此对性能的提高有好处。

当需要在函数内改变源变量的值时用引用传递,如果不想改变原变量的值用传值。

6. 写几个魔术方法并说明作用?

__call()当调用不存在的方法时会自动调用的方法

__autoload()在实例化一个尚未被定义的类是会自动调用次方法来加载类文件

7. 数组中下标最好是什么类型的,为什么?

数组的下标最好是数字类型的,数字类型的处理速度快。

8. ++i和i++哪一个效率高,为什么?

++i效率比i++的效率更高,因为++i少了一个返回i的过程。

9.magic_quotes_gpc()、magic_quotes_runtime()的意思是什么?

Magic_quotes_gpc()是php配置文件中的,如果设置为on则会自动POST,GET,COOKIE中的字符串进行转义,在'之前加\

Magic_quotes_runtime()是php中的函数,如果参数为true则会数据库中取出来的单引号、双引号、反斜线自动加上反斜杠进行转义。

10.写几个魔术方法并说明作用?

__set()当给未定义的变量赋值时会自动调用的方法

__get()当获取未定义变量的值时会自动调用的方法

__construct()构造方法,实例化类时自动调用的方法

__destroy()销毁对象时自动调用的方法

__unset()当对一个未定义变量调用unset()时自动调用的方法

__isset()当对一个未定义变量调用isset()方法时自动调用的方法

__clone()克隆一个对象

__tostring()当输出一个对象时自动调用的方法

11.Echo()、print()、print_r()的区别?

Echo() 是PHP语法,可以输出多个值,不能输出数组,echo不是函数,没有返回值。

Print() 是php的语言结构,是打印字符串,可以输出单个简单类型的变量值,是一个函数有返回值,所以如果只是输出,echo会更快。

Print_r() 是php函数,可以打印出复杂类型变量的值,如数组,对象。

12.谈谈你对Mvc的认识

MVC是一种设计模式,强制使输入、处理、输出分开,MVC的三个核心部分:M模型,V视图,C控制器。

视图就是用户看到并与之交互的界面。

模型就是程序的数据业务规则。

控制器接收用户的数组调用模型和视图去完成用户需求。

使用MVC的优点:低耦合、高重用性、较低的生命周期成本、快速开发部署、可维护性、可扩展性,有利于软件工程化管理。

MVC的缺点:没有明确的定义,完全理解并不容易。小型项目不适合用MVC。

13.框架中什么是单一入口和多入口,单一入口的优缺点

多入口就是通过访问不同的文件来完成用户请求。

单一入口只web程序所有的请求都指向一个脚本文件的。

单一入口更容易控制权限,方便对http请求可以进行安全性检查。

缺点:URL看起来不那么美观,特别是对搜索引擎来说不友好。

14.打印一个用‘.’链接的字符串时候,还可以用什么代替‘.’链接效率更高些?

可以用,代替.,效率更高。

15.提示类型200、404、502是什么意思?

200是请求成功,404是文件未找到,502是服务器内部错误,300重定向,403服务器拒绝访问,500服务器内部错误

16.编写一个自定义函数提取这段路径的的后缀名。

“Www/hello/test.php.html?a=3&b=4”

Function geturltype($url){

$info=parse_url($url);

Return end(explode('.',$info['path']));

}

17.你对Memcach的理解,优点有哪些?

Memcache是一种缓存技术,在一定的时间内将动态网页经过解析之后保存到文件,下次访问时动态网页就直接调用这个文件,而不必在重新访问数据库。使用memcache做缓存的好处是:提高网站的访问速度,减轻高并发时服务器的压力。

Memcache的优点:稳定、配置简单、多机分布式存储、速度快

18.谈谈你对php的基本认识

php是Hypertext Preprocessor(超文本预处理的简称),是一种用来开发动态网站的服务器端脚本语言

19.在一个页面上有几种方式添加css

三种:(1)引用外部css文件  (2)引用内部css文件  (3)引用內联css样式

20.PHP支持多继承吗?
不支持。PHP中只允许单继承,父类可以被一个子类用关键字“extends”继承。

21.表单中 get与post提交方法的区别?
get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.

22.数据库中的事务是什么?
事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成, 
事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

23..解释下PHP类中:protected,public,prtvate,interface,abstract ,final,static的含义?

protected受保护的,在本类和子类中有效.

public 公共的,在本类,子类中,类外都可以用

private私有的,只在本类中有用

interface定义一个接口时使用的关键字

abstract定义一个抽象类或者抽象方法时使用的关键字.

final用final申明的方法无法被覆盖,用final申明的类不能被继承

static定义一个静态方法或者静态属性使用的关键字

24.描述下大流量高并发量网站的解决方案

确认服务器硬件是否足够支持当前的流量

使用memcache缓存技术,将动态数据缓存到内存中,动态网直接调用这些文件不必再访问数据库

禁用外部盗链,外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对自身图片或者文件盗链.目前可以简单的通refer来控制盗链.apache自己就可以通过配置来禁止盗链.

控制大文件的下载,大文件下载会占很大的流量.对于非SCSI硬盘来说会消耗,使得网站响应能力下降.

使用不迥的主机分流主要流量,使用流量统计软件可以知道哪些地方不费大量流量,哪些页面需要再进行优化

分库分表

sphinx全文索引引擎

25.linux下建立压缩包,解压缩包的命令

压缩:gzip tar -cvfz,zip,bzip2

解压:gunzip,tar -zxvf,unzip,bunzip2

26.用PHP写出显示客户端IP与服务器IP的代码1分)

$_SERVER["REMOTE_ADDR"]

$_SERVER["SERVER_ADDR"]






 

 

 

 

 

 





Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
SpringBoot Session怎么设置会话超时SpringBoot Session怎么设置会话超时May 15, 2023 pm 02:37 PM

问题发现springboot项目生产session-out超时问题,描述下问题:在测试环境通过改动application.yaml配置session-out,经过设置不同时间验证session-out配置生效,于是就直接设置了过期时间为8小时发布到了生产环境。然而中午接到客户反应项目过期时间设置较短,半小时不操作就会话过期需要反复登陆。解决处理开发环境:springboot项目内置Tomcat,所以项目中application.yaml配置session-out是生效的。生产环境:生产环境发布是

php session刷新后没有了怎么办php session刷新后没有了怎么办Jan 18, 2023 pm 01:39 PM

php session刷新后没有了的解决办法:1、通过“session_start();”开启session;2、把所有的公共配置写在一个php文件内;3、变量名不能和数组下标相同;4、在phpinfo里面查看session数据的存储路径,并查看该文件目录下的sessio是否保存成功即可。

session php默认失效时间是多少session php默认失效时间是多少Nov 01, 2022 am 09:14 AM

session php默认失效时间是1440秒,也就是24分钟,表示客户端超过24分钟没有刷新,当前session就会失效;如果用户关闭了浏览器,会话就会结束,Session就不存在了。

Springboot2 session设置超时时间无效怎么解决Springboot2 session设置超时时间无效怎么解决May 22, 2023 pm 01:49 PM

问题:今天项目中遇到了一个设置时间超时的问题,按SpringBoot2的application.properties更改一直不生效。解决方案:server.*属性用于控制SpringBoot使用的嵌入式容器。SpringBoot将使用ServletWebServerFactory实例之一创建servlet容器的实例。这些类使用server.*属性来配置受控的servlet容器(tomcat,jetty等)。当应用程序作为war文件部署到Tomcat实例时,server.*属性不适用。它们不适用,

PHP如何在多个文件中正确地读取和写入Session数据PHP如何在多个文件中正确地读取和写入Session数据Mar 23, 2023 am 11:12 AM

当您在使用PHP会话(Session)时,有时会发现Session在一个文件中可以正常读取,但在另一个文件中却无法读取。这可能会让您感到困惑,因为会话数据应该可以在整个应用程序中共享。本文将解释如何在多个文件中正确地读取和写入PHP会话数据。

Redis的共享session应用如何实现短信登录Redis的共享session应用如何实现短信登录Jun 03, 2023 pm 03:11 PM

1.基于session实现短信登录1.1短信登录流程图1.2实现发送短信验证码前端请求说明:说明请求方式POST请求路径/user/code请求参数phone(电话号码)返回值无后端接口实现:@Slf4j@ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1.校验手机号if

JavaScript和PHP的cookie之间有哪些区别?JavaScript和PHP的cookie之间有哪些区别?Sep 02, 2023 pm 12:29 PM

JavaScriptCookie使用JavaScriptcookie是记住和跟踪偏好、购买、佣金和其他信息的最有效方法。更好的访问者体验或网站统计所需的信息。PHPCookieCookie是存储在客户端计算机上的文本文件并保留它们用于跟踪目的。PHP透明地支持HTTPcookie。JavaScriptcookie如何工作?您的服务器将一些数据发送到访问者的浏览器cookie的形式。浏览器可以接受cookie。如果存在,它将作为纯文本记录存储在访问者的硬盘上。现在,当访问者到达站点上的另一个页面时

PHP如何处理微信小程序中的session问题PHP如何处理微信小程序中的session问题Jun 02, 2023 pm 03:40 PM

近年来,微信小程序风靡全球,已经成为了许多企业和个人开发者的首选平台。在小程序的开发中,我们经常会遇到session问题,也就是如何在小程序中保存用户登录状态。这个问题对于网站开发者来说并不陌生,但在小程序中却有些不同。本文将介绍如何使用PHP解决微信小程序中的session问题。一、小程序登录过程概述小程序的登录流程与网站的登录流程类似,分为以下几个步骤:

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Hot Tools

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.