跟随我在oracle学习php(58)

Posted rightgram

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跟随我在oracle学习php(58)相关的知识,希望对你有一定的参考价值。

登录标志

通常还具有存储当前登录用户管理员)信息的功能!

 

存储登录标志时,获取当前管理员信息,存储到session

Back/AdminController->checkAction();

 

 

需要back/AdminModel->check()方法,返回的为管理员信息合法情况下):

 

 

在back/PlatformController->_checkLogin()中验证管理员是否登录时,使用admin下标:

 

退出时,销毁的也是该标志:

Back/AdminController->logoutAction();

 

 

 

页面上可以获取管理员信息:

Back/top.html中,显示你好 管理员

 

 

shop34-19-商品添加

功能添加商品表单

Index.php?p=back&c=Goods&a=add

Controller-Action:

新建商品控制器类

Application/back/controller/GoodsController.class.php

 

addAction()

 

Model:

View-template

增加视图层模板:

Application/back/view/goods_add.html

需要相应js

 

留下部分选项卡,及表单元素:

 

 

补充

修改菜单menu.html模板,请求添加动作:

Back/view/menu.html

 

功能:处理商品添加数据

Index.php?p=back&c=Goods&a=insert

控制器-动作

Back/GoodsController->insertAction();

Checkbox在提交时:

如果选中:其值为value属性的

如果未选中:则表单不会提交其数据(_POST中没有该元素)

 

推荐

采用数组方式命名,并且值就是需要插入到表中的数据

 

处理

 

 

实现insertAction();

 

模型

为goods表建立操作模型:

Application/back/model/GoodsModel.class.php

 

格式化字符串:

Sprintf()可以完成字符串的格式化:

Sprintf(格式格式中需要的数据)

 

 

Tip:数据参与SQL的执行,一定要防止SQL注入,使用转义!

此时在模型层面,提供可以对数组内的所有数据,进行批量转义功能:

基础模型增加方法:

escapeStringAll();

 

 

需要时调用该方法:

Back/GoodsModel->insertGoods()

 

视图-模板

 

补充

商品列表

 

 

 

shop34-20-表前缀的处理

模型-前缀处理

真实表名 = 前缀(项目) + 逻辑表名(功能)

前缀:通过配置文件配置。

Config/application.config.php

 

逻辑表名模型类自身来确定。

模型类增加属性:_logic_table

 

 

拼凑真实表名:

基础模型中,增加初始化真实表名的操作:

 

表名使用反引号包裹!

 

实例化模型对象时,完成对真实表名的初始化工作:

基础模型的构造方法中:

 

 

使用真实表名:

在模型中,拼凑SQL语句时,使用$this->_table:

 

 

shop34-21-文件上传工具

文件上传

上传

浏览器端传输的到服务器端。

请求时:

数据浏览器端传输到服务器端。

 

可见

上传,发生在浏览器向服务器发出请求过程中。

 

文件对于浏览器来讲,就是表单中的一个特殊类型的数据而已。

 

浏览器表单中的数据:两种类型。

1, 字符串类型。字节流编码)

2, 文件类型。二进制编码)

(tip文件就是表单中数据一部分)。

 

提交表单时,浏览器自动将表单内的数据,传输到服务器端,文件型也会包含在内。

 

服务器角度:

在接受浏览器的请求时,处理好表单数据。

根据数据类型不同(2种),采用不同的处理方法:

1, 字符串类型,存储在$_POST变量中(内存中)

2, 文件型数据,存储到上传临时目录中。

 

 

表单提交时浏览器会默认的认为,表单内的数据都是字符串类型(即使使用file文件通过在form上,增加属性,告知浏览器表单内的数据类型不仅仅有字符串。

Form enctype=”multipart/form-data”

 

 

PHP服务器在接受到文件型的表单数据后:

文件,存储于上传临时目录。就是临时文件,有效期脚本周期内有效。

通过PHPphp.ini配置

 

默认为服务器操作系统临时目录。

 

 

需要,将临时上传文件持久化存储!(将其移动到指定位置)

函数

Move_uploaded_file(上传临时地址,目标地址);

完成

需要使用$_FILES数组,存储了上传的临时文件的信息,包括临时地址!

 

每个上传的临时文件,有5个信息,name:原始文件type:类型,tmp_name,临时地址,error:是否有错误及错误类型,size:大小。

 

 

典型的上传代码

通过对文件的属性信息的判断,决定文件是否可用!

 

类型:表示方式 2种:

后缀名文件系统中,标识文件的方案。

MIME(多用途internet邮件扩展):网络上传输资源时,使用的资源类型表示方法。

Text/html; image/png

 

 

后缀名截取:

$file = ‘x.y.z.png‘;

echo strrchr($file, ‘.‘);

// 找到字符串中某个子字符串的最后出现位置,从该位置截取到字符串末尾。

 

 

 

Array_merge()数组合并

array_unique()去掉数组中重复的元素

 

重命名文件:

使用原名。重名,特殊字符 不具备逻辑含义)

起名uniqID();

UniqID()可以生成一个唯一的字符串,并且允许设置前缀。

 

 

 

类型检测:

后缀MIME

以上两个值,都是由浏览器端请求提供的。

需要服务器PHP自身完成MIME的检测:

需要 PHP的扩展: fileinfo 完成对文件的信息的检测。

提供面向对象和函数两套语法:

使用面向对象语法吧:

开启该扩展:

 

Apache restart

 

 

 

 

分子目录存储上传文件

原则:业务逻辑。文件数量。按照时间

Mkdir(目录地址)创建目录

Is_dir(目录地址)检测目录

 

Date()获得日期时间

 

 

 

 

项目中使用

上传的工具

 

完成自动加载:

 

 

添加商品时使用:

Back/GoodsController->insertAction();

 

模型中,处理goods_image_ori:

Back/GoodsModel->insertGoods();

 

修改表单,使之可以上传文件,并设置file表单元素,名字。

Back/iew/goods_add.html

 

以上是关于跟随我在oracle学习php(58)的主要内容,如果未能解决你的问题,请参考以下文章

跟随我在oracle学习php(31)

跟随我在oracle学习php(35)

跟随我在oracle学习php(33)

跟随我在oracle学习php(56)

跟随我在oracle学习php(37)

跟随我在oracle学习php(39)