PHP初级开发者常见的5种疑问

一、文件上传需要注意哪些细节?怎么把文件保存到指定目录?怎么避免上传文件重名问题?

1). 首现要在php.ini中开启文件上传;

2). 在php.ini中有一个允许上传的最大值,默认是2MB。必要的时候可以更改;

3). 上传表单一定要记住在form标签中写上enctype="multipart/form-data";

4). 提交方式 method 必须是 post;

5). 设定 type="file" 的表单控件,并且必须具有name属性值;

6). 为了上传成功,必须保证上传文件的大小是否超标、文件类型是否符合要求,上传后存放的路径是否存在;

7). 表单提交到接收页面,接收页面使用$_FILES来接收上传的文件。$_FILES是个多维数组。

第一维下标是上传控件的name,二维下标分别为name/type/tmp_name/size/error。

分别代表文件名、文件类型、上传到临时目录下的临时文件名、文件大小、是否有错误。

如果是批量上传,那么二维下标就是数组,而并非是字符串。

8). 文件上传后是被放置在服务器端临时路径下,需要使用move_uploaded_file ()函数,才可以将上传后的文件保存到指定目录。

9). 为了避免上传文件重名,可以通过上传的文件名获取到文件后缀,然后使用时间戳+文件后缀的方式为文件重新命名。

二、$_REQUEST、$_GET、$_POST、$_COOKIE 的关系和区别:

1.关系:$_REQUEST包含了$_GET、$_POST、$_COOKIE等的所有内容,是它们的集合体。

2.通过$_REQUEST获取变量值,PHP页面因为不确定它是哪种传值方式,

因此会根据php.ini中的配置来接收值。

php.ini里可以设置,variables_order = “GPC”。其含义是GET,POST,COOKIE.

所以PHP页面会先从$_GET中获取,再从$_POST中获取,然后从$_COOKIE中获取。

新获得的值会覆盖之前获取到的值。

因此从表现形式上看,$_REQUEST最后是获取$_COOKIE中的值,如果$_COOKIE中没有值,

会获取$_POST中的值,如果$_POST没有获取到 ,就去$_GET中获取。

如果$_GET中也没有该值,那么$_REQUEST就返回null。

三、什么是SQL注入?如何防止SQL注入?

SQL注入攻击是黑客对数据库进行攻击的常用手段之一。一部分程序员在编写代码的时候,

没有对用户输入数据的合法性进行判断,注入者可以在表单中输入一段数据库查询代码并提交,

程序将提交的信息拼凑生成一个完整sql语句,服务器被欺骗而执行该条恶意的SQL命令。注入者根据程序返回的结果,

成功获取一些敏感数据,甚至控制整个服务器,这就是SQL注入。

要对提交的信息进行过滤,对单引号进行转义。

首先可以在php.ini中设置,让所有的单引号在提交后都进行转义。或者使用addslashes().

四、 MVC的概念是什么?

MVC(即模型-视图-控制器)是80年代发明的一种软件设计模式或者说编程思想。

M指(Model)模型层,V是指(View)视图层(显示层或者用户界面),C是指(Controller)控制层。

使用mvc的目的是实现M和V分离,从而使得一个程序可以轻松使用不同的用户界面。

C存在的目的则是在M和V之间起到调节作用,确保M和V的同步,一旦M改变,V应该能同步更新。

将M和V分离,就可以做到同一个网页,在不同节日到来的时候能显示不同的页面风格,这只需要提前制作多个视图层模板页面,

而无需更改M层程序。

MVC做到了编程中的分工合作,代码的可重用性得到最大化体现,程序逻辑更加清晰而富有条理,便于后期维护管理。

在网站开发中,

模型层一般负责对数据库表信息进行增删改查,

视图层负责显示页面内容,

控制器层在M和V之间起到调节作用,控制器层决定调用哪个model类的哪个方法,

执行完毕后由控制器层决定将结果assign到哪个view层。

五、$this,self, parent分别代表什么?哪些场合下使用

$this代表的是当前对象 self代表的是当前的类 parent代表的是当前类的父类

使用场合:

$this只能使用在当前类中,通过$this->可以调用当前类中的属性和方法;

self只能在当前类中使用,通过作用域操作符::访问当前类中的类常量、当前类中的静态属性、当前类中的方法;

parent只能使用在有父类的当前类中,通过作用域操作符::访问父类中的类常量、父类中的静态属性、父类中的方法。

作用于操作符的使用场合

a)本类中:

i.self::类常量

ii.self::静态属性

iii.self::方法() parent::方法()

b)子类中:

i.parent::类常量

ii.parent::静态属性(public或者protected)

iii.parent::方法()(public或者protected)

c)类外:

i.类名::类常量

ii.类名::静态属性(public)

iii.类名::静态方法(public)

原文发布于微信公众号 - 思梦PHP(sm_php)

原文发表时间:2016-11-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

JavaWeb工程中web.xml基本配置

        先说下我记得xml规则,必须有且只有一个根节点,大小写敏感,标签不嵌套,必须配对。

1471
来自专栏指尖下的Android

JNI之路径初探---2

上一篇博客写的是Java调用C、C++的例子,本篇就演示一下C、C++怎么调用Java的属性和方法。

1442
来自专栏大内老A

WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[上篇]

服务调用的目的体现在对某项服务功能的消费上,而功能的实现又定义在相应的服务类型中。不论WCF服务端框架处理服务调用请求的流程有多么复杂,最终都落实在服务实例的激...

2398
来自专栏前端萌媛的成长之路

JavaScript模块化发展

2973
来自专栏闪电gogogo的专栏

Python初学——多线程Threading

接着上篇继续跟着沫凡小哥学Python啦 1.1 什么是多线程 Threading 多线程可简单理解为同时执行多个任务。 多进程和多线程都可以执行多个任务,线程...

2045
来自专栏技术小站

Python 多线程与多进程

原文地址:http://www.cnblogs.com/whatisfantasy/p/6440585.html

1152
来自专栏GreenLeaves

WCF系列教程之WCF服务协定

本文参考自:http://www.cnblogs.com/wangweimutou/p/4422883.html,纯属读书笔记,加深记忆 一、服务协定简介: 1...

1777
来自专栏用户2442861的专栏

Linux下动态库(.so)和静态库(.a) 的区别

动态库(共享库)的代码在可执行程序运行时才载入内存,在编译过程中仅简单的引用,因此代码体积比较小。

9721
来自专栏友弟技术工作室

bash及其特性

1263
来自专栏Golang语言社区

Go 语言系统调用简析

一、系统调用概述 系统调用是受控的内核入口,借助于这一机制,进程可以请求内核以自己的名义去执行某些动作。Linux 内核以 C 语言语法 API 接口形式(头文...

4618

扫码关注云+社区