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


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,809评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,189评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,290评论 0 359
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,399评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,425评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,116评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,710评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,629评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,155评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,261评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,399评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,068评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,758评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,252评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,381评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,747评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,402评论 2 358