php:实现文本留言_文件上传_2020-07-02_day12

php实现文件留言本 :

我们来看一下文件结构:

1. index.php ---展示输入框和留言内容

2. write.php ---向message.txt写入数据

3. message.txt ---存入聊天内容

index.php文件

 index.php ---展示输入框和留言内容
 write.php ---向message.txt写入数据  
表单显示页面

看了刚刚的展示内容,我们知道文件存储时:

    1.段与段之间进行了分割

    2.内容与用户之前用一个特殊的符号进行了分割

下面我们来写处理用户write.php写入留言至文件的代码:

message.txt ---存入聊天内容  , index.php中用户填入的用户名信息和留言内容等到write.php中进行处理,处理完之后会自动跳转到index.php首页.



php文件上传 :

在我们日常使用中经常会遇到很多种这样的情况:

QQ空间里面上传图片呀

微信朋友圈上传图片

发邮件里面上传邮件资料附件

认证的时候要求上传照片或身份证



phpstudy中的php-ini中可以搜索到这些配置项

file_uploads : 默认on开启状态, 如果是off就是关闭文件上传

post_max_size: 默认限制为8M

upload_max_filesize : 默认限制为2M

memory_limit : 默认限制为128M

如需修改配置项,需要重启中间件



一、php文件上传的步骤

1、系统返回的错误码详解:


2、自定义判断是否超出文件大小范围

    在开发上传功能时。我们作为开发人员,除了php.ini中规定的上传的最大值外。

我们通常还会设定一个值,是业务规定的上传大小限制。

例如:

新浪微博或者QQ空间只准单张头像图片2M。而在上传图册的时候又可以超过2M来上传。

所以说,它的系统是支持更大文件上传的。

此处的判断文件大小,我们用于限制实际业务中我们想要规定的上传的文件大小。


3、判断后缀名和mime类型是否符合

    在网络世界里面也有坏人。他们会把图片插入病毒,在附件中上传病毒,他们会在网页中插入病毒或者黄色图片。


    我们需要对于上传的文件后缀和mime类型都要进行判断才可以。

    MIME(Multipurpose Internet MailExtensions)是多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

    在判断后缀和MIME类型的时候,我们会用到PHP的一个函数in_array(),该函数传入两个参数。

第一个参数是要判断的值;

第二个参数是范围数组。

    我们用这个函数来判断文件的后缀名和mime类型是否在允许的范围内。


4、生成文件名

    我们的文件上传成功了,不会让它保存原名。因为,有些人在原名中有敏感关键词会违反我国的相关法律和法规。我们可以采用date()、mt_rand()或者unique()生成随机的文件名。

5、判断是否是上传文件

    文件上传成功时,系统会将上传的临时文件上传到系统的临时目录中。产生一个临时文件。同时会产生临时文件名。我们需要做的事情是将临时文件移动到系统的指定目录中。

而移动前不能瞎移动,或者移动错了都是不科学的。移动前我们需要使用相关函数判断上传的文件是不是临时文件。

    is_uploaded_file()传入一个参数($_FILES中的缓存文件名),判断传入的名称是不是上传文件。


6、移动临时文件到指定位置

    临时文件是真实的临时文件,我们需要将其移动到我们的网站目录下面了。

让我们网站目录的数据,其他人可以访问到。

我们使用:move_uploaded_file()。

这个函数是将上传文件移动到指定位置,并命名。

传入两个参数:

第一个参数是指定移动的上传文件;

第二个参数是指定的文件夹和名称拼接的字符串。




二、php文件上传表单注意事项

1.index.html

注意事项:

    1.form表单中的参数method 必须为post。若为get是无法进行文件上传的

    2.enctype须为multipart/form-data


2.chuli.php




php.ini的路径位置


PHP错误处理 :

    在php.ini配置文件中。我们可以控制php的错误显示状态。php.ini中有一个专门的配置项:

    display_errors

    这个选项设置是否将错误信息输出到网页,或者对用户隐藏而不显示。开发愿意显示,安全愿意不显示.

    这个值的状态为on 或者 off,也可以设值为1 或者0。

    display_error的值设为0或者off则不在页面中显示错误,如果设为1或者on则显示错误信息。

    问题:如果没有修改服务器php.ini的状态权限怎么办?

可以使用ini_set。

0表示off状态,1表示on状态
在上面的几种类型中:    error最严重,必须要解决。不然程序无法继续向下执行    warning也很重要。通也必须要解决。如果明确的,故意的可以不用处理。    notice 你可以不用管。但是在有些公司,项目标准特别高。在高标准要求的项目中也必须要解决。因为,notice会影响到PHP的执行效率。通常发生在函数未定义等。    parse错误,是指语法错写错了,必须要解决,代表全部类型的所有错误。


    在php.ini中error_reporting参数。如若error_reporting参数设置为0。整个PHP引擎发错误均不会显示、输出、记录。在下一章将要讲到的日志记录中,也不会记录。

    如果我们想显示所有错误可以写上:

error_reporting = E_ALL

    想要显示所有错误但排除提示,可以将这个参数写为:

error_reporting = E_ALL & ~ E_NOTICE

    显示所有错误,但排除提示、兼容性和未来兼容性。可写为:

error_reporting =E_ALL & ~E_NOTICE& ~E_STRICT & ~E_DEPRECATED



php错误处理之错误记录日志 :

    在一些公司里面,有专门的日志收集系统。日志收集系统会在背后默默的帮你收集错误、警告、提示。也有些公司没有专门的日志收集系统,通过文件来服务器当中的运行日志。

其中:PHP的错误,警告这些是必须要收信的。那么问题来了——不让用户看到,设置好错误报告级别好,如何将错误收集到日志系统中呢?

    这里有需要使用到php.ini的相关配置项。这两个配置项为:

说明:

    1.在表格中的log_errors和log_errors_max_len非常好理解。

    2.而error_log 指定将错误存在什么路径上。配置项中的syslog可能有点不太好理解。syslog是指系统来记录。windows系统在电脑的日志收集器里面。linux默认在:   /etc/syslog.conf

[扩展] 了解知识点。若Linux系统启动或修改了日志收集。可能存储在第三方专用的日志收集服务器中。

    此外,PHP还为我们专门准备了一个自定义的错误日志函数:

bool error_log ( string $错误消息 [, int $错误消息类型 = 0 [, string $存储目标]] )

这个函数可以把错误信息发送到web服务器的错误日志,或者到一个文件里。


中间件日志位置


中间件的默认路径一定要记住 , 渗透面试中70%会问

linux  /etc/httpd/logs/access_log

windows /Apache/logs/access_log


你可能感兴趣的:(php:实现文本留言_文件上传_2020-07-02_day12)